Spock 0.4.1.0 → 0.4.2.0
raw patch · 4 files changed
+24/−8 lines, 4 filesdep +pool-conduit
Dependencies added: pool-conduit
Files
- Spock.cabal +3/−2
- Web/Spock.hs +6/−4
- Web/Spock/Monad.hs +8/−1
- Web/Spock/Types.hs +7/−1
Spock.cabal view
@@ -1,5 +1,5 @@ name: Spock-version: 0.4.1.0+version: 0.4.2.0 synopsis: Another Haskell web toolkit based on scotty description: This toolbox provides everything you need to get a quick start into web hacking with haskell: sessions, database helper, authentication and the power of scotty Homepage: https://github.com/agrafix/Spock@@ -38,7 +38,8 @@ xsd ==0.4.*, aeson >=0.6, resource-pool ==0.2.*,- random ==1.*+ random ==1.*,+ pool-conduit ==0.1.* ghc-options: -fwarn-unused-imports source-repository head
Web/Spock.hs view
@@ -51,13 +51,15 @@ do sessionMgr <- openSessionManager sessionCfg connectionPool <- case poolOrConn of+ PCConduitPool p ->+ return (ConduitPool p) PCPool p ->- return p+ return (DataPool p) PCConn cb -> let pc = cb_poolConfiguration cb- in createPool (cb_createConn cb) (cb_destroyConn cb)- (pc_stripes pc) (pc_keepOpenTime pc)- (pc_resPerStripe pc)+ in DataPool <$> createPool (cb_createConn cb) (cb_destroyConn cb)+ (pc_stripes pc) (pc_keepOpenTime pc)+ (pc_resPerStripe pc) let internalState = WebState { web_dbConn = connectionPool
Web/Spock/Monad.hs view
@@ -10,6 +10,7 @@ import Data.Pool import Data.Time.Clock ( UTCTime(..) ) import Web.Scotty.Trans+import qualified Data.Conduit.Pool as CP import qualified Data.ByteString.Lazy as BSL import qualified Data.Text.Encoding as T import qualified Data.Text.Lazy as TL@@ -25,7 +26,13 @@ runQuery query = webM $ do pool <- asks web_dbConn- liftIO $ withResource pool query+ let fun =+ case pool of+ DataPool p ->+ withResource p+ ConduitPool p ->+ CP.withResource p+ liftIO (fun query) -- | Read the application's state. If you wish to have mutable state, you could -- use a 'TVar' from the STM packge.
Web/Spock/Types.hs view
@@ -12,6 +12,7 @@ import Control.Monad.Trans.Resource import Data.Pool import Data.Time.Clock ( UTCTime(..), NominalDiffTime(..) )+import qualified Data.Conduit.Pool as CP import qualified Data.HashMap.Strict as HM import qualified Data.Text as T import Data.Text.Lazy (Text)@@ -47,6 +48,7 @@ -- a connection pool. See 'ConnBuilder' data PoolOrConn a = PCPool (Pool a)+ | PCConduitPool (CP.Pool a) | PCConn (ConnBuilder a) -- | Configuration for the session manager@@ -67,9 +69,13 @@ | NoSession deriving (Show, Eq, Read, Enum) +data ConnectionPool conn+ = DataPool (Pool conn)+ | ConduitPool (CP.Pool conn)+ data WebState conn sess st = WebState- { web_dbConn :: Pool conn+ { web_dbConn :: ConnectionPool conn , web_sessionMgr :: SessionManager sess , web_state :: st }