11module SqlSquared
22 ( Sql
3+ , SqlQuery
4+ , SqlModule
35 , print
6+ , printQuery
7+ , printModule
48 , encodeJson
9+ , encodeJsonQuery
10+ , encodeJsonModule
511 , decodeJson
12+ , decodeJsonQuery
13+ , decodeJsonModule
614 , arbitrarySqlOfSize
15+ , arbitrarySqlQueryOfSize
16+ , arbitrarySqlModuleOfSize
717 , module Sig
818 , module Lenses
919 , module Constructors
@@ -16,6 +26,7 @@ import Data.Argonaut as J
1626import Data.Either (Either )
1727import Data.Functor.Mu (Mu )
1828import Data.Json.Extended as EJ
29+ import Data.Traversable (traverse )
1930
2031import Matryoshka (cata , anaM )
2132
@@ -28,14 +39,42 @@ import Test.StrongCheck.Gen as Gen
2839
2940type Sql = Mu (Sig.SqlF EJ.EJsonF )
3041
42+ type SqlQuery = Sig.SqlQueryF Sql
43+
44+ type SqlModule = Sig.SqlModuleF Sql
45+
3146print ∷ Sql → String
3247print = cata $ Sig .printSqlF EJ .renderEJsonF
3348
49+ printQuery ∷ SqlQuery → String
50+ printQuery = Sig .printSqlQueryF <<< map print
51+
52+ printModule ∷ SqlModule → String
53+ printModule = Sig .printSqlModuleF <<< map print
54+
3455encodeJson ∷ Sql → J.Json
3556encodeJson = cata $ Sig .encodeJsonSqlF EJ .encodeJsonEJsonF
3657
58+ encodeJsonQuery ∷ SqlQuery → J.Json
59+ encodeJsonQuery = Sig .encodeJsonSqlQueryF <<< map encodeJson
60+
61+ encodeJsonModule ∷ SqlModule → J.Json
62+ encodeJsonModule = Sig .encodeJsonSqlModuleF <<< map encodeJson
63+
3764decodeJson ∷ J.Json → Either String Sql
3865decodeJson = anaM $ Sig .decodeJsonSqlF EJ .decodeJsonEJsonF
3966
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+
4073arbitrarySqlOfSize ∷ Int → Gen.Gen Sql
4174arbitrarySqlOfSize = 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