Safe Haskell | None |
---|---|
Language | Haskell2010 |
Web.ServerSession.Backend.Persistent
Description
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 Web.ServerSession.Backend.Persistent mkMigrate "migrateAll" (entityDefs `embedEntityDefs` serverSessionDefsBySessionMap) makeFoundation = ... runLoggingT (runSqlPool (runMigration migrateAll) pool) logFunc ...
If you're not using SessionMap
, just use mkServerSessionDefs
and 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.
Synopsis
- newtype SqlStorage sess = SqlStorage {}
- data PersistentSession sess = PersistentSession {}
- type PersistentSessionId sess = Key (PersistentSession sess)
- serverSessionDefsBySessionMap :: [UnboundEntityDef]
- type PersistentSessionBySessionMap = PersistentSession SessionMap
- mkServerSessionDefs :: PersistEntity sess => Proxy sess -> Text -> [UnboundEntityDef]
Documentation
newtype SqlStorage sess Source #
SQL session storage backend using persistent
.
Constructors
SqlStorage | |
Fields
|
Instances
data PersistentSession sess Source #
Entity corresponding to a Session
.
We're bending persistent
in ways it wasn't expected to. In
particular, this entity is parametrized over the session type.
Constructors
PersistentSession | |
Fields
|
Instances
(FromJSON (Decomposed sess), PersistFieldSql (Decomposed sess)) => FromJSON (Entity (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods parseJSON :: Value -> Parser (Entity (PersistentSession sess)) # parseJSONList :: Value -> Parser [Entity (PersistentSession sess)] # omittedField :: Maybe (Entity (PersistentSession sess)) # | |||||||||||||||||
FromJSON (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods parseJSON :: Value -> Parser (Key (PersistentSession sess)) # parseJSONList :: Value -> Parser [Key (PersistentSession sess)] # omittedField :: Maybe (Key (PersistentSession sess)) # | |||||||||||||||||
FromJSON (Decomposed sess) => FromJSON (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods parseJSON :: Value -> Parser (PersistentSession sess) # parseJSONList :: Value -> Parser [PersistentSession sess] # omittedField :: Maybe (PersistentSession sess) # | |||||||||||||||||
(ToJSON (Decomposed sess), PersistFieldSql (Decomposed sess)) => ToJSON (Entity (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods toJSON :: Entity (PersistentSession sess) -> Value # toEncoding :: Entity (PersistentSession sess) -> Encoding # toJSONList :: [Entity (PersistentSession sess)] -> Value # toEncodingList :: [Entity (PersistentSession sess)] -> Encoding # omitField :: Entity (PersistentSession sess) -> Bool # | |||||||||||||||||
ToJSON (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods toJSON :: Key (PersistentSession sess) -> Value # toEncoding :: Key (PersistentSession sess) -> Encoding # toJSONList :: [Key (PersistentSession sess)] -> Value # toEncodingList :: [Key (PersistentSession sess)] -> Encoding # omitField :: Key (PersistentSession sess) -> Bool # | |||||||||||||||||
ToJSON (Decomposed sess) => ToJSON (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods toJSON :: PersistentSession sess -> Value # toEncoding :: PersistentSession sess -> Encoding # toJSONList :: [PersistentSession sess] -> Value # toEncodingList :: [PersistentSession sess] -> Encoding # omitField :: PersistentSession sess -> Bool # | |||||||||||||||||
Read (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods readsPrec :: Int -> ReadS (Key (PersistentSession sess)) # readList :: ReadS [Key (PersistentSession sess)] # readPrec :: ReadPrec (Key (PersistentSession sess)) # readListPrec :: ReadPrec [Key (PersistentSession sess)] # | |||||||||||||||||
Show (Key (PersistentSession sess)) Source # | |||||||||||||||||
Show (Decomposed sess) => Show (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods showsPrec :: Int -> PersistentSession sess -> ShowS # show :: PersistentSession sess -> String # showList :: [PersistentSession sess] -> ShowS # | |||||||||||||||||
Eq (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods (==) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # (/=) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # | |||||||||||||||||
Eq (Decomposed sess) => Eq (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods (==) :: PersistentSession sess -> PersistentSession sess -> Bool # (/=) :: PersistentSession sess -> PersistentSession sess -> Bool # | |||||||||||||||||
Ord (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods compare :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Ordering # (<) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # (<=) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # (>) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # (>=) :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Bool # max :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Key (PersistentSession sess) # min :: Key (PersistentSession sess) -> Key (PersistentSession sess) -> Key (PersistentSession sess) # | |||||||||||||||||
Ord (Decomposed sess) => Ord (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods compare :: PersistentSession sess -> PersistentSession sess -> Ordering # (<) :: PersistentSession sess -> PersistentSession sess -> Bool # (<=) :: PersistentSession sess -> PersistentSession sess -> Bool # (>) :: PersistentSession sess -> PersistentSession sess -> Bool # (>=) :: PersistentSession sess -> PersistentSession sess -> Bool # max :: PersistentSession sess -> PersistentSession sess -> PersistentSession sess # min :: PersistentSession sess -> PersistentSession sess -> PersistentSession sess # | |||||||||||||||||
PathPiece (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods fromPathPiece :: Text -> Maybe (Key (PersistentSession sess)) # toPathPiece :: Key (PersistentSession sess) -> Text # | |||||||||||||||||
PersistFieldSql (Decomposed sess) => PersistEntity (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Associated Types
Methods keyToValues :: Key (PersistentSession sess) -> [PersistValue] # keyFromValues :: [PersistValue] -> Either Text (Key (PersistentSession sess)) # persistIdField :: EntityField (PersistentSession sess) (Key (PersistentSession sess)) # entityDef :: proxy (PersistentSession sess) -> EntityDef # persistFieldDef :: EntityField (PersistentSession sess) typ -> FieldDef # toPersistFields :: PersistentSession sess -> [PersistValue] # fromPersistValues :: [PersistValue] -> Either Text (PersistentSession sess) # tabulateEntityA :: Applicative f => (forall a. EntityField (PersistentSession sess) a -> f a) -> f (Entity (PersistentSession sess)) # persistUniqueKeys :: PersistentSession sess -> [Unique (PersistentSession sess)] # persistUniqueToFieldNames :: Unique (PersistentSession sess) -> NonEmpty (FieldNameHS, FieldNameDB) # persistUniqueToValues :: Unique (PersistentSession sess) -> [PersistValue] # fieldLens :: EntityField (PersistentSession sess) field -> forall (f :: Type -> Type). Functor f => (field -> f field) -> Entity (PersistentSession sess) -> f (Entity (PersistentSession sess)) # keyFromRecordM :: Maybe (PersistentSession sess -> Key (PersistentSession sess)) # | |||||||||||||||||
SafeToInsert (PersistentSession sess) Source # | |||||||||||||||||
PersistField (Key (PersistentSession sess)) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl Methods toPersistValue :: Key (PersistentSession sess) -> PersistValue # fromPersistValue :: PersistValue -> Either Text (Key (PersistentSession sess)) # | |||||||||||||||||
PersistFieldSql (Key (PersistentSession sess)) Source # | |||||||||||||||||
data EntityField (PersistentSession sess) typ Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl data EntityField (PersistentSession sess) typ
| |||||||||||||||||
newtype Key (PersistentSession sess) Source # | |||||||||||||||||
Defined in Web.ServerSession.Backend.Persistent.Internal.Impl newtype Key (PersistentSession sess) = PersistentSessionKey' {
| |||||||||||||||||
type PersistEntityBackend (PersistentSession sess) Source # | |||||||||||||||||
data Unique (PersistentSession sess) Source # | |||||||||||||||||
type PersistentSessionId sess = Key (PersistentSession sess) Source #
serverSessionDefsBySessionMap :: [UnboundEntityDef] Source #
Simple version.
Entity definitions needed to generate the SQL schema for SqlStorage
.
Example:
mkMigrate "migrateAll" serverSessionDefsBySessionMap
Note: Also import PersistentSessionBySessionMap
in the same module.
mkServerSessionDefs :: PersistEntity sess => Proxy sess -> Text -> [UnboundEntityDef] Source #
Entity definitions needed to generate the SQL schema for SqlStorage
.
Generate schema by specifying Haskell name in Text.
Example using SessionMap
:
type PersistentSessionBySessionMap = PersistentSession SessionMap mkMigrate "migrateAll" (mkServerSessionDefs (Proxy :: Proxy PersistentSessionBySessionMap) "PersistentSessionBySessionMap")