module Database.HamSql.Internal.Stmt.Type where
import qualified Data.Text as T
import Database.HamSql.Internal.Stmt.Basic
stmtsDropType :: SqlObj SQL_TYPE SqlName -> [Maybe SqlStmt]
stmtsDropType t = [newSqlStmt SqlDropType t $ "DROP TYPE" <-> toSqlCode t]
instance ToSqlStmts (SqlContext (Schema, Type)) where
toSqlStmts _ obj@(SqlContext (_, t)) =
[ newSqlStmt SqlCreateType obj $
"CREATE TYPE" <-> sqlIdCode obj <-> "AS (" <>
T.intercalate ", " (map sqlElement (typeElements t)) <>
")"
, stmtCommentOn obj (typeDescription t)
]
where
sqlElement e =
toSqlCode (typeelementName e) <-> toSqlCode (typeelementType e)