@@ -21,7 +21,6 @@ module Rel8.Table.Serialize
2121where
2222
2323-- base
24−import Data.Bifunctor ( bimap )
2524import Data.Kind ( Constraint, Type )
2625import Data.List.NonEmpty ( NonEmpty )
2726import GHC.Generics ( Generic, Rep, from, to )
@@ -46,19 +45,11 @@ import Rel8.Schema.Null ( NotNull, Sql )
4645import Rel8.Schema.Result ( Col( Result ), Result )
4746import Rel8.Schema.Spec ( SSpec(..), KnownSpec )
4847import Rel8.Table ( Table, Columns, fromColumns, toColumns, TColumns )
49−import Rel8.Table.Either ( EitherTable )
50−import Rel8.Table.List ( ListTable )
51−import Rel8.Table.Maybe ( MaybeTable )
52−import Rel8.Table.NonEmpty ( NonEmptyTable )
53−import Rel8.Table.These ( TheseTable )
5448import Rel8.Type ( DBType )
5549
5650-- semigroupoids
5751import Data.Functor.Apply ( WrappedApplicative(..) )
5852
59−-- these
60−import Data.These ( These )
61−
6253
6354type ToExprs :: Type -> Type -> Constraint
6455class Table Expr exprs => ToExprs exprs a where
@@ -126,44 +117,6 @@ instance (Sql DBType a, NotNull a, x ~ NonEmpty a) => ToExprs (Expr x) (NonEmpty
126117 toResult = HType . Result
127118
128119
129−instance (ToExprs exprs1 a, ToExprs exprs2 b, x ~ EitherTable exprs1 exprs2) =>
130− ToExprs x (Either a b)
131− where
132− fromResult =
133− bimap (fromResult @exprs1) (fromResult @exprs2) .
134− fromColumns
135− toResult =
136− toColumns .
137− bimap (toResult @exprs1) (toResult @exprs2)
138−
139−
140−instance ToExprs exprs a => ToExprs (ListTable exprs) [a] where
141− fromResult = fmap (fromResult @exprs) . fromColumns
142− toResult = toColumns . fmap (toResult @exprs)
143−
144−
145−instance ToExprs exprs a => ToExprs (MaybeTable exprs) (Maybe a) where
146− fromResult = fmap (fromResult @exprs) . fromColumns
147− toResult = toColumns . fmap (toResult @exprs)
148−
149−
150−instance ToExprs exprs a => ToExprs (NonEmptyTable exprs) (NonEmpty a)
151− where
152− fromResult = fmap (fromResult @exprs) . fromColumns
153− toResult = toColumns . fmap (toResult @exprs)
154−
155−
156−instance (ToExprs exprs1 a, ToExprs exprs2 b, x ~ TheseTable exprs1 exprs2) =>
157− ToExprs x (These a b)
158− where
159− fromResult =
160− bimap (fromResult @exprs1) (fromResult @exprs2) .
161− fromColumns
162− toResult =
163− toColumns .
164− bimap (toResult @exprs1) (toResult @exprs2)
165−
166−
167120instance (ToExprs exprs1 a, ToExprs exprs2 b, x ~ (exprs1, exprs2)) =>
168121 ToExprs x (a, b)
169122
@@ -241,11 +194,6 @@ type FromExprs :: Type -> Type
241194type family FromExprs a
242195type instance FromExprs (Expr a) = a
243196type instance FromExprs (Col Expr spec) = Col Result spec
244−type instance FromExprs (EitherTable a b) = Either (FromExprs a) (FromExprs b)
245−type instance FromExprs (ListTable a) = [FromExprs a]
246−type instance FromExprs (MaybeTable a) = Maybe (FromExprs a)
247−type instance FromExprs (NonEmptyTable a) = NonEmpty (FromExprs a)
248−type instance FromExprs (TheseTable a b) = These (FromExprs a) (FromExprs b)
249197type instance FromExprs (a, b) = (FromExprs a, FromExprs b)
250198type instance FromExprs (a, b, c) = (FromExprs a, FromExprs b, FromExprs c)
251199type instance FromExprs (a, b, c, d) =