{-# LANGUAGE ConstraintKinds #-}
module IHP.FrameworkConfig.Types
( AppHostname (..)
, AppPort (..)
, BaseUrl (..)
, RequestLoggerMiddleware (..)
, SessionCookie (..)
, DatabaseUrl (..)
, ConfigBuilder
, ExceptionTracker (..)
, IdeBaseUrl (..)
, RLSAuthenticatedRole (..)
, AssetVersion (..)
, CustomMiddleware (..)
, DataSyncMaxSubscriptionsPerConnection (..)
, DataSyncMaxTransactionsPerConnection (..)
, Initializer (..)
, FrameworkConfig (..)
, ConfigProvider
) where
import Prelude
import Data.ByteString (ByteString)
import Data.Text (Text)
import Control.Exception (SomeException)
import GHC.Records (HasField(..))
import qualified Control.Monad.Trans.State.Strict as State
import qualified Data.TMap as TMap
import qualified Web.Cookie as Cookie
import qualified Network.Wai.Middleware.Cors as Cors
import qualified Network.Wai.Parse as WaiParse
import Network.Wai (Middleware, Request)
import IHP.Environment (Environment)
import IHP.View.Types (CSSFramework)
import IHP.Log.Types (Logger)
import IHP.ModelSupport.Types (ModelContext)
newtype AppHostname = AppHostname Text
newtype AppPort = AppPort Int
newtype BaseUrl = BaseUrl Text
newtype RequestLoggerMiddleware = RequestLoggerMiddleware Middleware
newtype SessionCookie = SessionCookie Cookie.SetCookie
newtype DatabaseUrl = DatabaseUrl ByteString
type ConfigBuilder = State.StateT TMap.TMap IO ()
newtype ExceptionTracker = ExceptionTracker { ExceptionTracker -> Maybe Request -> SomeException -> IO ()
onException :: Maybe Request -> SomeException -> IO () }
newtype IdeBaseUrl = IdeBaseUrl Text
newtype RLSAuthenticatedRole = RLSAuthenticatedRole Text
newtype AssetVersion = AssetVersion Text
newtype CustomMiddleware = CustomMiddleware Middleware
newtype DataSyncMaxSubscriptionsPerConnection = DataSyncMaxSubscriptionsPerConnection Int
newtype DataSyncMaxTransactionsPerConnection = DataSyncMaxTransactionsPerConnection Int
newtype Initializer = Initializer { Initializer
-> (?context::FrameworkConfig, ?modelContext::ModelContext) =>
IO ()
onStartup :: (?context :: FrameworkConfig, ?modelContext :: ModelContext) => IO () }
data FrameworkConfig = FrameworkConfig
{ FrameworkConfig -> Text
appHostname :: !Text
, FrameworkConfig -> Environment
environment :: !Environment
, FrameworkConfig -> Int
appPort :: !Int
, FrameworkConfig -> Text
baseUrl :: !Text
, FrameworkConfig -> Middleware
requestLoggerMiddleware :: !Middleware
, FrameworkConfig -> SetCookie
sessionCookie :: !Cookie.SetCookie
, FrameworkConfig -> ByteString
databaseUrl :: !ByteString
, FrameworkConfig -> CSSFramework
cssFramework :: !CSSFramework
, FrameworkConfig -> Logger
logger :: !Logger
, FrameworkConfig -> ExceptionTracker
exceptionTracker :: !ExceptionTracker
, FrameworkConfig -> TMap
appConfig :: !TMap.TMap
, FrameworkConfig -> Maybe CorsResourcePolicy
corsResourcePolicy :: !(Maybe Cors.CorsResourcePolicy)
, FrameworkConfig -> ParseRequestBodyOptions
parseRequestBodyOptions :: !WaiParse.ParseRequestBodyOptions
, FrameworkConfig -> Text
ideBaseUrl :: Text
, FrameworkConfig -> Text
rlsAuthenticatedRole :: !Text
, FrameworkConfig -> CustomMiddleware
customMiddleware :: !CustomMiddleware
, FrameworkConfig -> [Initializer]
initializers :: ![Initializer]
}
instance HasField "frameworkConfig" FrameworkConfig FrameworkConfig where
getField :: FrameworkConfig -> FrameworkConfig
getField FrameworkConfig
frameworkConfig = FrameworkConfig
frameworkConfig
type ConfigProvider context = HasField "frameworkConfig" context FrameworkConfig