module Mensam.Server where

import Mensam.Server.Application
import Mensam.Server.Application.Configured.Class
import Mensam.Server.Configuration
import Mensam.Server.Configuration.SQLite
import Mensam.Server.Database.Check
import Mensam.Server.Server

import Control.Monad

main :: IO ()
main :: IO ()
main = ApplicationT IO () -> IO ()
forall (m :: * -> *) a.
(MonadBaseControlIdentity IO m, MonadMask m, MonadUnliftIO m) =>
ApplicationT m a -> m a
runApplicationT (ApplicationT IO () -> IO ()) -> ApplicationT IO () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
  Configuration
config <- ApplicationT IO Configuration
forall (m :: * -> *). MonadConfigured m => m Configuration
configuration
  Bool -> ApplicationT IO () -> ApplicationT IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (SQLiteConfig -> Bool
sqliteCheckDataIntegrityOnStartup (Configuration -> SQLiteConfig
configSqlite Configuration
config)) ApplicationT IO ()
forall (m :: * -> *). (MonadLogger m, MonadSeldaPool m) => m ()
checkDatabase
  ApplicationT IO ()
forall (m :: * -> *).
(MonadConfigured m, MonadEmail m, MonadLoggerCustom m, MonadMask m,
 MonadSecret m, MonadSeldaPool m, MonadUnliftIO m) =>
m ()
server