{-# language DataKinds #-}
{-# language DeriveAnyClass #-}
{-# language DeriveGeneric #-}
{-# language DerivingStrategies #-}
{-# language StandaloneKindSignatures #-}

module Rel8.Schema.HTable.Quintet
  ( HQuintet(..)
  )
where

-- base
import GHC.Generics ( Generic )
import Prelude ()

-- rel8
import Rel8.Schema.HTable ( HTable )
import qualified Rel8.Schema.Kind as K


type HQuintet :: K.HTable -> K.HTable -> K.HTable -> K.HTable -> K.HTable -> K.HTable
data HQuintet v w x y z context = HQuintet
  { forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
HQuintet v w x y z context -> v context
hfst :: v context
  , forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
HQuintet v w x y z context -> w context
hsnd :: w context
  , forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
HQuintet v w x y z context -> x context
htrd :: x context
  , forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
HQuintet v w x y z context -> y context
hfrt :: y context
  , forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
HQuintet v w x y z context -> z context
hfft :: z context
  }
  deriving stock (forall x.
 HQuintet v w x y z context -> Rep (HQuintet v w x y z context) x)
-> (forall x.
    Rep (HQuintet v w x y z context) x -> HQuintet v w x y z context)
-> Generic (HQuintet v w x y z context)
forall x.
Rep (HQuintet v w x y z context) x -> HQuintet v w x y z context
forall x.
HQuintet v w x y z context -> Rep (HQuintet v w x y z context) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) x.
Rep (HQuintet v w x y z context) x -> HQuintet v w x y z context
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) x.
HQuintet v w x y z context -> Rep (HQuintet v w x y z context) x
$cto :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) x.
Rep (HQuintet v w x y z context) x -> HQuintet v w x y z context
$cfrom :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) x.
HQuintet v w x y z context -> Rep (HQuintet v w x y z context) x
Generic
  deriving anyclass HQuintet v w x y z SSpec
(forall (context :: Spec -> *) (spec :: Spec).
 HQuintet v w x y z context
 -> HField (HQuintet v w x y z) spec -> context spec)
-> (forall (context :: Spec -> *).
    (forall (spec :: Spec).
     HField (HQuintet v w x y z) spec -> context spec)
    -> HQuintet v w x y z context)
-> (forall (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
    Apply m =>
    (forall (spec :: Spec). f spec -> m (g spec))
    -> HQuintet v w x y z f -> m (HQuintet v w x y z g))
-> (forall (c :: Spec -> Constraint).
    HConstrainTable (HQuintet v w x y z) c =>
    HQuintet v w x y z (Dict c))
-> HQuintet v w x y z SSpec
-> HTable (HQuintet v w x y z)
forall (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
Apply m =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HQuintet v w x y z f -> m (HQuintet v w x y z g)
forall (c :: Spec -> Constraint).
HConstrainTable (HQuintet v w x y z) c =>
HQuintet v w x y z (Dict c)
forall (context :: Spec -> *).
(forall (spec :: Spec).
 HField (HQuintet v w x y z) spec -> context spec)
-> HQuintet v w x y z context
forall (context :: Spec -> *) (spec :: Spec).
HQuintet v w x y z context
-> HField (HQuintet v w x y z) spec -> context spec
forall (t :: HTable).
(forall (context :: Spec -> *) (spec :: Spec).
 t context -> HField t spec -> context spec)
-> (forall (context :: Spec -> *).
    (forall (spec :: Spec). HField t spec -> context spec)
    -> t context)
-> (forall (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
    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
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
HQuintet v w x y z SSpec
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
(HTable v, HTable w, HTable x, HTable y, HTable z, Apply m) =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HQuintet v w x y z f -> m (HQuintet v w x y z g)
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (c :: Spec -> Constraint).
(HTable v, HTable w, HTable x, HTable y, HTable z,
 HConstrainTable (HQuintet v w x y z) c) =>
HQuintet v w x y z (Dict c)
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
(forall (spec :: Spec).
 HField (HQuintet v w x y z) spec -> context spec)
-> HQuintet v w x y z context
forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) (spec :: Spec).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
HQuintet v w x y z context
-> HField (HQuintet v w x y z) spec -> context spec
hspecs :: HQuintet v w x y z SSpec
$chspecs :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
HQuintet v w x y z SSpec
hdicts :: forall (c :: Spec -> Constraint).
HConstrainTable (HQuintet v w x y z) c =>
HQuintet v w x y z (Dict c)
$chdicts :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (c :: Spec -> Constraint).
(HTable v, HTable w, HTable x, HTable y, HTable z,
 HConstrainTable (HQuintet v w x y z) c) =>
HQuintet v w x y z (Dict c)
htraverse :: forall (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
Apply m =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HQuintet v w x y z f -> m (HQuintet v w x y z g)
$chtraverse :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (m :: * -> *) (f :: Spec -> *) (g :: Spec -> *).
(HTable v, HTable w, HTable x, HTable y, HTable z, Apply m) =>
(forall (spec :: Spec). f spec -> m (g spec))
-> HQuintet v w x y z f -> m (HQuintet v w x y z g)
htabulate :: forall (context :: Spec -> *).
(forall (spec :: Spec).
 HField (HQuintet v w x y z) spec -> context spec)
-> HQuintet v w x y z context
$chtabulate :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
(forall (spec :: Spec).
 HField (HQuintet v w x y z) spec -> context spec)
-> HQuintet v w x y z context
hfield :: forall (context :: Spec -> *) (spec :: Spec).
HQuintet v w x y z context
-> HField (HQuintet v w x y z) spec -> context spec
$chfield :: forall (v :: HTable) (w :: HTable) (x :: HTable) (y :: HTable)
       (z :: HTable) (context :: Spec -> *) (spec :: Spec).
(HTable v, HTable w, HTable x, HTable y, HTable z) =>
HQuintet v w x y z context
-> HField (HQuintet v w x y z) spec -> context spec
HTable