packages feed

freckle-app-1.0.2.3: library/Freckle/App/Ghci.hs

module Freckle.App.Ghci
  ( runDB
  , runDB'
  , loadEnv
  , loadEnvTest
  ) where

import Freckle.App.Prelude

import Database.Persist.Postgresql (runSqlPool)
import Database.Persist.Sql (SqlBackend)
import Freckle.App.Database (makePostgresPool)
import LoadEnv (loadEnv, loadEnvFrom)

-- | Run a db action against .env
runDB :: ReaderT SqlBackend IO b -> IO b
runDB f = loadEnv *> runDB' f

-- | Run a db action
runDB' :: ReaderT SqlBackend IO b -> IO b
runDB' f = do
  pool <- makePostgresPool
  runSqlPool f pool

loadEnvTest :: IO ()
loadEnvTest = loadEnvFrom ".env.test"