on dev help sign in
create composite types
commitd6c0a437bef507a6aae5d0a373b9c9af21aba8a9 authorEitan Chatav <eitan.chatav@gmail.com> dateTue 10 Apr 2018, 15:51 (9 years ago) parent520e294
1 file changed+11
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+11
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+11
@@ -67,6 +67,8 @@ module Squeal.PostgreSQL.Definition
6767 -- * Views
6868 , createView
6969 , dropView
70+ -- * Types
71+ , createType
7072 , createTypeEnum
7173 , ColumnTypeExpression (..)
7274 , notNull
@@ -790,6 +792,15 @@ createTypeEnum enum labels = UnsafeDefinition $
790792 "CREATE" <+> "TYPE" <+> renderAlias enum <+> "AS" <+>
791793 parenthesized (commaSeparated (renderAliases labels)) <> ";"
792794
795+createType
796+ :: (KnownSymbol comp, SOP.SListI fields)
797+ => Alias comp
798+ -> NP (Aliased TypeExpression) fields
799+ -> Definition schema (Create comp ('Typedef ('PGcomposite fields)) schema)
800+createType comp fields = UnsafeDefinition $
801+ "CREATE" <+> "TYPE" <+> renderAlias comp <+> "AS" <+> parenthesized
802+ (renderCommaSeparated (renderAliasedAs renderTypeExpression) fields)
803+
793804-- | `ColumnTypeExpression`s are used in `createTable` commands.
794805newtype ColumnTypeExpression (schema :: SchemaType) (ty :: ColumnType)
795806 = UnsafeColumnTypeExpression { renderColumnTypeExpression :: ByteString }