98 |
(s/def ::property keyword?)
99 | (s/def ::special-property #{'*})
100 | (s/def ::ident-value (s/with-gen any? (default-gen ::gen-ident-value)))
101 | (s/def ::ident (s/with-gen (s/tuple ::property ::ident-value) (default-gen ::gen-ident)))
102 | (s/def ::join-key (s/or :prop ::property, :ident ::ident, :param-exp ::join-key-param-expr))
103 | (s/def ::join (s/map-of ::join-key ::join-query, :count 1, :conform-keys true))
104 | (s/def ::union (s/map-of ::property ::query, :min-count 1, :conform-keys true))
105 | (s/def ::recursion-depth (s/with-gen nat-int? (default-gen ::gen-depth)))
106 | (s/def ::recursion (s/or :depth ::recursion-depth, :unbounded #{'...}))
107 |
108 | (s/def ::join-query
109 | (s/with-gen
110 | (s/or :query ::query
111 | :union ::union
112 | :recursion ::recursion)
113 | (default-gen ::gen-join-query)))
114 |
115 | (s/def ::params
116 | (s/with-gen map? (default-gen ::gen-params)))
117 |
118 | (s/def ::param-expr-key
119 | (s/with-gen
120 | (s/or :prop ::property
121 | :join ::join
122 | :ident ::ident)
123 | (default-gen ::gen-param-expr-key)))
124 |
125 | (s/def ::param-expr
126 | (s/with-gen
127 | (s/and seq? (s/cat :expr ::param-expr-key :params (s/? ::params)))
128 | (default-gen ::gen-param-expr)))
129 |
130 | (s/def ::join-key-param-key (s/or :prop ::property :ident ::ident))
131 |
132 | (s/def ::join-key-param-expr
133 | (s/with-gen
134 | (s/and seq? (s/cat :expr ::join-key-param-key :params (s/? ::params)))
135 | (default-gen ::gen-join-key-param-expr)))
136 |
137 | (s/def ::mutation-key (s/with-gen symbol? (default-gen ::gen-mutation-key)))
138 |
139 | (s/def ::mutation-expr
140 | (s/with-gen
141 | (s/and seq? (s/cat :mutate-key ::mutation-key :params (s/? ::params)))
142 | (default-gen ::gen-mutation-expr)))
143 |
144 | (s/def ::mutation-join
145 | (s/map-of ::mutation-expr ::query :count 1 :conform-keys true))
146 |
147 | (s/def ::mutation
148 | (s/or :mutation ::mutation-expr
149 | :mutation-join ::mutation-join))
150 |
151 | (s/def ::query-expr
152 | (s/or :prop ::property
153 | :join ::join
154 | :ident ::ident
155 | :mutation ::mutation
156 | :param-exp ::param-expr
157 | :special ::special-property))
158 |
159 | (s/def ::query
160 | (s/coll-of ::query-expr :kind vector? :gen (default-gen ::gen-query)))
161 |