module IHP.AutoRefresh.Types where
import IHP.Prelude
import Wai.Request.Params.Middleware (Respond)
import Control.Concurrent.MVar (MVar)
import qualified IHP.PGListener as PGListener
import Network.Wai (Request)
data AutoRefreshState = AutoRefreshEnabled { AutoRefreshState -> UUID
sessionId :: !UUID }
data AutoRefreshSession = AutoRefreshSession
{ AutoRefreshSession -> UUID
id :: !UUID
, AutoRefreshSession -> Request -> Respond -> IO ()
renderView :: !(Request -> Respond -> IO ())
, AutoRefreshSession -> MVar ()
event :: !(MVar ())
, AutoRefreshSession -> Set Text
tables :: !(Set Text)
, AutoRefreshSession -> LByteString
lastResponse :: !LByteString
, AutoRefreshSession -> UTCTime
lastPing :: !UTCTime
}
data AutoRefreshServer = AutoRefreshServer
{ AutoRefreshServer -> [Subscription]
subscriptions :: [PGListener.Subscription]
, AutoRefreshServer -> [AutoRefreshSession]
sessions :: ![AutoRefreshSession]
, AutoRefreshServer -> Set Text
subscribedTables :: !(Set Text)
, AutoRefreshServer -> PGListener
pgListener :: PGListener.PGListener
}
newAutoRefreshServer :: PGListener.PGListener -> AutoRefreshServer
newAutoRefreshServer :: PGListener -> AutoRefreshServer
newAutoRefreshServer PGListener
pgListener = AutoRefreshServer { subscriptions :: [Subscription]
subscriptions = [], sessions :: [AutoRefreshSession]
sessions = [], subscribedTables :: Set Text
subscribedTables = Set Text
forall a. Monoid a => a
mempty, PGListener
pgListener :: PGListener
pgListener :: PGListener
pgListener }