tsweb-0.1.0.0: src/TsWeb/Tables/Session/Test.hs
{-|
Description: Test module to be sure the generic 'Session' is sane
-}
module TsWeb.Tables.Session.Test where
import TsWeb.Session
import TsWeb.Tables.Session
import Data.Pool (Pool)
import Database.Beam
import TsWeb.Types.Db (ReadOnlyConn, ReadWriteConn)
import Web.Spock.Config
import Web.Spock.Internal.SessionManager as SM (Session(..))
-- | Some sample user info
data UsersMixin f = Address
{ loginid :: C f Int
, masqid :: C f Int
, remember :: C f Bool
} deriving (Generic)
-- | Concrete type for users
type Users = UsersMixin Identity
instance Beamable UsersMixin
instance UserData Users where
rememberMe = remember
-- | Spock session alias to use our User
type Sess conn st = SM.Session conn Users st
-- | Beam database definition to hold our session
data Db f = Db
{ session :: f (TableEntity (SessionT UsersMixin))
} deriving (Generic)
instance Database be Db
-- | Beam database instance
db :: DatabaseSettings be Db
db = defaultDbSettings
-- | Sample of patch to be sure that all the types work enough to make a spock
-- config wrapper
patch ::
Pool ReadOnlyConn
-> Pool ReadWriteConn
-> SpockCfg conn Users st
-> SpockCfg conn Users st
patch = patchConfig (session db)