{-# language DataKinds #-}
{-# language DeriveAnyClass #-}
{-# language DeriveGeneric #-}
{-# language DerivingStrategies #-}
{-# language StandaloneKindSignatures #-}
module Rel8.Schema.HTable.Maybe
( HMaybeTable(..)
)
where
import GHC.Generics ( Generic )
import Prelude
import Rel8.Kind.Necessity ( Necessity( Required ) )
import Rel8.Schema.HTable ( HTable )
import Rel8.Schema.HTable.Identity ( HIdentity(..) )
import Rel8.Schema.HTable.Label ( HLabel )
import Rel8.Schema.HTable.Nullify ( HNullify )
import qualified Rel8.Schema.Kind as K
import Rel8.Schema.Spec ( Spec( Spec ) )
import Rel8.Type.Tag ( MaybeTag )
type HMaybeTable :: K.HTable -> K.HTable
data HMaybeTable table context = HMaybeTable
{ HMaybeTable table context
-> HIdentity ('Spec '["isJust"] 'Required (Maybe MaybeTag)) context
htag :: HIdentity ('Spec '["isJust"] 'Required (Maybe MaybeTag)) context
, HMaybeTable table context -> HLabel "Just" (HNullify table) context
hjust :: HLabel "Just" (HNullify table) context
}
deriving stock (forall x.
HMaybeTable table context -> Rep (HMaybeTable table context) x)
-> (forall x.
Rep (HMaybeTable table context) x -> HMaybeTable table context)
-> Generic (HMaybeTable table context)
forall x.
Rep (HMaybeTable table context) x -> HMaybeTable table context
forall x.
HMaybeTable table context -> Rep (HMaybeTable table context) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (table :: HTable) (context :: HContext) x.
Rep (HMaybeTable table context) x -> HMaybeTable table context
forall (table :: HTable) (context :: HContext) x.
HMaybeTable table context -> Rep (HMaybeTable table context) x
$cto :: forall (table :: HTable) (context :: HContext) x.
Rep (HMaybeTable table context) x -> HMaybeTable table context
$cfrom :: forall (table :: HTable) (context :: HContext) x.
HMaybeTable table context -> Rep (HMaybeTable table context) x
Generic
deriving anyclass HMaybeTable table SSpec
(forall (context :: HContext) (spec :: Spec).
HMaybeTable table context
-> HField (HMaybeTable table) spec -> context spec)
-> (forall (context :: HContext).
(forall (spec :: Spec).
HField (HMaybeTable table) spec -> context spec)
-> HMaybeTable table context)
-> (forall (m :: * -> *) (f :: HContext) (g :: HContext).
Apply m =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HMaybeTable table f -> m (HMaybeTable table g))
-> (forall (c :: Spec -> Constraint).
HConstrainTable (HMaybeTable table) c =>
HMaybeTable table (Dict c))
-> HMaybeTable table SSpec
-> HTable (HMaybeTable table)
forall (m :: * -> *) (f :: HContext) (g :: HContext).
Apply m =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HMaybeTable table f -> m (HMaybeTable table g)
forall (c :: Spec -> Constraint).
HConstrainTable (HMaybeTable table) c =>
HMaybeTable table (Dict c)
forall (context :: HContext).
(forall (spec :: Spec).
HField (HMaybeTable table) spec -> context spec)
-> HMaybeTable table context
forall (context :: HContext) (spec :: Spec).
HMaybeTable table context
-> HField (HMaybeTable table) spec -> context spec
forall (table :: HTable). HTable table => HMaybeTable table SSpec
forall (table :: HTable) (m :: * -> *) (f :: HContext)
(g :: HContext).
(HTable table, Apply m) =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HMaybeTable table f -> m (HMaybeTable table g)
forall (table :: HTable) (c :: Spec -> Constraint).
(HTable table, HConstrainTable (HMaybeTable table) c) =>
HMaybeTable table (Dict c)
forall (table :: HTable) (context :: HContext).
HTable table =>
(forall (spec :: Spec).
HField (HMaybeTable table) spec -> context spec)
-> HMaybeTable table context
forall (table :: HTable) (context :: HContext) (spec :: Spec).
HTable table =>
HMaybeTable table context
-> HField (HMaybeTable table) spec -> context spec
forall (t :: HTable).
(forall (context :: HContext) (spec :: Spec).
t context -> HField t spec -> context spec)
-> (forall (context :: HContext).
(forall (spec :: Spec). HField t spec -> context spec)
-> t context)
-> (forall (m :: * -> *) (f :: HContext) (g :: HContext).
Apply m =>
(forall (spec :: Spec). f spec -> m (g spec)) -> t f -> m (t g))
-> (forall (c :: Spec -> Constraint).
HConstrainTable t c =>
t (Dict c))
-> t SSpec
-> HTable t
hspecs :: HMaybeTable table SSpec
$chspecs :: forall (table :: HTable). HTable table => HMaybeTable table SSpec
hdicts :: HMaybeTable table (Dict c)
$chdicts :: forall (table :: HTable) (c :: Spec -> Constraint).
(HTable table, HConstrainTable (HMaybeTable table) c) =>
HMaybeTable table (Dict c)
htraverse :: (forall (spec :: Spec). f spec -> m (g spec))
-> HMaybeTable table f -> m (HMaybeTable table g)
$chtraverse :: forall (table :: HTable) (m :: * -> *) (f :: HContext)
(g :: HContext).
(HTable table, Apply m) =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HMaybeTable table f -> m (HMaybeTable table g)
htabulate :: (forall (spec :: Spec).
HField (HMaybeTable table) spec -> context spec)
-> HMaybeTable table context
$chtabulate :: forall (table :: HTable) (context :: HContext).
HTable table =>
(forall (spec :: Spec).
HField (HMaybeTable table) spec -> context spec)
-> HMaybeTable table context
hfield :: HMaybeTable table context
-> HField (HMaybeTable table) spec -> context spec
$chfield :: forall (table :: HTable) (context :: HContext) (spec :: Spec).
HTable table =>
HMaybeTable table context
-> HField (HMaybeTable table) spec -> context spec
HTable