module Polysemy.Hasql.Statement where import Hasql.Statement (Statement) import Polysemy.Db.Data.DbName (DbName, unDbName) import Sqel.Data.Sql (Sql, sql, sqlQuote) import Sqel.Statement (plain) quoteName :: DbName -> Sql quoteName :: DbName -> Sql quoteName = Text -> Sql sqlQuote forall b c a. (b -> c) -> (a -> b) -> a -> c . DbName -> Text unDbName createDbSql :: DbName -> Sql createDbSql :: DbName -> Sql createDbSql (DbName -> Sql quoteName -> Sql name) = [sql|create database #{name}|] createDb :: DbName -> Statement () () createDb :: DbName -> Statement () () createDb = Sql -> Statement () () plain forall b c a. (b -> c) -> (a -> b) -> a -> c . DbName -> Sql createDbSql dropDbSql :: DbName -> Sql dropDbSql :: DbName -> Sql dropDbSql (DbName -> Sql quoteName -> Sql name) = [sql|drop database #{name}|] dropDb :: DbName -> Statement () () dropDb :: DbName -> Statement () () dropDb = Sql -> Statement () () plain forall b c a. (b -> c) -> (a -> b) -> a -> c . DbName -> Sql dropDbSql