1
1
module SqlSquared
2
2
( Sql
3
+ , SqlQuery
4
+ , SqlModule
3
5
, print
6
+ , printQuery
7
+ , printModule
4
8
, encodeJson
9
+ , encodeJsonQuery
10
+ , encodeJsonModule
5
11
, decodeJson
12
+ , decodeJsonQuery
13
+ , decodeJsonModule
6
14
, arbitrarySqlOfSize
15
+ , arbitrarySqlQueryOfSize
16
+ , arbitrarySqlModuleOfSize
7
17
, module Sig
8
18
, module Lenses
9
19
, module Constructors
@@ -16,6 +26,7 @@ import Data.Argonaut as J
16
26
import Data.Either (Either )
17
27
import Data.Functor.Mu (Mu )
18
28
import Data.Json.Extended as EJ
29
+ import Data.Traversable (traverse )
19
30
20
31
import Matryoshka (cata , anaM )
21
32
@@ -28,14 +39,42 @@ import Test.StrongCheck.Gen as Gen
28
39
29
40
type Sql = Mu (Sig.SqlF EJ.EJsonF )
30
41
42
+ type SqlQuery = Sig.SqlQueryF Sql
43
+
44
+ type SqlModule = Sig.SqlModuleF Sql
45
+
31
46
print ∷ Sql → String
32
47
print = cata $ Sig .printSqlF EJ .renderEJsonF
33
48
49
+ printQuery ∷ SqlQuery → String
50
+ printQuery = Sig .printSqlQueryF <<< map print
51
+
52
+ printModule ∷ SqlModule → String
53
+ printModule = Sig .printSqlModuleF <<< map print
54
+
34
55
encodeJson ∷ Sql → J.Json
35
56
encodeJson = cata $ Sig .encodeJsonSqlF EJ .encodeJsonEJsonF
36
57
58
+ encodeJsonQuery ∷ SqlQuery → J.Json
59
+ encodeJsonQuery = Sig .encodeJsonSqlQueryF <<< map encodeJson
60
+
61
+ encodeJsonModule ∷ SqlModule → J.Json
62
+ encodeJsonModule = Sig .encodeJsonSqlModuleF <<< map encodeJson
63
+
37
64
decodeJson ∷ J.Json → Either String Sql
38
65
decodeJson = anaM $ Sig .decodeJsonSqlF EJ .decodeJsonEJsonF
39
66
67
+ decodeJsonQuery ∷ J.Json → Either String SqlQuery
68
+ decodeJsonQuery = traverse decodeJson <=< Sig .decodeJsonSqlQueryF
69
+
70
+ decodeJsonModule ∷ J.Json → Either String SqlModule
71
+ decodeJsonModule = traverse decodeJson <=< Sig .decodeJsonSqlModuleF
72
+
40
73
arbitrarySqlOfSize ∷ Int → Gen.Gen Sql
41
74
arbitrarySqlOfSize = anaM $ Sig .arbitrarySqlF EJ .arbitraryEJsonF
75
+
76
+ arbitrarySqlQueryOfSize ∷ Int → Gen.Gen SqlQuery
77
+ arbitrarySqlQueryOfSize = traverse arbitrarySqlOfSize <=< Sig .arbitrarySqlQueryF
78
+
79
+ arbitrarySqlModuleOfSize ∷ Int → Gen.Gen SqlModule
80
+ arbitrarySqlModuleOfSize = traverse arbitrarySqlOfSize <=< Sig .arbitrarySqlModuleF
0 commit comments