1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE OverloadedStrings, DataKinds, FlexibleInstances #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module MigrationReferenceSpec where
import PgInit
import Control.Monad.Trans.Writer (censor, mapWriterT)
import Data.Text (Text, isInfixOf)
share [mkPersist sqlSettings, mkMigrate "referenceMigrate"] [persistLowerCase|
LocationCapabilities
Id Text
bio Text
LocationCapabilitiesPrintingProcess
locationCapabilitiesId LocationCapabilitiesId
LocationCapabilitiesPrintingFinish
locationCapabilitiesId LocationCapabilitiesId
LocationCapabilitiesSubstrate
locationCapabilitiesId LocationCapabilitiesId
|]
spec :: Spec
spec = describe "MigrationReferenceSpec" $ do
it "works" $ runConnAssert $ do
let
noForeignKeys :: CautiousMigration -> CautiousMigration
noForeignKeys = filter ((not . isReference) . snd)
onlyForeignKeys :: CautiousMigration -> CautiousMigration
onlyForeignKeys = filter (isReference . snd)
isReference :: Text -> Bool
isReference migration = "REFERENCES" `isInfixOf` migration
runMigration
$ mapWriterT (censor noForeignKeys)
$ referenceMigrate
runMigration
$ mapWriterT (censor onlyForeignKeys)
$ referenceMigrate
|