Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 81d2ef1

Browse files
authored
Add query/module productions (#12)
* Add query/module productions * Split query/module. Fix decl parser * Modules can't end in ;
1 parent 21b779b commit 81d2ef1

File tree

6 files changed

+419
-81
lines changed

6 files changed

+419
-81
lines changed

src/SqlSquare.purs

+39
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
module 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
1626
import Data.Either (Either)
1727
import Data.Functor.Mu (Mu)
1828
import Data.Json.Extended as EJ
29+
import Data.Traversable (traverse)
1930

2031
import Matryoshka (cata, anaM)
2132

@@ -28,14 +39,42 @@ import Test.StrongCheck.Gen as Gen
2839

2940
type Sql = Mu (Sig.SqlF EJ.EJsonF)
3041

42+
type SqlQuery = Sig.SqlQueryF Sql
43+
44+
type SqlModule = Sig.SqlModuleF Sql
45+
3146
print Sql String
3247
print = 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+
3455
encodeJson Sql J.Json
3556
encodeJson = 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+
3764
decodeJson J.Json Either String Sql
3865
decodeJson = 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+
4073
arbitrarySqlOfSize Int Gen.Gen Sql
4174
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

Comments
 (0)