module IHP.ApplicationContext where

import IHP.Prelude
import Network.Wai.Session (Session)
import qualified Data.Vault.Lazy as Vault
import IHP.AutoRefresh.Types (AutoRefreshServer)
import IHP.FrameworkConfig (FrameworkConfig)
import IHP.PGListener (PGListener)

data ApplicationContext = ApplicationContext
    { ApplicationContext -> ModelContext
modelContext :: !ModelContext
    , ApplicationContext -> Key (Session IO ByteString ByteString)
session :: !(Vault.Key (Session IO ByteString ByteString))
    , ApplicationContext -> IORef AutoRefreshServer
autoRefreshServer :: !(IORef AutoRefreshServer)
    , ApplicationContext -> FrameworkConfig
frameworkConfig :: !FrameworkConfig
    , ApplicationContext -> PGListener
pgListener :: PGListener
    }