serversession-backend-acid-state-1.0.5: Storage backend for serversession using acid-state.
Safe HaskellNone
LanguageHaskell2010

Web.ServerSession.Backend.Acid.Internal

Description

Internal module exposing the guts of the package. Use at your own risk. No API stability guarantees apply.

Synopsis

Documentation

type SessionIdToSession sess = HashMap (SessionId sess) (Session sess) Source #

Map from session IDs to sessions. The most important map, allowing us efficient access to a session given its ID.

type AuthIdToSessionId sess = HashMap AuthId (Set (SessionId sess)) Source #

Map from auth IDs to session IDs. Allow us to invalidate all sessions of given user without having to iterate through the whole SessionIdToSession map.

data ServerSessionAcidState sess Source #

The current sessions.

Besides the obvious map from session IDs to sessions, we also maintain a map of auth IDs to session IDs. This allow us to quickly invalidate all sessions of a given user.

Instances

Instances details
(Typeable sess, SafeCopy (Decomposed sess)) => SafeCopy (ServerSessionAcidState sess) Source #

We can't deriveSafeCopy 0 'base ''ServerSessionAcidState due to the required context.

Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => IsAcidic (ServerSessionAcidState sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

removeSessionFromAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess Source #

Remove the given SessionId from the set of the given AuthId on the map. Does not do anything if no AuthId is provided.

insertSessionForAuthId :: SessionId sess -> Maybe AuthId -> AuthIdToSessionId sess -> AuthIdToSessionId sess Source #

Insert the given session ID as being part of the given auth ID. Conceptually the opposite of removeSessionFromAuthId. Does not do anything if no AuthId is provided.

getSession :: Storage (AcidStorage sess) => SessionId sess -> Query (ServerSessionAcidState sess) (Maybe (Session sess)) Source #

Get the session for the given session ID.

deleteSession :: Storage (AcidStorage sess) => SessionId sess -> Update (ServerSessionAcidState sess) () Source #

Delete the session with given session ID.

deleteAllSessionsOfAuthId :: Storage (AcidStorage sess) => AuthId -> Update (ServerSessionAcidState sess) () Source #

Delete all sessions of the given auth ID.

insertSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) () Source #

Insert a new session.

replaceSession :: Storage (AcidStorage sess) => Session sess -> Update (ServerSessionAcidState sess) () Source #

Replace the contents of a session.

data GetSession sess Source #

Instances

Instances details
Typeable sess => SafeCopy (GetSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => QueryEvent (GetSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => Method (GetSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

Associated Types

type MethodResult (GetSession sess) #

type MethodState (GetSession sess) #

Methods

methodTag :: GetSession sess -> Tag #

type MethodState (GetSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (GetSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (GetSession sess) = Maybe (Session sess)

data DeleteSession sess Source #

Instances

Instances details
Typeable sess => SafeCopy (DeleteSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => UpdateEvent (DeleteSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => Method (DeleteSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

Associated Types

type MethodResult (DeleteSession sess) #

type MethodState (DeleteSession sess) #

Methods

methodTag :: DeleteSession sess -> Tag #

type MethodState (DeleteSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (DeleteSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (DeleteSession sess) = ()

data InsertSession sess Source #

Instances

Instances details
(Typeable sess, SafeCopy (Decomposed sess)) => SafeCopy (InsertSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => UpdateEvent (InsertSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => Method (InsertSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

Associated Types

type MethodResult (InsertSession sess) #

type MethodState (InsertSession sess) #

Methods

methodTag :: InsertSession sess -> Tag #

type MethodState (InsertSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (InsertSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (InsertSession sess) = ()

data ReplaceSession sess Source #

Instances

Instances details
(Typeable sess, SafeCopy (Decomposed sess)) => SafeCopy (ReplaceSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => UpdateEvent (ReplaceSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

AcidContext sess => Method (ReplaceSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

Associated Types

type MethodResult (ReplaceSession sess) #

type MethodState (ReplaceSession sess) #

Methods

methodTag :: ReplaceSession sess -> Tag #

type MethodState (ReplaceSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (ReplaceSession sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type MethodResult (ReplaceSession sess) = ()

newtype AcidStorage sess Source #

Session storage backend using acid-state.

Constructors

AcidStorage 

Fields

Instances

Instances details
(IsSessionData sess, SafeCopy sess, SafeCopy (Decomposed sess)) => Storage (AcidStorage sess) Source #

We do not provide any ACID guarantees for different actions running inside the same TransactionM AcidStorage.

Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

Associated Types

type SessionData (AcidStorage sess) #

type TransactionM (AcidStorage sess) :: Type -> Type #

type TransactionM (AcidStorage sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type SessionData (AcidStorage sess) Source # 
Instance details

Defined in Web.ServerSession.Backend.Acid.Internal

type SessionData (AcidStorage sess) = sess

Orphan instances

SafeCopy SessionMap Source #

We can't deriveSafeCopy 0 'base ''SS.SessionMap because safeCopy doesn't contain instances for HashMap as of now.

Instance details

Typeable sess => SafeCopy (SessionId sess) Source #

We can't deriveSafeCopy 0 'base ''SS.SessionId as otherwise we'd require an unneeded SafeCopy sess.

Instance details

(Typeable sess, SafeCopy (Decomposed sess)) => SafeCopy (Session sess) Source #

We can't deriveSafeCopy 0 'base ''SS.Session due to the required context.

Instance details