module Yesod.Session.SessionType
  ( Session (..)
  )
where

import Internal.Prelude

import Session.Key
import Session.Timing.Time
import Time
import Yesod.Core (SessionMap)

-- | What a saved session looks like in the database
data Session = Session
  { Session -> SessionKey
key :: SessionKey
  -- ^ Session key (primary key)
  , Session -> SessionMap
map :: SessionMap
  -- ^ Arbitrary session data
  , Session -> Time UTCTime
time :: Time UTCTime
  -- ^ Creation and access times, used to determine expiration
  }
  deriving stock (Session -> Session -> Bool
(Session -> Session -> Bool)
-> (Session -> Session -> Bool) -> Eq Session
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Session -> Session -> Bool
== :: Session -> Session -> Bool
$c/= :: Session -> Session -> Bool
/= :: Session -> Session -> Bool
Eq, Int -> Session -> ShowS
[Session] -> ShowS
Session -> String
(Int -> Session -> ShowS)
-> (Session -> String) -> ([Session] -> ShowS) -> Show Session
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Session -> ShowS
showsPrec :: Int -> Session -> ShowS
$cshow :: Session -> String
show :: Session -> String
$cshowList :: [Session] -> ShowS
showList :: [Session] -> ShowS
Show)