on master help sign in
Fold Rel8.Schema.Context.Result into Rel8.Schema.Context
356d591Shane O'Brien
rel8.cabal−1
@@ -101,7 +101,6 @@ library
101 Rel8.Schema.Context
101 Rel8.Schema.Context
102 Rel8.Schema.Context.Label
102 Rel8.Schema.Context.Label
103 Rel8.Schema.Context.Nullify
103 Rel8.Schema.Context.Nullify
104− Rel8.Schema.Context.Result
105 Rel8.Schema.Dict
104 Rel8.Schema.Dict
106 Rel8.Schema.Field
105 Rel8.Schema.Field
107 Rel8.Schema.HKD
106 Rel8.Schema.HKD
src/Rel8.hs+1−1
@@ -286,7 +286,7 @@ import Rel8.Schema.HKD
286import Rel8.Schema.HTable
286import Rel8.Schema.HTable
287import Rel8.Schema.Name
287import Rel8.Schema.Name
288import Rel8.Schema.Null hiding ( nullable )
288import Rel8.Schema.Null hiding ( nullable )
289−import Rel8.Schema.Result
289+import Rel8.Schema.Result ( Result )
290import Rel8.Schema.Table
290import Rel8.Schema.Table
291import Rel8.Statement.Delete
291import Rel8.Statement.Delete
292import Rel8.Statement.Insert
292import Rel8.Statement.Insert
src/Rel8/Generic/Table/ADT.hs+4−2
@@ -37,7 +37,6 @@ import Rel8.Generic.Table.Record
37 , GToExprs, gfromResult, gtoResult
37 , GToExprs, gfromResult, gtoResult
38 )
38 )
39import Rel8.Schema.Context.Label ( HLabelable, hlabeler, labeler, unlabeler )
39import Rel8.Schema.Context.Label ( HLabelable, hlabeler, labeler, unlabeler )
40−import Rel8.Schema.Context.Result ( null, nullifier, unnullifier )
41import Rel8.Schema.HTable ( HTable, hmap )
40import Rel8.Schema.HTable ( HTable, hmap )
42import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
41import Rel8.Schema.HTable.Label ( HLabel, hlabel, hunlabel )
43import Rel8.Schema.HTable.Nullify ( HNullify, hnulls, hnullify, hunnullify )
42import Rel8.Schema.HTable.Nullify ( HNullify, hnulls, hnullify, hunnullify )
@@ -46,7 +45,10 @@ import Rel8.Schema.HTable.Type ( HType( HType ) )
46import qualified Rel8.Schema.Kind as K
45import qualified Rel8.Schema.Kind as K
47import Rel8.Schema.Null ( Nullify )
46import Rel8.Schema.Null ( Nullify )
48import Rel8.Schema.Spec ( Spec( Spec ), SSpec )
47import 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+ )
50import Rel8.Type.Tag ( Tag( Tag ) )
52import Rel8.Type.Tag ( Tag( Tag ) )
51
53
52-- text
54-- 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 @@
1{-# language DataKinds #-}
1{-# language DataKinds #-}
2{-# language GADTs #-}
2{-# language GADTs #-}
3+{-# language NamedFieldPuns #-}
3{-# language StandaloneKindSignatures #-}
4{-# language StandaloneKindSignatures #-}
4{-# language TypeFamilies #-}
5{-# language TypeFamilies #-}
5
6
6module Rel8.Schema.Result
7module Rel8.Schema.Result
7 ( Col( Result ), Result
8 ( Col( Result ), Result
9+ , relabel
10+ , null, nullifier, unnullifier
11+ , vectorizer, unvectorizer
8 )
12 )
9where
13where
10
14
11-- base
15-- base
12−import Prelude ()
16+import Prelude hiding ( null )
13
17
14-- rel8
18-- rel8
15import Rel8.Schema.Context ( Interpretation( Col ) )
19import Rel8.Schema.Context ( Interpretation( Col ) )
20+import Rel8.Schema.HTable.Identity ( HIdentity(..) )
16import Rel8.Schema.Kind ( Context )
21import 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(..) )
18
24
19
25
20type Result :: Context
26type Result :: Context
@@ -24,3 +30,46 @@ data Result a
24instance Interpretation Result where
30instance Interpretation Result where
25 data Col Result _spec where
31 data Col Result _spec where
26 Result :: a -> Col Result ('Spec labels necessity a)
32 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
42import Rel8.Generic.Record ( Record(..) )
42import Rel8.Generic.Record ( Record(..) )
43import Rel8.Generic.Reify ( ARep )
43import Rel8.Generic.Reify ( ARep )
44import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
44import Rel8.Schema.Context.Label ( Labelable, labeler, unlabeler )
45−import Rel8.Schema.Context.Result
46− ( relabel
47− , null, nullifier, unnullifier
48− , vectorizer, unvectorizer
49− )
50import Rel8.Schema.HTable ( HTable )
45import Rel8.Schema.HTable ( HTable )
51import Rel8.Schema.HTable.Either ( HEitherTable(..) )
46import Rel8.Schema.HTable.Either ( HEitherTable(..) )
52import Rel8.Schema.HTable.Identity ( HIdentity(..) )
47import Rel8.Schema.HTable.Identity ( HIdentity(..) )
@@ -65,7 +60,12 @@ import Rel8.Schema.Reify
65 , UnwrapReify
60 , UnwrapReify
66 , notReify
61 , notReify
67 )
62 )
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+ )
69import Rel8.Schema.Spec ( KnownSpec )
69import Rel8.Schema.Spec ( KnownSpec )
70import Rel8.Type ( DBType )
70import Rel8.Type ( DBType )
71import Rel8.Type.Tag ( EitherTag( IsLeft, IsRight ), MaybeTag( IsJust ) )
71import Rel8.Type.Tag ( EitherTag( IsLeft, IsRight ), MaybeTag( IsJust ) )