packages feed

sqel-0.0.1.0: lib/Sqel/Class/MigrationEffect.hs

module Sqel.Class.MigrationEffect where

import qualified Hasql.Session as Session
import Hasql.Session (Session)
import Hasql.Statement (Statement)

import Sqel.Migration.Statement (MigrationStatement, migrationSession)

class MigrationEffect m where
  runMigrationStatements :: [MigrationStatement] -> m ()
  runStatement_ :: q -> Statement q () -> m ()
  runStatement :: q -> Statement q [a] -> m [a]
  log :: Text -> m ()
  error :: Text -> m ()

instance MigrationEffect Session where
  runMigrationStatements = migrationSession
  runStatement_ = Session.statement
  runStatement = Session.statement
  log _ = unit
  error _ = unit

instance MigrationEffect (Const [MigrationStatement]) where
  runMigrationStatements = Const
  runStatement_ _ _ = Const []
  runStatement _ _ = Const []
  log _ = Const []
  error _ = Const []