{-# LANGUAGE OverloadedStrings #-} module Database (runDb, runMigrations) where import Control.Monad.Logger (runStderrLoggingT, LoggingT) import Database.Persist.Sqlite (createSqlitePool, SqlBackend, runSqlPool, runMigration) import Control.Monad.Reader (ReaderT) import Data.User (migrateAll) -- | Run a database query in the IO monad. runDb :: ReaderT SqlBackend (LoggingT IO) a -> IO a runDb query = runStderrLoggingT $ do pool <- createSqlitePool "jamaa.db" 10 runSqlPool query pool -- | Run database migrations. runMigrations :: IO () runMigrations = runDb $ runMigration migrateAll