@@ -66,6 +66,7 @@ module Squeal.PostgreSQL.Definition
66 -- * Types
66 -- * Types
67 , createType
67 , createType
68 , createTypeEnum
68 , createTypeEnum
69+ , createTypeEnumFromHaskell
69 , dropType
70 , dropType
70 , ColumnTypeExpression (..)
71 , ColumnTypeExpression (..)
@@ -789,6 +790,18 @@ createTypeEnum enum labels = UnsafeDefinition $
789 "CREATE" <+> "TYPE" <+> renderAlias enum <+> "AS" <+>
790 "CREATE" <+> "TYPE" <+> renderAlias enum <+> "AS" <+>
790 parenthesized (commaSeparated (renderLabels labels)) <> ";"
791 parenthesized (commaSeparated (renderLabels labels)) <> ";"
793+createTypeEnumFromHaskell
794+ :: forall enum labels hask proxy schema
795+ . ( KnownSymbol enum
796+ , SOP.All KnownSymbol labels
797+ , SOP.IsEnumType hask
798+ , labels ~ DatatypeLabels (SOP.DatatypeInfoOf hask) )
801+ -> Definition schema (Create enum ('Typedef ('PGenum labels)) schema)
802+createTypeEnumFromHaskell enum _ = createTypeEnum enum
803+ (SOP.hpure label :: NP PGlabel labels)
792createType
805createType
793 :: (KnownSymbol comp, SOP.SListI fields)
806 :: (KnownSymbol comp, SOP.SListI fields)
794 => Alias comp
807 => Alias comp