module PostgresqlSyntax.Ast.OverrideKind where
import PostgresqlSyntax.Algebra
import qualified PostgresqlSyntax.Helpers.Parsers as Parsers
import PostgresqlSyntax.Prelude
import qualified Test.QuickCheck as Qc
data OverrideKind = UserOverrideKind | SystemOverrideKind
deriving (Int -> OverrideKind -> ShowS
[OverrideKind] -> ShowS
OverrideKind -> String
(Int -> OverrideKind -> ShowS)
-> (OverrideKind -> String)
-> ([OverrideKind] -> ShowS)
-> Show OverrideKind
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> OverrideKind -> ShowS
showsPrec :: Int -> OverrideKind -> ShowS
$cshow :: OverrideKind -> String
show :: OverrideKind -> String
$cshowList :: [OverrideKind] -> ShowS
showList :: [OverrideKind] -> ShowS
Show, (forall x. OverrideKind -> Rep OverrideKind x)
-> (forall x. Rep OverrideKind x -> OverrideKind)
-> Generic OverrideKind
forall x. Rep OverrideKind x -> OverrideKind
forall x. OverrideKind -> Rep OverrideKind x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. OverrideKind -> Rep OverrideKind x
from :: forall x. OverrideKind -> Rep OverrideKind x
$cto :: forall x. Rep OverrideKind x -> OverrideKind
to :: forall x. Rep OverrideKind x -> OverrideKind
Generic, OverrideKind -> OverrideKind -> Bool
(OverrideKind -> OverrideKind -> Bool)
-> (OverrideKind -> OverrideKind -> Bool) -> Eq OverrideKind
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: OverrideKind -> OverrideKind -> Bool
== :: OverrideKind -> OverrideKind -> Bool
$c/= :: OverrideKind -> OverrideKind -> Bool
/= :: OverrideKind -> OverrideKind -> Bool
Eq, Eq OverrideKind
Eq OverrideKind =>
(OverrideKind -> OverrideKind -> Ordering)
-> (OverrideKind -> OverrideKind -> Bool)
-> (OverrideKind -> OverrideKind -> Bool)
-> (OverrideKind -> OverrideKind -> Bool)
-> (OverrideKind -> OverrideKind -> Bool)
-> (OverrideKind -> OverrideKind -> OverrideKind)
-> (OverrideKind -> OverrideKind -> OverrideKind)
-> Ord OverrideKind
OverrideKind -> OverrideKind -> Bool
OverrideKind -> OverrideKind -> Ordering
OverrideKind -> OverrideKind -> OverrideKind
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: OverrideKind -> OverrideKind -> Ordering
compare :: OverrideKind -> OverrideKind -> Ordering
$c< :: OverrideKind -> OverrideKind -> Bool
< :: OverrideKind -> OverrideKind -> Bool
$c<= :: OverrideKind -> OverrideKind -> Bool
<= :: OverrideKind -> OverrideKind -> Bool
$c> :: OverrideKind -> OverrideKind -> Bool
> :: OverrideKind -> OverrideKind -> Bool
$c>= :: OverrideKind -> OverrideKind -> Bool
>= :: OverrideKind -> OverrideKind -> Bool
$cmax :: OverrideKind -> OverrideKind -> OverrideKind
max :: OverrideKind -> OverrideKind -> OverrideKind
$cmin :: OverrideKind -> OverrideKind -> OverrideKind
min :: OverrideKind -> OverrideKind -> OverrideKind
Ord, Typeable OverrideKind
Typeable OverrideKind =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> OverrideKind -> c OverrideKind)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c OverrideKind)
-> (OverrideKind -> Constr)
-> (OverrideKind -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c OverrideKind))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c OverrideKind))
-> ((forall b. Data b => b -> b) -> OverrideKind -> OverrideKind)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r)
-> (forall u. (forall d. Data d => d -> u) -> OverrideKind -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> OverrideKind -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind)
-> Data OverrideKind
OverrideKind -> Constr
OverrideKind -> DataType
(forall b. Data b => b -> b) -> OverrideKind -> OverrideKind
forall a.
Typeable a =>
(forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> OverrideKind -> u
forall u. (forall d. Data d => d -> u) -> OverrideKind -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c OverrideKind
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> OverrideKind -> c OverrideKind
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c OverrideKind)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c OverrideKind)
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> OverrideKind -> c OverrideKind
gfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> OverrideKind -> c OverrideKind
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c OverrideKind
gunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c OverrideKind
$ctoConstr :: OverrideKind -> Constr
toConstr :: OverrideKind -> Constr
$cdataTypeOf :: OverrideKind -> DataType
dataTypeOf :: OverrideKind -> DataType
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c OverrideKind)
dataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c OverrideKind)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c OverrideKind)
dataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c OverrideKind)
$cgmapT :: (forall b. Data b => b -> b) -> OverrideKind -> OverrideKind
gmapT :: (forall b. Data b => b -> b) -> OverrideKind -> OverrideKind
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
gmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
gmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> OverrideKind -> r
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> OverrideKind -> [u]
gmapQ :: forall u. (forall d. Data d => d -> u) -> OverrideKind -> [u]
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> OverrideKind -> u
gmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> OverrideKind -> u
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
gmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
gmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
gmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> OverrideKind -> m OverrideKind
Data, Int -> OverrideKind
OverrideKind -> Int
OverrideKind -> [OverrideKind]
OverrideKind -> OverrideKind
OverrideKind -> OverrideKind -> [OverrideKind]
OverrideKind -> OverrideKind -> OverrideKind -> [OverrideKind]
(OverrideKind -> OverrideKind)
-> (OverrideKind -> OverrideKind)
-> (Int -> OverrideKind)
-> (OverrideKind -> Int)
-> (OverrideKind -> [OverrideKind])
-> (OverrideKind -> OverrideKind -> [OverrideKind])
-> (OverrideKind -> OverrideKind -> [OverrideKind])
-> (OverrideKind -> OverrideKind -> OverrideKind -> [OverrideKind])
-> Enum OverrideKind
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: OverrideKind -> OverrideKind
succ :: OverrideKind -> OverrideKind
$cpred :: OverrideKind -> OverrideKind
pred :: OverrideKind -> OverrideKind
$ctoEnum :: Int -> OverrideKind
toEnum :: Int -> OverrideKind
$cfromEnum :: OverrideKind -> Int
fromEnum :: OverrideKind -> Int
$cenumFrom :: OverrideKind -> [OverrideKind]
enumFrom :: OverrideKind -> [OverrideKind]
$cenumFromThen :: OverrideKind -> OverrideKind -> [OverrideKind]
enumFromThen :: OverrideKind -> OverrideKind -> [OverrideKind]
$cenumFromTo :: OverrideKind -> OverrideKind -> [OverrideKind]
enumFromTo :: OverrideKind -> OverrideKind -> [OverrideKind]
$cenumFromThenTo :: OverrideKind -> OverrideKind -> OverrideKind -> [OverrideKind]
enumFromThenTo :: OverrideKind -> OverrideKind -> OverrideKind -> [OverrideKind]
Enum, OverrideKind
OverrideKind -> OverrideKind -> Bounded OverrideKind
forall a. a -> a -> Bounded a
$cminBound :: OverrideKind
minBound :: OverrideKind
$cmaxBound :: OverrideKind
maxBound :: OverrideKind
Bounded)
instance IsAst OverrideKind where
toTextBuilder :: Settings -> OverrideKind -> TextBuilder
toTextBuilder Settings
_settings = \case
OverrideKind
UserOverrideKind -> TextBuilder
"USER"
OverrideKind
SystemOverrideKind -> TextBuilder
"SYSTEM"
parser :: Settings -> Parser OverrideKind
parser Settings
_settings =
[Parser OverrideKind] -> Parser OverrideKind
forall (t :: * -> *) (f :: * -> *) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum
[ OverrideKind
UserOverrideKind OverrideKind -> HeadedParsec Void Text Text -> Parser OverrideKind
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"user",
OverrideKind
SystemOverrideKind OverrideKind -> HeadedParsec Void Text Text -> Parser OverrideKind
forall a b.
a -> HeadedParsec Void Text b -> HeadedParsec Void Text a
forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ Text -> HeadedParsec Void Text Text
forall {s} {e}.
(Tokens s ~ Text, Token s ~ Char, Ord e, Stream s) =>
Text -> HeadedParsec e s Text
Parsers.keyword Text
"system"
]
instance Qc.Arbitrary OverrideKind where
shrink :: OverrideKind -> [OverrideKind]
shrink = OverrideKind -> [OverrideKind]
forall a.
(Generic a, RecursivelyShrink (Rep a), GSubterms (Rep a) a) =>
a -> [a]
Qc.genericShrink
arbitrary :: Gen OverrideKind
arbitrary = [OverrideKind] -> Gen OverrideKind
forall a. HasCallStack => [a] -> Gen a
Qc.elements [OverrideKind
forall a. Bounded a => a
minBound .. OverrideKind
forall a. Bounded a => a
maxBound]