@@ -16,7 +16,6 @@
1616module Rel8.Generic.Construction
1717 ( GGBuildable
1818 , GGBuild, ggbuild
19− , GGInsert, gginsert
2019 , GGConstructable
2120 , GGConstruct, ggconstruct
2221 , GGDeconstruct, ggdeconstruct
@@ -63,7 +62,6 @@ import qualified Rel8.Kind.Algebra as K
6362import Rel8.Schema.Context.Nullify ( runTag )
6463import Rel8.Schema.HTable ( HTable )
6564import Rel8.Schema.HTable.Identity ( HIdentity( HType ) )
66−import Rel8.Schema.Insert ( Col( I ), Create(..), Insert )
6765import qualified Rel8.Schema.Kind as K
6866import Rel8.Schema.Name ( Col( N ), Name( Name ) )
6967import Rel8.Schema.Null ( Nullity( Null, NotNull ) )
@@ -83,7 +81,6 @@ type GGBuildable algebra name rep =
8381 ( KnownAlgebra algebra
8482 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Aggregate)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
8583 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Expr)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
86− , Eval (GGColumns algebra TColumns (Eval (rep (Reify Insert)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
8784 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Name)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
8885 , HTable (Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))))
8986 , GGBuildable' algebra name rep
@@ -94,17 +91,12 @@ type GGBuildable' :: K.Algebra -> Symbol -> (K.Context -> Exp (Type -> Type)) ->
9491type family GGBuildable' algebra name rep where
9592 GGBuildable' 'K.Product name rep =
9693 ( name ~ GConstructor (Eval (rep (Reify Expr)))
97− , name ~ GConstructor (Eval (rep (Reify Insert)))
9894 , Representable TUnreify (Eval (rep (Reify Expr)))
99− , Representable TUnreify (Eval (rep (Reify Insert)))
10095 , GConstructable (TTable (Reify Expr)) TColumns TUnreify (Col (Reify Expr)) (Eval (rep (Reify Expr)))
101− , GConstructable (TTable (Reify Insert)) TColumns TUnreify (Col (Reify Insert)) (Eval (rep (Reify Insert)))
10296 )
10397 GGBuildable' 'K.Sum name rep =
10498 ( Representable TUnreify (GConstructorADT name (Eval (rep (Reify Expr))))
105− , Representable TUnreify (GConstructorADT name (Eval (rep (Reify Insert))))
10699 , GMakeableADT (TTable (Reify Expr)) TColumns TUnreify (Col (Reify Expr)) name (Eval (rep (Reify Expr)))
107− , GMakeableADT (TTable (Reify Insert)) TColumns TUnreify (Col (Reify Insert)) name (Eval (rep (Reify Insert)))
108100 )
109101
110102
@@ -150,56 +142,11 @@ ggbuild gfromColumns = case algebraSing @algebra of
150142 (HType . Reify . E . litExpr)
151143
152144
153−type GGInsert :: K.Algebra -> Symbol -> (K.Context -> Exp (Type -> Type)) -> Type -> Type
154−type family GGInsert algebra name rep r where
155− GGInsert 'K.Product _name rep r =
156− GConstruct TUnreify (Eval (rep (Reify Insert))) r
157− GGInsert 'K.Sum name rep r =
158− GConstruct TUnreify (GConstructorADT name (Eval (rep (Reify Insert)))) r
159−
160−
161−gginsert :: forall algebra name rep a. GGBuildable algebra name rep
162− => (Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))) (Col Insert) -> a)
163− -> GGInsert algebra name rep a
164−gginsert gfromColumns = case algebraSing @algebra of
165− SProduct ->
166− gtabulate @TUnreify @(Eval (rep (Reify Insert))) @a $
167− gfromColumns .
168− hunreify .
169− gconstruct
170− @(TTable (Reify Insert))
171− @TColumns
172− @TUnreify
173− @(Col (Reify Insert))
174− @(Eval (rep (Reify Insert)))
175− (\(_ :: proxy x) -> toColumns . reify @_ @x Refl)
176− SSum ->
177− gtabulate @TUnreify @(GConstructorADT name (Eval (rep (Reify Insert)))) @a $
178− gfromColumns .
179− hunreify .
180− gmakeADT
181− @(TTable (Reify Insert))
182− @TColumns
183− @TUnreify
184− @(Col (Reify Insert))
185− @name
186− @(Eval (rep (Reify Insert)))
187− (\(_ :: proxy x) -> toColumns . reify @_ @x Refl)
188− (\SSpec {info} -> Reify $ I (Value (snull info)))
189− (\SSpec {nullity} -> case nullity of
190− Null -> id
191− NotNull -> \case
192− Reify (I Default) -> Reify (I Default)
193− Reify (I (Value a)) -> Reify (I (Value (nullify a))))
194− (HType . Reify . I . Value . litExpr)
195−
196−
197145type GGConstructable :: K.Algebra -> (K.Context -> Exp (Type -> Type)) -> Constraint
198146type GGConstructable algebra rep =
199147 ( KnownAlgebra algebra
200148 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Aggregate)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
201149 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Expr)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
202− , Eval (GGColumns algebra TColumns (Eval (rep (Reify Insert)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
203150 , Eval (GGColumns algebra TColumns (Eval (rep (Reify Name)))) ~ Eval (GGColumns algebra TColumns (Eval (rep (Reify Result))))
204151 , HTable (Eval (GGColumns algebra TColumns (Eval (rep (Reify Result)))))
205152 , GGConstructable' algebra rep
@@ -211,24 +158,19 @@ type family GGConstructable' algebra rep where
211158 GGConstructable' 'K.Product rep =
212159 ( Representable TUnreify (Eval (rep (Reify Aggregate)))
213160 , Representable TUnreify (Eval (rep (Reify Expr)))
214− , Representable TUnreify (Eval (rep (Reify Insert)))
215161 , Representable TUnreify (Eval (rep (Reify Name)))
216162 , GConstructable (TTable (Reify Aggregate)) TColumns TUnreify (Col (Reify Aggregate)) (Eval (rep (Reify Aggregate)))
217163 , GConstructable (TTable (Reify Expr)) TColumns TUnreify (Col (Reify Expr)) (Eval (rep (Reify Expr)))
218− , GConstructable (TTable (Reify Insert)) TColumns TUnreify (Col (Reify Insert)) (Eval (rep (Reify Insert)))
219164 , GConstructable (TTable (Reify Name)) TColumns TUnreify (Col (Reify Name)) (Eval (rep (Reify Name)))
220165 )
221166 GGConstructable' 'K.Sum rep =
222167 ( RepresentableConstructors TUnreify (Eval (rep (Reify Expr)))
223− , RepresentableConstructors TUnreify (Eval (rep (Reify Insert)))
224168 , RepresentableFields TUnreify (Eval (rep (Reify Aggregate)))
225169 , RepresentableFields TUnreify (Eval (rep (Reify Expr)))
226170 , RepresentableFields TUnreify (Eval (rep (Reify Name)))
227171 , Functor (GConstructors TUnreify (Eval (rep (Reify Expr))))
228− , Functor (GConstructors TUnreify (Eval (rep (Reify Insert))))
229172 , GConstructableADT (TTable (Reify Aggregate)) TColumns TUnreify (Col (Reify Aggregate)) (Eval (rep (Reify Aggregate)))
230173 , GConstructableADT (TTable (Reify Expr)) TColumns TUnreify (Col (Reify Expr)) (Eval (rep (Reify Expr)))
231− , GConstructableADT (TTable (Reify Insert)) TColumns TUnreify (Col (Reify Insert)) (Eval (rep (Reify Insert)))
232174 , GConstructableADT (TTable (Reify Name)) TColumns TUnreify (Col (Reify Name)) (Eval (rep (Reify Name)))
233175 )
234176