@@ -42,6 +42,7 @@ import Rel8.Schema.HTable ( HTable )
42import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
42import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
43import Rel8.Schema.HTable.Pair ( HPair(..) )
43import Rel8.Schema.HTable.Pair ( HPair(..) )
44import qualified Rel8.Schema.Kind as K
44import qualified Rel8.Schema.Kind as K
45+import Rel8.Schema.Name ( Name )
45import Rel8.Schema.Spec ( KTable )
46import Rel8.Schema.Spec ( KTable )
46import Rel8.Table
47import Rel8.Table
47 ( Table, Columns, Context, fromColumns, toColumns
48 ( Table, Columns, Context, fromColumns, toColumns
@@ -52,10 +53,9 @@ instance
52 ( Rel8able t
53 ( Rel8able t
53 , Labelable context
54 , Labelable context
54 , Reifiable context
55 , Reifiable context
55− , HTable (GRep context t)
56 ) => Table context (t context)
56 ) => Table context (t context)
58− type Columns (t context) = GRep context t
58+ type Columns (t context) = GRep t
59 type Context (t context) = context
59 type Context (t context) = context
61 fromColumns = unreify . gfromColumns . hreify
61 fromColumns = unreify . gfromColumns . hreify
@@ -105,28 +105,30 @@ instance
105-- deriving ( GHC.Generics.Generic, Rel8able )
105-- deriving ( GHC.Generics.Generic, Rel8able )
107type Rel8able :: KTable -> Constraint
107type Rel8able :: KTable -> Constraint
108−class Rel8able t where
108+class HTable (GRep t) => Rel8able t where
109 gfromColumns :: (Labelable context, Reifiable context)
109 gfromColumns :: (Labelable context, Reifiable context)
110− => GRep context t (Col (Reify context)) -> t (Reify context)
110+ => GRep t (Col (Reify context)) -> t (Reify context)
112 gtoColumns :: (Labelable context, Reifiable context)
112 gtoColumns :: (Labelable context, Reifiable context)
113− => t (Reify context) -> GRep context t (Col (Reify context))
113+ => t (Reify context) -> GRep t (Col (Reify context))
115 default gfromColumns :: forall context.
115 default gfromColumns :: forall context.
116 ( Generic (t (Reify context))
116 ( Generic (t (Reify context))
117+ , GColumns (Rep (t (Reify context))) ~ GRep t
117 , GRel8able context (Rep (t (Reify context)))
118 , GRel8able context (Rep (t (Reify context)))
118− ) => GRep context t (Col (Reify context)) -> t (Reify context)
119+ ) => GRep t (Col (Reify context)) -> t (Reify context)
119 gfromColumns = to . fromGColumns @_ @(Rep (t (Reify context)))
120 gfromColumns = to . fromGColumns @_ @(Rep (t (Reify context)))
121 default gtoColumns :: forall context.
122 default gtoColumns :: forall context.
122 ( Generic (t (Reify context))
123 ( Generic (t (Reify context))
124+ , GColumns (Rep (t (Reify context))) ~ GRep t
123 , GRel8able context (Rep (t (Reify context)))
125 , GRel8able context (Rep (t (Reify context)))
124− ) => t (Reify context) -> GRep context t (Col (Reify context))
126+ ) => t (Reify context) -> GRep t (Col (Reify context))
125 gtoColumns = toGColumns @_ @(Rep (t (Reify context))) . from
127 gtoColumns = toGColumns @_ @(Rep (t (Reify context))) . from
128−type GRep :: K.Context -> K.Table -> K.HTable
130+type GRep :: K.Table -> K.HTable
129−type GRep context t = GColumns (Rep (t (Reify context)))
131+type GRep t = GColumns (Rep (t (Reify Name)))
132type GColumns :: (Type -> Type) -> K.HTable
134type GColumns :: (Type -> Type) -> K.HTable