module Test.TestTable
( dropAndRecreateTableDef
, dropTableDef
, dropTableDefSql
, dropTableNameSql
)
where
import qualified Orville.PostgreSQL.Expr as Expr
import Orville.PostgreSQL.Raw.Connection (Connection)
import qualified Orville.PostgreSQL.Raw.RawSql as RawSql
import Orville.PostgreSQL.Schema (TableDefinition, mkCreateTableExpr, tableName)
dropTableDef ::
Connection ->
TableDefinition key writeEntity readEntity ->
IO ()
dropTableDef connection tableDef = do
RawSql.executeVoid connection (dropTableDefSql tableDef)
dropAndRecreateTableDef ::
Connection ->
TableDefinition key writeEntity readEntity ->
IO ()
dropAndRecreateTableDef connection tableDef = do
dropTableDef connection tableDef
RawSql.executeVoid connection (mkCreateTableExpr tableDef)
dropTableDefSql ::
TableDefinition key writeEntity readEntity ->
RawSql.RawSql
dropTableDefSql =
dropTableNameExprSql . tableName
dropTableNameSql ::
String ->
RawSql.RawSql
dropTableNameSql =
dropTableNameExprSql . Expr.qualifyTable Nothing . Expr.tableName
dropTableNameExprSql ::
Expr.Qualified Expr.TableName ->
RawSql.RawSql
dropTableNameExprSql name =
RawSql.fromString "DROP TABLE IF EXISTS " <> RawSql.toRawSql name