on master help sign in
Fold Rel8.Schema.Context.Result into Rel8.Schema.Context
commit356d591c6c11d4a28bdd42d5931498d29efdfeb3 authorShane O'Brien <shane.obrien@circuithub.com> dateFri 30 Apr 2021, 15:19 (6 years ago) parentc8341c1
6 files changed+62−74
rel8.cabal−1 src/Rel8.hs+1−1 src/Rel8/Generic/Table/ADT.hs+4−2 src/Rel8/Schema/Context/Result.hs−62 src/Rel8/Schema/Result.hs+51−2 src/Rel8/Table.hs+6−6
rel8.cabal−1
@@ -101,7 +101,6 @@ library
101101 Rel8.Schema.Context
102102 Rel8.Schema.Context.Label
103103 Rel8.Schema.Context.Nullify
104− Rel8.Schema.Context.Result
105104 Rel8.Schema.Dict
106105 Rel8.Schema.Field
107106 Rel8.Schema.HKD
src/Rel8.hs+1−1
@@ -286,7 +286,7 @@ import Rel8.Schema.HKD
286286import Rel8.Schema.HTable
287287import Rel8.Schema.Name
288288import Rel8.Schema.Null hiding ( nullable )
289−import Rel8.Schema.Result
289+import Rel8.Schema.Result ( Result )
290290import Rel8.Schema.Table
291291import Rel8.Statement.Delete
292292import Rel8.Statement.Insert
src/Rel8/Generic/Table/ADT.hs+4−2
@@ -37,7 +37,6 @@ import Rel8.Generic.Table.Record
3737 , GToExprs, gfromResult, gtoResult
3838 )
3939import Rel8.Schema.Context.Label ( HLabelable, hlabeler, labeler, unlabeler )
40−import Rel8.Schema.Context.Result ( null, nullifier, unnullifier )
4140import Rel8.Schema.HTable ( HTable, hmap )
4241import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
4342import Rel8.Schema.HTable.Nullify ( HNullify, hnulls, hnullify, hunnullify )
@@ -46,7 +45,10 @@ import Rel8.Schema.HTable.Type ( HType( HType ) )
4645import qualified Rel8.Schema.Kind as K
4746import Rel8.Schema.Null ( Nullify )
4847import Rel8.Schema.Spec ( Spec( Spec ), SSpec )
49−import Rel8.Schema.Result ( Col( Result ), Result )
48+import Rel8.Schema.Result
49+ ( Col( Result ), Result
50+ , null, nullifier, unnullifier
51+ )
5052import Rel8.Type.Tag ( Tag( Tag ) )
5153
5254-- text
src/Rel8/Schema/Context/Result.hsdeleted−62
@@ -1,62 +0,0 @@
1−{-# language DataKinds #-}
2−{-# language NamedFieldPuns #-}
3−{-# language TypeFamilies #-}
4−
5−module Rel8.Schema.Context.Result
6− ( relabel
7− , null, nullifier, unnullifier
8− , vectorizer, unvectorizer
9− )
10−where
11−
12−-- base
13−import Prelude hiding ( null )
14−
15−-- rel8
16−import Rel8.Schema.HTable.Identity ( HIdentity(..) )
17−import Rel8.Schema.Null ( Nullify, Nullity( Null, NotNull ) )
18−import Rel8.Schema.Result ( Col( Result ), Result )
19−import Rel8.Schema.Spec ( Spec( Spec ), SSpec(..) )
20−
21−
22−relabel :: ()
23− => HIdentity ('Spec labels necessity a) (Col Result)
24− -> HIdentity ('Spec relabels necessity a) (Col Result)
25−relabel (HIdentity (Result a)) = HIdentity (Result a)
26−
27−
28−null :: Col Result ('Spec labels necessity (Maybe a))
29−null = Result Nothing
30−
31−
32−nullifier :: ()
33− => SSpec ('Spec labels necessity a)
34− -> Col Result ('Spec labels necessity a)
35− -> Col Result ('Spec labels necessity (Nullify a))
36−nullifier SSpec {nullity} (Result a) = Result $ case nullity of
37− Null -> a
38− NotNull -> Just a
39−
40−
41−unnullifier :: ()
42− => SSpec ('Spec labels necessity a)
43− -> Col Result ('Spec labels necessity (Nullify a))
44− -> Maybe (Col Result ('Spec labels necessity a))
45−unnullifier SSpec {nullity} (Result a) =
46− case nullity of
47− Null -> pure $ Result a
48− NotNull -> Result <$> a
49−
50−
51−vectorizer :: Functor f
52− => SSpec ('Spec labels necessity a)
53− -> f (Col Result ('Spec labels necessity a))
54− -> Col Result ('Spec labels necessity (f a))
55−vectorizer _ = Result . fmap (\(Result a) -> a)
56−
57−
58−unvectorizer :: Functor f
59− => SSpec ('Spec labels necessity a)
60− -> Col Result ('Spec labels necessity (f a))
61− -> f (Col Result ('Spec labels necessity a))
62−unvectorizer _ (Result results) = Result <$> results
src/Rel8/Schema/Result.hs+51−2
@@ -1,20 +1,26 @@
11{-# language DataKinds #-}
22{-# language GADTs #-}
3+{-# language NamedFieldPuns #-}
34{-# language StandaloneKindSignatures #-}
45{-# language TypeFamilies #-}
56
67module Rel8.Schema.Result
78 ( Col( Result ), Result
9+ , relabel
10+ , null, nullifier, unnullifier
11+ , vectorizer, unvectorizer
812 )
913where
1014
1115-- base
12−import Prelude ()
16+import Prelude hiding ( null )
1317
1418-- rel8
1519import Rel8.Schema.Context ( Interpretation( Col ) )
20+import Rel8.Schema.HTable.Identity ( HIdentity(..) )
1621import Rel8.Schema.Kind ( Context )
17−import Rel8.Schema.Spec ( Spec( Spec ) )
22+import Rel8.Schema.Null ( Nullify, Nullity( Null, NotNull ) )
23+import Rel8.Schema.Spec ( Spec( Spec ), SSpec(..) )
1824
1925
2026type Result :: Context
@@ -24,3 +30,46 @@ data Result a
2430instance Interpretation Result where
2531 data Col Result _spec where
2632 Result :: a -> Col Result ('Spec labels necessity a)
33+
34+
35+relabel :: ()
36+ => HIdentity ('Spec labels necessity a) (Col Result)
37+ -> HIdentity ('Spec relabels necessity a) (Col Result)
38+relabel (HIdentity (Result a)) = HIdentity (Result a)
39+
40+
41+null :: Col Result ('Spec labels necessity (Maybe a))
42+null = Result Nothing
43+
44+
45+nullifier :: ()
46+ => SSpec ('Spec labels necessity a)
47+ -> Col Result ('Spec labels necessity a)
48+ -> Col Result ('Spec labels necessity (Nullify a))
49+nullifier SSpec {nullity} (Result a) = Result $ case nullity of
50+ Null -> a
51+ NotNull -> Just a
52+
53+
54+unnullifier :: ()
55+ => SSpec ('Spec labels necessity a)
56+ -> Col Result ('Spec labels necessity (Nullify a))
57+ -> Maybe (Col Result ('Spec labels necessity a))
58+unnullifier SSpec {nullity} (Result a) =
59+ case nullity of
60+ Null -> pure $ Result a
61+ NotNull -> Result <$> a
62+
63+
64+vectorizer :: Functor f
65+ => SSpec ('Spec labels necessity a)
66+ -> f (Col Result ('Spec labels necessity a))
67+ -> Col Result ('Spec labels necessity (f a))
68+vectorizer _ = Result . fmap (\(Result a) -> a)
69+
70+
71+unvectorizer :: Functor f
72+ => SSpec ('Spec labels necessity a)
73+ -> Col Result ('Spec labels necessity (f a))
74+ -> f (Col Result ('Spec labels necessity a))
75+unvectorizer _ (Result results) = Result <$> results
src/Rel8/Table.hs+6−6
@@ -42,11 +42,6 @@ import Rel8.Generic.Table
4242import Rel8.Generic.Record ( Record(..) )
4343import Rel8.Generic.Reify ( ARep )
4444import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
45−import Rel8.Schema.Context.Result
46− ( relabel
47− , null, nullifier, unnullifier
48− , vectorizer, unvectorizer
49− )
5045import Rel8.Schema.HTable ( HTable )
5146import Rel8.Schema.HTable.Either ( HEitherTable(..) )
5247import Rel8.Schema.HTable.Identity ( HIdentity(..) )
@@ -65,7 +60,12 @@ import Rel8.Schema.Reify
6560 , UnwrapReify
6661 , notReify
6762 )
68−import Rel8.Schema.Result ( Col( Result ), Result )
63+import Rel8.Schema.Result
64+ ( Col( Result ), Result
65+ , relabel
66+ , null, nullifier, unnullifier
67+ , vectorizer, unvectorizer
68+ )
6969import Rel8.Schema.Spec ( KnownSpec )
7070import Rel8.Type ( DBType )
7171import Rel8.Type.Tag ( EitherTag( IsLeft, IsRight ), MaybeTag( IsJust ) )