on master help sign in
Unify HType and HIdentity
commit2615b89eafdc5614e8fb9650c8731b27f230d9af authorShane O'Brien <shane.obrien@circuithub.com> dateWed 5 May 2021, 15:25 (6 years ago) parentdb148ff
13 files changed+24−74
rel8.cabal−1 src/Rel8/Expr.hs+1−1 src/Rel8/Generic/Construction.hs+1−1 src/Rel8/Generic/Construction/ADT.hs+1−1 src/Rel8/Generic/Table/ADT.hs+1−1 src/Rel8/Schema/HTable/Identity.hs+14−2 src/Rel8/Schema/HTable/Type.hs−60 src/Rel8/Schema/Insert.hs+1−1 src/Rel8/Schema/Name.hs+1−1 src/Rel8/Table.hs+1−2 src/Rel8/Table/Eq.hs+1−1 src/Rel8/Table/Ord.hs+1−1 src/Rel8/Table/Serialize.hs+1−1
rel8.cabal−1
@@ -124,7 +124,6 @@ library
124124 Rel8.Schema.HTable.Nullify
125125 Rel8.Schema.HTable.Product
126126 Rel8.Schema.HTable.These
127− Rel8.Schema.HTable.Type
128127 Rel8.Schema.HTable.Vectorize
129128 Rel8.Schema.Insert
130129 Rel8.Schema.Kind
src/Rel8/Expr.hs+1−1
@@ -39,7 +39,7 @@ import Rel8.Expr.Opaleye
3939import Rel8.Expr.Serialize ( litExpr )
4040import Rel8.Schema.Context ( Interpretation, Col )
4141import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
42−import Rel8.Schema.HTable.Type ( HType( HType ) )
42+import Rel8.Schema.HTable.Identity ( HIdentity( HType ), HType )
4343import Rel8.Schema.Null ( Nullity( Null, NotNull ), Sql, nullable )
4444import Rel8.Schema.Reify ( notReify )
4545import Rel8.Schema.Result ( Result )
src/Rel8/Generic/Construction.hs+1−1
@@ -59,7 +59,7 @@ import qualified Rel8.Kind.Algebra as K
5959import Rel8.Kind.Necessity ( SNecessity( SOptional, SRequired ) )
6060import Rel8.Schema.Context.Nullify ( runTag )
6161import Rel8.Schema.HTable ( HTable )
62−import Rel8.Schema.HTable.Type ( HType( HType ) )
62+import Rel8.Schema.HTable.Identity ( HIdentity( HType ) )
6363import Rel8.Schema.Insert ( Col( OptionalInsert, RequiredInsert ), Insert )
6464import qualified Rel8.Schema.Kind as K
6565import Rel8.Schema.Name ( Col( NameCol ), Name( Name ) )
src/Rel8/Generic/Construction/ADT.hs+1−1
@@ -47,10 +47,10 @@ import Rel8.Generic.Table.ADT ( GColumnsADT, GColumnsADT' )
4747import Rel8.Generic.Table.Record ( GColumns )
4848import Rel8.Schema.Context.Label ( HLabelable, hlabeler, hunlabeler )
4949import Rel8.Schema.HTable ( HTable )
50+import Rel8.Schema.HTable.Identity ( HType )
5051import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
5152import Rel8.Schema.HTable.Nullify ( HNullify, hnulls, hnullify, hunnullify )
5253import Rel8.Schema.HTable.Product ( HProduct( HProduct ) )
53−import Rel8.Schema.HTable.Type ( HType )
5454import Rel8.Schema.Null ( Nullify )
5555import Rel8.Schema.Spec ( Spec( Spec ), SSpec )
5656import qualified Rel8.Schema.Kind as K
src/Rel8/Generic/Table/ADT.hs+1−1
@@ -39,10 +39,10 @@ import Rel8.Generic.Table.Record
3939 )
4040import Rel8.Schema.Context.Label ( HLabelable, hlabeler, labeler, unlabeler )
4141import Rel8.Schema.HTable ( HTable, hmap )
42+import Rel8.Schema.HTable.Identity ( HIdentity( HType ), HType )
4243import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
4344import Rel8.Schema.HTable.Nullify ( HNullify, hnulls, hnullify, hunnullify )
4445import Rel8.Schema.HTable.Product ( HProduct( HProduct ) )
45−import Rel8.Schema.HTable.Type ( HType( HType ) )
4646import qualified Rel8.Schema.Kind as K
4747import Rel8.Schema.Null ( Nullify )
4848import Rel8.Schema.Spec ( Spec( Spec ), SSpec )
src/Rel8/Schema/HTable/Identity.hs+14−2
@@ -1,10 +1,12 @@
11{-# language DataKinds #-}
22{-# language GADTs #-}
3+{-# language PatternSynonyms #-}
34{-# language StandaloneKindSignatures #-}
45{-# language TypeFamilies #-}
56
67module Rel8.Schema.HTable.Identity
7− ( HIdentity(..)
8+ ( HIdentity( HIdentity, HType, unHIdentity )
9+ , HType
810 )
911where
1012
@@ -13,13 +15,23 @@ import Data.Kind ( Type )
1315import Prelude
1416
1517-- rel8
18+import Rel8.Kind.Necessity ( Necessity( Required ) )
1619import Rel8.Schema.Dict ( Dict( Dict ) )
1720import Rel8.Schema.HTable
1821 ( HTable, HConstrainTable, HField
1922 , hfield, htabulate, htraverse, hdicts, hspecs
2023 )
2124import qualified Rel8.Schema.Kind as K
22−import Rel8.Schema.Spec ( Spec, KnownSpec, specSing )
25+import Rel8.Schema.Spec ( Spec( Spec ), KnownSpec, specSing )
26+
27+
28+type HType :: Type -> K.HTable
29+type HType a = HIdentity ('Spec '[] 'Required a)
30+
31+
32+pattern HType :: context ('Spec '[] 'Required a) -> HType a context
33+pattern HType a = HIdentity a
34+{-# COMPLETE HType #-}
2335
2436
2537type HIdentity :: Spec -> K.HTable
src/Rel8/Schema/HTable/Type.hsdeleted−60
@@ -1,60 +0,0 @@
1−{-# language DataKinds #-}
2−{-# language GADTs #-}
3−{-# language StandaloneKindSignatures #-}
4−{-# language TypeFamilies #-}
5−{-# language UndecidableInstances #-}
6−
7−module Rel8.Schema.HTable.Type
8− ( HType(..)
9− )
10−where
11−
12−-- base
13−import Data.Kind ( Type )
14−import Prelude
15−
16−-- rel8
17−import Rel8.Kind.Labels ( SLabels( SNil ) )
18−import Rel8.Kind.Necessity ( Necessity( Required ), SNecessity( SRequired ) )
19−import Rel8.Schema.Dict ( Dict( Dict ) )
20−import Rel8.Schema.HTable
21− ( HTable, HConstrainTable, HField
22− , hfield, htabulate, htraverse, hdicts, hspecs
23− )
24−import qualified Rel8.Schema.Kind as K
25−import Rel8.Schema.Null ( Sql, nullable )
26−import Rel8.Schema.Spec ( Spec( Spec ), SSpec(..) )
27−import Rel8.Type ( DBType, typeInformation )
28−
29−
30−type HType :: Type -> K.HTable
31−newtype HType a context = HType
32− { unHType :: context ('Spec '[] 'Required a)
33− }
34−
35−
36−type HTypeField :: Type -> Spec -> Type
37−data HTypeField a spec where
38− HTypeField :: HTypeField a ('Spec '[] 'Required a)
39−
40−
41−instance Sql DBType a => HTable (HType a) where
42− type HConstrainTable (HType a) c = c ('Spec '[] 'Required a)
43− type HField (HType a) = HTypeField a
44−
45− hfield (HType a) HTypeField = a
46− htabulate f = HType $ f HTypeField
47− htraverse f (HType a) = HType <$> f a
48− hdicts = HType Dict
49− hspecs = HType SSpec
50− { labels = SNil
51− , necessity = SRequired
52− , info = typeInformation
53− , nullity = nullable
54− }
55−
56− {-# INLINABLE hfield #-}
57− {-# INLINABLE htabulate #-}
58− {-# INLINABLE htraverse #-}
59− {-# INLINABLE hdicts #-}
60− {-# INLINABLE hspecs #-}
src/Rel8/Schema/Insert.hs+1−1
@@ -36,7 +36,7 @@ import Rel8.Schema.Context.Nullify
3636 ( Nullifiable, encodeTag, decodeTag, nullifier, unnullifier
3737 , runTag, unnull
3838 )
39−import Rel8.Schema.HTable.Type ( HType( HType ) )
39+import Rel8.Schema.HTable.Identity ( HIdentity( HType ), HType )
4040import Rel8.Schema.Name ( Name, Selects )
4141import Rel8.Schema.Null ( Sql )
4242import Rel8.Schema.Reify ( notReify )
src/Rel8/Schema/Name.hs+1−1
@@ -29,7 +29,7 @@ import Prelude
2929import Rel8.Expr ( Expr )
3030import Rel8.Schema.Context ( Interpretation, Col )
3131import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
32−import Rel8.Schema.HTable.Type ( HType( HType ) )
32+import Rel8.Schema.HTable.Identity ( HIdentity( HType ), HType )
3333import Rel8.Schema.Null ( Sql )
3434import Rel8.Schema.Reify ( notReify )
3535import Rel8.Schema.Result ( Result )
src/Rel8/Table.hs+1−2
@@ -44,14 +44,13 @@ import Rel8.Generic.Reify ( ARep )
4444import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
4545import Rel8.Schema.HTable ( HTable )
4646import Rel8.Schema.HTable.Either ( HEitherTable(..) )
47−import Rel8.Schema.HTable.Identity ( HIdentity(..) )
47+import Rel8.Schema.HTable.Identity ( HIdentity(..), HType )
4848import Rel8.Schema.HTable.Label ( hlabel, hunlabel )
4949import Rel8.Schema.HTable.List ( HListTable )
5050import Rel8.Schema.HTable.Maybe ( HMaybeTable(..) )
5151import Rel8.Schema.HTable.NonEmpty ( HNonEmptyTable )
5252import Rel8.Schema.HTable.Nullify ( hnulls, hnullify, hunnullify )
5353import Rel8.Schema.HTable.These ( HTheseTable(..) )
54−import Rel8.Schema.HTable.Type ( HType( HType ) )
5554import Rel8.Schema.HTable.Vectorize ( hvectorize, hunvectorize )
5655import qualified Rel8.Schema.Kind as K
5756import Rel8.Schema.Null ( Sql )
src/Rel8/Table/Eq.hs+1−1
@@ -43,7 +43,7 @@ import Rel8.Schema.HTable
4343 ( HTable, HConstrainTable
4444 , htabulateA, hfield, hdicts
4545 )
46−import Rel8.Schema.HTable.Type ( HType(..) )
46+import Rel8.Schema.HTable.Identity ( HIdentity( HType ) )
4747import Rel8.Schema.Null ( Sql )
4848import Rel8.Schema.Spec.ConstrainDBType ( ConstrainDBType, nullifier )
4949import Rel8.Table ( Table, Columns, toColumns, TColumns )
src/Rel8/Table/Ord.hs+1−1
@@ -41,7 +41,7 @@ import Rel8.Schema.HTable
4141 ( HTable, HConstrainTable
4242 , htabulateA, hfield, hdicts
4343 )
44−import Rel8.Schema.HTable.Type ( HType(..) )
44+import Rel8.Schema.HTable.Identity ( HIdentity( HType ) )
4545import Rel8.Schema.Null (Sql)
4646import Rel8.Schema.Spec.ConstrainDBType ( ConstrainDBType, nullifier )
4747import Rel8.Table ( Columns, toColumns, TColumns )
src/Rel8/Table/Serialize.hs+1−1
@@ -40,7 +40,7 @@ import Rel8.Generic.Table
4040 )
4141import Rel8.Kind.Algebra ( KnownAlgebra )
4242import Rel8.Schema.HTable ( HTable, htabulate, htabulateA, hfield, hspecs )
43−import Rel8.Schema.HTable.Type ( HType(..) )
43+import Rel8.Schema.HTable.Identity ( HIdentity( HType ) )
4444import Rel8.Schema.Null ( NotNull, Sql )
4545import Rel8.Schema.Result ( Col( Result ), Result )
4646import Rel8.Schema.Spec ( SSpec(..), KnownSpec )