postgresql-syntax-0.5.0.0: library-internal/PostgresqlSyntax/Ast/Columnref.hs
module PostgresqlSyntax.Ast.Columnref where
import qualified HeadedMegaparsec as Parser
import PostgresqlSyntax.Ast.Ident (Ident, colId)
import PostgresqlSyntax.Ast.Indirection
import qualified PostgresqlSyntax.Helpers.Gens as Gens
import qualified PostgresqlSyntax.Helpers.Parsers as Parsers
import PostgresqlSyntax.IsAst
import PostgresqlSyntax.Prelude
import qualified Test.QuickCheck as Qc
-- |
-- ==== References
-- @
-- columnref:
-- | ColId
-- | ColId indirection
-- @
data Columnref = Columnref Ident (Maybe Indirection)
deriving (Show, Generic, Eq, Ord, Data)
instance IsAst Columnref where
toTextBuilder settings (Columnref a b) = toTextBuilder settings a <> foldMap (toTextBuilder settings) b
parser settings = do
a <- Parser.wrapToHead (colId settings)
Parser.endHead
b <- optional (Parsers.space *> parser settings)
return (Columnref a b)
instance Qc.Arbitrary Columnref where
shrink = Qc.genericShrink
arbitrary = Columnref <$> arbitrary <*> Gens.terminatingMaybe arbitrary