@@ -66,6 +66,7 @@ module Squeal.PostgreSQL.Definition
6666 -- * Types
6767 , createType
6868 , createTypeEnum
69+ , createTypeEnumFromHaskell
6970 , dropType
7071 , ColumnTypeExpression (..)
7172 , notNull
@@ -789,6 +790,18 @@ createTypeEnum enum labels = UnsafeDefinition $
789790 "CREATE" <+> "TYPE" <+> renderAlias enum <+> "AS" <+>
790791 parenthesized (commaSeparated (renderLabels labels)) <> ";"
791792
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) )
799+ => Alias enum
800+ -> proxy hask
801+ -> Definition schema (Create enum ('Typedef ('PGenum labels)) schema)
802+createTypeEnumFromHaskell enum _ = createTypeEnum enum
803+ (SOP.hpure label :: NP PGlabel labels)
804+
792805createType
793806 :: (KnownSymbol comp, SOP.SListI fields)
794807 => Alias comp