11{-# LANGUAGE OverloadedStrings #-}
22{-# LANGUAGE TemplateHaskell #-}
33{-# OPTIONS_GHC -fno-warn-orphans #-}
4+
45-- We create an orphan instance for GenerateKey here to avoid a circular
56-- dependency between:
67--
1011--
1112-- This kind of cycle is all kinds of bad news.
1213
13- module MongoInit (
14- BackendMonad
15- , runConn
16- , MonadIO
17- , persistSettings
18- , MkPersistSettings (.. )
19- , dbName
20- , db'
21- , setup
22- , mkPersistSettings
23- , Action
24- , Context
25- , BackendKey (MongoKey )
26-
27- -- re-exports
28- , module Database.Persist
29- , module Database.Persist.Sql.Raw.QQ
30- , module Test.Hspec
31- , module Test.HUnit
32- , liftIO
33- , mkPersist , mkMigrate , share , sqlSettings , persistLowerCase , persistUpperCase
34- , Int32 , Int64
35- , Text
36- , module Control.Monad.Trans.Reader
37- , module Control.Monad
38- , PersistFieldSql (.. )
39- , BS. ByteString
40- , SomeException
41- , module Init
42- ) where
14+ module MongoInit
15+ ( BackendMonad
16+ , runConn
17+ , MonadIO
18+ , persistSettings
19+ , MkPersistSettings (.. )
20+ , dbName
21+ , db'
22+ , setup
23+ , mkPersistSettings
24+ , Action
25+ , Context
26+ , BackendKey (MongoKey )
27+ -- re-exports
28+ , module Database.Persist
29+ , module Database.Persist.Sql.Raw.QQ
30+ , module Test.Hspec
31+ , module Test.HUnit
32+ , liftIO
33+ , mkPersist
34+ , mkMigrate
35+ , share
36+ , sqlSettings
37+ , persistLowerCase
38+ , persistUpperCase
39+ , Int32
40+ , Int64
41+ , Text
42+ , module Control.Monad.Trans.Reader
43+ , module Control.Monad
44+ , PersistFieldSql (.. )
45+ , BS. ByteString
46+ , SomeException
47+ , module Init
48+ ) where
4349
4450-- we have to be careful with this import becuase CPP is still a problem
4551import Init
46- ( TestFn (.. ), truncateTimeOfDay , truncateUTCTime
47- , truncateToMicro , arbText , liftA2 , GenerateKey (.. )
48- , (@/=) , (@==) , (==@)
49- , assertNotEqual , assertNotEmpty , assertEmpty , asIO
52+ ( GenerateKey (.. )
53+ , TestFn (.. )
54+ , arbText
55+ , asIO
56+ , assertEmpty
57+ , assertNotEmpty
58+ , assertNotEqual
5059 , isTravis
60+ , liftA2
61+ , truncateTimeOfDay
62+ , truncateToMicro
63+ , truncateUTCTime
64+ , (==@)
65+ , (@/=)
66+ , (@==)
5167 )
5268
5369-- re-exports
5470import Control.Exception (SomeException )
55- import Control.Monad (void , replicateM , liftM , when , forM_ )
71+ import Control.Monad (forM_ , liftM , replicateM , void , when )
5672import Control.Monad.Trans.Reader
57- import Database.Persist.TH (mkPersist , mkMigrate , share , sqlSettings , persistLowerCase , persistUpperCase , MkPersistSettings (.. ))
5873import Database.Persist.Sql.Raw.QQ
74+ import Database.Persist.TH
75+ ( MkPersistSettings (.. )
76+ , mkMigrate
77+ , mkPersist
78+ , persistLowerCase
79+ , persistUpperCase
80+ , share
81+ , sqlSettings
82+ )
5983import Test.Hspec
6084
6185-- testing
62- import Test.HUnit ((@?=) , (@=?) , Assertion , assertFailure , assertBool )
86+ import Test.HUnit (Assertion , assertBool , assertFailure , (@=?) , (@?=) )
6387
6488import Control.Monad (unless , (>=>) )
6589import Control.Monad.IO.Class
@@ -68,11 +92,18 @@ import qualified Data.ByteString as BS
6892import Data.Int (Int32 , Int64 )
6993import Data.Text (Text )
7094import qualified Database.MongoDB as MongoDB
71- import Database.Persist.MongoDB (Action , withMongoPool , runMongoDBPool , defaultMongoConf , applyDockerEnv , BackendKey (.. ))
72- import Language.Haskell.TH.Syntax (Type (.. ))
95+ import Database.Persist.MongoDB
96+ ( Action
97+ , BackendKey (.. )
98+ , applyDockerEnv
99+ , defaultMongoConf
100+ , runMongoDBPool
101+ , withMongoPool
102+ )
103+ import Language.Haskell.TH.Syntax (Type (.. ))
73104
74105import Database.Persist
75- import Database.Persist.Sql (PersistFieldSql (.. ))
106+ import Database.Persist.Sql (PersistFieldSql (.. ))
76107import Database.Persist.TH (mkPersistSettings )
77108
78109setup :: Action IO ()
@@ -83,25 +114,25 @@ _debugOn :: Bool
83114_debugOn = True
84115
85116persistSettings :: MkPersistSettings
86- persistSettings = (mkPersistSettings $ ConT ''Context) { mpsGeneric = True }
117+ persistSettings = (mkPersistSettings $ ConT ''Context){ mpsGeneric = True }
87118
88119dbName :: Text
89120dbName = " persistent"
90121
91122type BackendMonad = Context
92123
93- runConn :: MonadUnliftIO m => Action m backend -> m ()
124+ runConn :: ( MonadUnliftIO m ) => Action m backend -> m ()
94125runConn f = do
95- conf <- liftIO $ applyDockerEnv $ defaultMongoConf dbName -- { mgRsPrimary = Just "replicaset" }
96- void $ withMongoPool conf $ runMongoDBPool MongoDB. master f
126+ conf <- liftIO $ applyDockerEnv $ defaultMongoConf dbName -- { mgRsPrimary = Just "replicaset" }
127+ void $ withMongoPool conf $ runMongoDBPool MongoDB. master f
97128
98129setupMongo :: Action IO ()
99130setupMongo = void $ MongoDB. dropDatabase dbName
100131
101132db' :: Action IO () -> Action IO () -> Assertion
102133db' actions cleanDB = do
103- r <- runConn (actions >> cleanDB)
104- return r
134+ r <- runConn (actions >> cleanDB)
135+ return r
105136
106137instance GenerateKey MongoDB. MongoContext where
107138 generateKey = MongoKey `liftM` MongoDB. genObjectId
0 commit comments