module Sq.Null (Null (..)) where

-- | The @NULL@ SQL datatype.
--
-- Mostly useful if you want to encode or decode a literal @NULL@ value
-- through 'Sq.EncodeDefault' and 'Sq.DecodeDefault' instances.
--
-- However, often you can benefit from 'Sq.encodeMaybe' and 'Sq.decodeMaybe'
-- instead.
data Null = Null
   deriving stock (Null -> Null -> Bool
(Null -> Null -> Bool) -> (Null -> Null -> Bool) -> Eq Null
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Null -> Null -> Bool
== :: Null -> Null -> Bool
$c/= :: Null -> Null -> Bool
/= :: Null -> Null -> Bool
Eq, Eq Null
Eq Null =>
(Null -> Null -> Ordering)
-> (Null -> Null -> Bool)
-> (Null -> Null -> Bool)
-> (Null -> Null -> Bool)
-> (Null -> Null -> Bool)
-> (Null -> Null -> Null)
-> (Null -> Null -> Null)
-> Ord Null
Null -> Null -> Bool
Null -> Null -> Ordering
Null -> Null -> Null
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 :: Null -> Null -> Ordering
compare :: Null -> Null -> Ordering
$c< :: Null -> Null -> Bool
< :: Null -> Null -> Bool
$c<= :: Null -> Null -> Bool
<= :: Null -> Null -> Bool
$c> :: Null -> Null -> Bool
> :: Null -> Null -> Bool
$c>= :: Null -> Null -> Bool
>= :: Null -> Null -> Bool
$cmax :: Null -> Null -> Null
max :: Null -> Null -> Null
$cmin :: Null -> Null -> Null
min :: Null -> Null -> Null
Ord, Int -> Null -> ShowS
[Null] -> ShowS
Null -> String
(Int -> Null -> ShowS)
-> (Null -> String) -> ([Null] -> ShowS) -> Show Null
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Null -> ShowS
showsPrec :: Int -> Null -> ShowS
$cshow :: Null -> String
show :: Null -> String
$cshowList :: [Null] -> ShowS
showList :: [Null] -> ShowS
Show)

instance Semigroup Null where
   Null
_ <> :: Null -> Null -> Null
<> Null
_ = Null
Null

instance Monoid Null where
   mempty :: Null
mempty = Null
Null