Safe Haskell | None |
---|---|
Language | Haskell98 |
Storage backend for serversession
using persistent.
In order to use this backend, you have to include
serverSessionDefs
on your migration code. For example,
the Yesod scaffold usually includes the following code:
-- On Model.hs share [mkPersist sqlSettings, mkMigrate "migrateAll"] -- On Application.hs makeFoundation = ... runLoggingT (runSqlPool (runMigration migrateAll) pool) logFunc ...
You should changed those lines to:
-- On Model.hs share [mkPersist sqlSettings, mkSave "entityDefs"] -- On Application.hs import qualified Data.Proxy as P -- tagged package, or base from GHC 7.10 onwards import qualified Web.ServerSession.Core as SS import qualified Web.ServerSession.Backend.Persistent as SS mkMigrate "migrateAll" (SS.serverSessionDefs (P.Proxy :: P.Proxy SS.SessionMap) ++ entityDefs) makeFoundation = ... runLoggingT (runSqlPool (runMigration migrateAll) pool) logFunc ...
If you're not using SessionMap
, just change Proxy
type above.
If you forget to setup the migration above, this session storage backend will fail at runtime as the required table will not exist.
- newtype SqlStorage sess = SqlStorage {}
- serverSessionDefs :: forall sess. PersistEntity (PersistentSession sess) => Proxy sess -> [EntityDef]
Documentation
newtype SqlStorage sess Source
SQL session storage backend using persistent
.
SqlStorage | |
|
(IsSessionData sess, PersistFieldSql (Decomposed sess)) => Storage (SqlStorage sess) | |
Typeable (* -> *) SqlStorage | |
type TransactionM (SqlStorage sess) = SqlPersistT IO | |
type SessionData (SqlStorage sess) = sess |
serverSessionDefs :: forall sess. PersistEntity (PersistentSession sess) => Proxy sess -> [EntityDef] Source
Entity definitions needed to generate the SQL schema for
SqlStorage
. Example using SessionMap
:
serverSessionDefs (Proxy :: Proxy SessionMap)