postgresql-syntax-0.5.0.0: library-internal/PostgresqlSyntax/Ast/ConstTypename.hs
module PostgresqlSyntax.Ast.ConstTypename where
import PostgresqlSyntax.Ast.Bit (Bit)
import PostgresqlSyntax.Ast.ConstCharacter
import PostgresqlSyntax.Ast.ConstDatetime
import PostgresqlSyntax.Ast.Numeric
import PostgresqlSyntax.IsAst
import PostgresqlSyntax.Prelude
import qualified Test.QuickCheck as Qc
-- |
-- ==== References
-- @
-- ConstTypename:
-- | Numeric
-- | ConstBit
-- | ConstCharacter
-- | ConstDatetime
-- @
data ConstTypename
= NumericConstTypename Numeric
| ConstBitConstTypename Bit
| ConstCharacterConstTypename ConstCharacter
| ConstDatetimeConstTypename ConstDatetime
deriving (Show, Generic, Eq, Ord, Data)
instance IsAst ConstTypename where
toTextBuilder settings = \case
NumericConstTypename a -> toTextBuilder settings a
ConstBitConstTypename a -> toTextBuilder settings a
ConstCharacterConstTypename a -> toTextBuilder settings a
ConstDatetimeConstTypename a -> toTextBuilder settings a
parser settings =
asum
[ NumericConstTypename <$> parser settings,
ConstBitConstTypename <$> parser settings,
ConstCharacterConstTypename <$> parser settings,
ConstDatetimeConstTypename <$> parser settings
]
instance Qc.Arbitrary ConstTypename where
shrink = Qc.genericShrink
arbitrary =
Qc.oneof
[ NumericConstTypename <$> Qc.arbitrary,
ConstBitConstTypename <$> Qc.arbitrary,
ConstCharacterConstTypename <$> Qc.arbitrary,
ConstDatetimeConstTypename <$> Qc.arbitrary
]