module IHP.ScriptSupport (runScript, Script, module IHP.FrameworkConfig) where
import IHP.Prelude
import IHP.FrameworkConfig
import IHP.ModelSupport (withModelContext)
import Main.Utf8 (withUtf8)
type Script = (?modelContext :: ModelContext, ?context :: FrameworkConfig) => IO ()
runScript :: ConfigBuilder -> Script -> IO ()
runScript :: ConfigBuilder -> Script -> IO ()
runScript ConfigBuilder
configBuilder Script
taskMain = IO () -> IO ()
forall (m :: * -> *) r. (MonadIO m, MonadMask m) => m r -> m r
withUtf8 do
ConfigBuilder -> (FrameworkConfig -> IO ()) -> IO ()
forall result.
ConfigBuilder -> (FrameworkConfig -> IO result) -> IO result
withFrameworkConfig ConfigBuilder
configBuilder \FrameworkConfig
frameworkConfig -> do
ByteString -> Logger -> (ModelContext -> IO ()) -> IO ()
forall a. ByteString -> Logger -> (ModelContext -> IO a) -> IO a
withModelContext FrameworkConfig
frameworkConfig.databaseUrl FrameworkConfig
frameworkConfig.logger \ModelContext
modelContext -> do
let ?modelContext = ?modelContext::ModelContext
ModelContext
modelContext
let ?context = ?context::FrameworkConfig
FrameworkConfig
frameworkConfig
IO ()
Script
taskMain
{-# INLINABLE runScript #-}