@effect-app/infra 0.210.10 → 0.211.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/_cjs/services/RepositoryBase.cjs +15 -34
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos/query.cjs +0 -137
- package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +5 -35
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +0 -1
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +0 -6
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +1 -106
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/dist/services/RepositoryBase.d.ts +3 -60
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +28 -42
- package/dist/services/Store/Cosmos/query.d.ts +1 -45
- package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/services/Store/Cosmos/query.js +1 -145
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +18 -61
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +1 -2
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +2 -10
- package/dist/services/Store/filterApi/query.d.ts +1 -1
- package/dist/services/Store/filterApi/query.d.ts.map +1 -1
- package/dist/services/Store/service.d.ts +1 -38
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +1 -1
- package/dist/services/Store/utils.d.ts +1 -6
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +3 -140
- package/dist/services/query/dsl.d.ts +2 -2
- package/dist/services/query/dsl.d.ts.map +1 -1
- package/package.json +4 -14
- package/src/services/RepositoryBase.ts +50 -75
- package/src/services/Store/Cosmos/query.ts +1 -203
- package/src/services/Store/Cosmos.ts +38 -135
- package/src/services/Store/Disk.ts +0 -1
- package/src/services/Store/Memory.ts +2 -17
- package/src/services/Store/Redis.ts.bak +2 -4
- package/src/services/Store/filterApi/query.ts +2 -2
- package/src/services/Store/service.ts +1 -35
- package/src/services/Store/utils.ts +3 -152
- package/src/services/query/dsl.ts +4 -4
- package/_cjs/filter.cjs +0 -363
- package/_cjs/filter.cjs.map +0 -1
- package/_cjs/services/Store/Cosmos.test.cjs +0 -55
- package/_cjs/services/Store/Cosmos.test.cjs.map +0 -1
- package/_cjs/services/Store/codeFilter.test.cjs +0 -63
- package/_cjs/services/Store/codeFilter.test.cjs.map +0 -1
- package/dist/filter.d.ts +0 -142
- package/dist/filter.d.ts.map +0 -1
- package/dist/filter.js +0 -248
- package/dist/services/Store/Cosmos.test.d.ts.map +0 -1
- package/dist/services/Store/codeFilter.test.d.ts.map +0 -1
- package/src/filter.ts +0 -420
- package/src/services/Store/Cosmos.test.ts +0 -94
- package/src/services/Store/codeFilter.test.ts +0 -166
package/src/filter.ts
DELETED
|
@@ -1,420 +0,0 @@
|
|
|
1
|
-
import type { FieldValues } from "./filter/types/fields.js"
|
|
2
|
-
import type { FieldPath, FieldPathValue } from "./filter/types/path/eager.js"
|
|
3
|
-
import type { SupportedValues, Where } from "./services/Store.js"
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* the function defaults to "eq", but has additional properties for notEq, in and notIn
|
|
7
|
-
*/
|
|
8
|
-
export interface WhereFilter<TFieldValues extends FieldValues>
|
|
9
|
-
extends ReturnType<typeof makeWhereFilter_<TFieldValues>>
|
|
10
|
-
{}
|
|
11
|
-
export function makeWhereFilter<TFieldValues extends FieldValues>() {
|
|
12
|
-
const f = makeWhereFilter_<TFieldValues>()
|
|
13
|
-
return f as WhereFilter<TFieldValues>
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function makeHelpers<TFieldValues extends FieldValues>() {
|
|
17
|
-
const helpers = makeHelpers_<TFieldValues>()
|
|
18
|
-
return helpers as WhereHelpers<TFieldValues>
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface WhereHelpers<TFieldValues extends FieldValues> extends ReturnType<typeof makeHelpers_<TFieldValues>> {}
|
|
22
|
-
|
|
23
|
-
function makeHelpers_<TFieldValues extends FieldValues>() {
|
|
24
|
-
type Paths = FieldPath<TFieldValues>
|
|
25
|
-
type Value<TFieldName extends Paths> = FieldPathValue<TFieldValues, TFieldName>
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
in<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
29
|
-
this: void,
|
|
30
|
-
path: TFieldName,
|
|
31
|
-
value: readonly V[]
|
|
32
|
-
) {
|
|
33
|
-
return { key: path, value, t: "in" as const }
|
|
34
|
-
},
|
|
35
|
-
notIn<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
36
|
-
this: void,
|
|
37
|
-
path: TFieldName,
|
|
38
|
-
value: readonly V[]
|
|
39
|
-
) {
|
|
40
|
-
return { key: path, value, t: "not-in" as const }
|
|
41
|
-
},
|
|
42
|
-
includes<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
43
|
-
this: void,
|
|
44
|
-
path: TFieldName,
|
|
45
|
-
value: V
|
|
46
|
-
) {
|
|
47
|
-
return { key: path, value, t: "includes" as const }
|
|
48
|
-
},
|
|
49
|
-
notIncludes<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
50
|
-
this: void,
|
|
51
|
-
path: TFieldName,
|
|
52
|
-
value: V
|
|
53
|
-
) {
|
|
54
|
-
return { key: path, value, t: "not-includes" as const }
|
|
55
|
-
},
|
|
56
|
-
eq<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
57
|
-
this: void,
|
|
58
|
-
path: TFieldName,
|
|
59
|
-
value: V
|
|
60
|
-
) {
|
|
61
|
-
return { key: path, value, t: "eq" as const }
|
|
62
|
-
},
|
|
63
|
-
notEq<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
64
|
-
this: void,
|
|
65
|
-
path: TFieldName,
|
|
66
|
-
value: V
|
|
67
|
-
) {
|
|
68
|
-
return { key: path, value, t: "not-eq" as const }
|
|
69
|
-
},
|
|
70
|
-
gt<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
71
|
-
this: void,
|
|
72
|
-
path: TFieldName,
|
|
73
|
-
value: V
|
|
74
|
-
) {
|
|
75
|
-
return { key: path, value, t: "gt" as const }
|
|
76
|
-
},
|
|
77
|
-
gte<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
78
|
-
this: void,
|
|
79
|
-
path: TFieldName,
|
|
80
|
-
value: V
|
|
81
|
-
) {
|
|
82
|
-
return { key: path, value, t: "gte" as const }
|
|
83
|
-
},
|
|
84
|
-
lt<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
85
|
-
this: void,
|
|
86
|
-
path: TFieldName,
|
|
87
|
-
value: V
|
|
88
|
-
) {
|
|
89
|
-
return { key: path, value, t: "lt" as const }
|
|
90
|
-
},
|
|
91
|
-
lte<TFieldName extends Paths, V extends Value<TFieldName>>(
|
|
92
|
-
this: void,
|
|
93
|
-
path: TFieldName,
|
|
94
|
-
value: V
|
|
95
|
-
) {
|
|
96
|
-
return { key: path, value, t: "lte" as const }
|
|
97
|
-
}
|
|
98
|
-
} satisfies Record<string, (...args: any[]) => Where>
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function makeWhereFilter_<TFieldValues extends FieldValues>() {
|
|
102
|
-
const helpers = makeHelpers<TFieldValues>()
|
|
103
|
-
const f = Object.assign(helpers.eq, helpers)
|
|
104
|
-
return f
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export type WhereValue<
|
|
108
|
-
T extends
|
|
109
|
-
| "eq"
|
|
110
|
-
| "not-eq"
|
|
111
|
-
| "lt"
|
|
112
|
-
| "gt"
|
|
113
|
-
| "lte"
|
|
114
|
-
| "gte"
|
|
115
|
-
| "starts-with"
|
|
116
|
-
| "ends-with"
|
|
117
|
-
| "contains"
|
|
118
|
-
| "not-starts-with"
|
|
119
|
-
| "not-ends-with"
|
|
120
|
-
| "not-contains"
|
|
121
|
-
| "in"
|
|
122
|
-
| "not-in"
|
|
123
|
-
| "includes"
|
|
124
|
-
| "not-includes",
|
|
125
|
-
A, // extends SupportedValues,
|
|
126
|
-
V extends A = A
|
|
127
|
-
> = { t: T; v: V }
|
|
128
|
-
|
|
129
|
-
export type WhereIn<T extends "in" | "not-in", V, Values extends readonly V[] = readonly V[]> = {
|
|
130
|
-
t: T
|
|
131
|
-
v: Values
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export function $in<A extends SupportedValues, Values extends readonly A[]>(
|
|
135
|
-
_: A,
|
|
136
|
-
...v: Values
|
|
137
|
-
): WhereIn<"in", A, Values> {
|
|
138
|
-
return $$in(v)
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
export function $notIn<A extends SupportedValues, Values extends readonly A[]>(
|
|
142
|
-
_: A,
|
|
143
|
-
...v: Values
|
|
144
|
-
): WhereIn<"not-in", A, Values> {
|
|
145
|
-
return $$notIn(v)
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
export function $is<A, V extends A>(_: A, v: V): WhereValue<"eq", A, V> {
|
|
149
|
-
return $$is(v)
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
export function $includes<A extends readonly any[], V extends A[number]>(_: A, v: V): WhereValue<"includes", A, V> {
|
|
153
|
-
return $$includes(v)
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
export function $notIncludes<A extends readonly any[], V extends A[number]>(
|
|
157
|
-
_: A,
|
|
158
|
-
v: V
|
|
159
|
-
): WhereValue<"not-includes", A, V> {
|
|
160
|
-
return $$notIncludes(v)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export function $isnt<A, V extends A>(_: A, v: V): WhereValue<"not-eq", A, V> {
|
|
164
|
-
return $$isnt(v)
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
export function $gt<A, V extends A>(_: A, v: V): WhereValue<"gt", A, V> {
|
|
168
|
-
return $$gt(v)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
export function $gte<A, V extends A>(_: A, v: V): WhereValue<"gte", A, V> {
|
|
172
|
-
return $$gte(v)
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export function $lt<A, V extends A>(_: A, v: V): WhereValue<"lt", A, V> {
|
|
176
|
-
return $$lt(v)
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
export function $lte<A, V extends A>(_: A, v: V): WhereValue<"lte", A, V> {
|
|
180
|
-
return $$lte(v)
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
function $is__<V extends A, A>(v: V) {
|
|
184
|
-
return (_: A) => $is(_, v)
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function $isnt__<V extends A, A>(v: V) {
|
|
188
|
-
return (_: A) => $isnt(_, v)
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
function $includes__<V extends A[number], A extends readonly any[]>(v: V) {
|
|
192
|
-
return (_: A) => $includes(_, v)
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
function $notIncludes__<V extends A[number], A extends readonly any[]>(v: V) {
|
|
196
|
-
return (_: A) => $notIncludes(_, v)
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
function $lt__<V extends A, A>(v: V) {
|
|
200
|
-
return (_: A) => $lt(_, v)
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
function $lte__<V extends A, A>(v: V) {
|
|
204
|
-
return (_: A) => $lte(_, v)
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
function $gt__<V extends A, A>(v: V) {
|
|
208
|
-
return (_: A) => $gt(_, v)
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
function $gte__<V extends A, A>(v: V) {
|
|
212
|
-
return (_: A) => $gte(_, v)
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
function $in__<A extends SupportedValues, Values extends readonly A[]>(
|
|
216
|
-
...v: Values
|
|
217
|
-
) {
|
|
218
|
-
return (_: A) => $in(_, ...v)
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
function $notIn__<A extends SupportedValues, Values extends readonly A[]>(
|
|
222
|
-
...v: Values
|
|
223
|
-
) {
|
|
224
|
-
return (_: A) => $notIn(_, ...v)
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
function $startsWith__<V extends A, A extends string>(v: V) {
|
|
228
|
-
return (_: A) => $startsWith(_, v)
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function $endsWith__<V extends A, A extends string>(v: V) {
|
|
232
|
-
return (_: A) => $endsWith(_, v)
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
function $contains__<V extends A, A extends string>(v: V) {
|
|
236
|
-
return (_: A) => $contains(_, v)
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
export const Filters = {
|
|
240
|
-
is: $is__,
|
|
241
|
-
isnt: $isnt__,
|
|
242
|
-
in: $in__,
|
|
243
|
-
notIn: $notIn__,
|
|
244
|
-
gt: $gt__,
|
|
245
|
-
gte: $gte__,
|
|
246
|
-
lt: $lt__,
|
|
247
|
-
lte: $lte__,
|
|
248
|
-
contains: $contains__,
|
|
249
|
-
endsWith: $endsWith__,
|
|
250
|
-
startsWith: $startsWith__,
|
|
251
|
-
includes: $includes__,
|
|
252
|
-
notIncludes: $notIncludes__
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
export function $notStartsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"not-starts-with", A, V> {
|
|
256
|
-
return $$notStartsWith(v)
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
export function $notEndsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"not-ends-with", A, V> {
|
|
260
|
-
return $$notEndsWith(v)
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
export function $notContains<A extends string, V extends A>(_: A, v: V): WhereValue<"not-contains", A, V> {
|
|
264
|
-
return $$notContains(v)
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
export function $startsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"starts-with", A, V> {
|
|
268
|
-
return $$startsWith(v)
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
export function $endsWith<A extends string, V extends A>(_: A, v: V): WhereValue<"ends-with", A, V> {
|
|
272
|
-
return $$endsWith(v)
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
export function $contains<A extends string, V extends A>(_: A, v: V): WhereValue<"contains", A, V> {
|
|
276
|
-
return $$contains(v)
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
function $$in<L extends readonly any[]>(v: L) {
|
|
280
|
-
return { t: "in" as const, v }
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
function $$notIn<L extends readonly any[]>(v: L) {
|
|
284
|
-
return { t: "not-in" as const, v }
|
|
285
|
-
}
|
|
286
|
-
function $$is<A>(v: A) {
|
|
287
|
-
return { t: "eq" as const, v }
|
|
288
|
-
}
|
|
289
|
-
function $$isnt<A>(v: A) {
|
|
290
|
-
return { t: "not-eq" as const, v }
|
|
291
|
-
}
|
|
292
|
-
function $$includes<A>(v: A) {
|
|
293
|
-
return { t: "includes" as const, v }
|
|
294
|
-
}
|
|
295
|
-
function $$notIncludes<A>(v: A) {
|
|
296
|
-
return { t: "not-includes" as const, v }
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
function $$lt<A>(v: A) {
|
|
300
|
-
return { t: "lt" as const, v }
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
function $$lte<A>(v: A) {
|
|
304
|
-
return { t: "lte" as const, v }
|
|
305
|
-
}
|
|
306
|
-
function $$gt<A>(v: A) {
|
|
307
|
-
return { t: "gt" as const, v }
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
function $$gte<A>(v: A) {
|
|
311
|
-
return { t: "gte" as const, v }
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
function $$contains<A extends string>(v: A) {
|
|
315
|
-
return { t: "contains" as const, v }
|
|
316
|
-
}
|
|
317
|
-
function $$startsWith<A extends string>(v: A) {
|
|
318
|
-
return { t: "starts-with" as const, v }
|
|
319
|
-
}
|
|
320
|
-
function $$endsWith<A extends string>(v: A) {
|
|
321
|
-
return { t: "ends-with" as const, v }
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
function $$notContains<A extends string>(v: A) {
|
|
325
|
-
return { t: "not-contains" as const, v }
|
|
326
|
-
}
|
|
327
|
-
function $$notStartsWith<A extends string>(v: A) {
|
|
328
|
-
return { t: "not-starts-with" as const, v }
|
|
329
|
-
}
|
|
330
|
-
function $$notEndsWith<A extends string>(v: A) {
|
|
331
|
-
return { t: "not-ends-with" as const, v }
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
type ValueType<V> = {
|
|
335
|
-
t: "in" | "not-in"
|
|
336
|
-
v: readonly V[]
|
|
337
|
-
} | { t: "eq" | "not-eq"; v: V }
|
|
338
|
-
|
|
339
|
-
type TType<T> = T extends ValueType<any> ? T["t"] : never
|
|
340
|
-
type VType<T> = T extends ValueType<any> ? T["v"] : never
|
|
341
|
-
|
|
342
|
-
function f(p: string, b: any) {
|
|
343
|
-
if (typeof b === "function") b = b(undefined)
|
|
344
|
-
const obj = typeof b === "object" && b !== null
|
|
345
|
-
return makeFilter(p, obj ? b.v : b, obj ? b.t ?? "eq" : "eq")
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
function makeFilter<T extends "in" | "not-in" | "eq" | "not-eq">(path: string, value: any, t: T) {
|
|
349
|
-
return { key: path, t, value }
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
type FIL<S, K extends string, T extends "in" | "not-in" | "eq" | "not-eq", V> = {
|
|
353
|
-
key: K
|
|
354
|
-
t: T
|
|
355
|
-
value: V
|
|
356
|
-
readonly S: S
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
export function makeFilters<T extends FieldValues>() {
|
|
360
|
-
type Paths = FieldPath<T>
|
|
361
|
-
type Value<TFieldName extends Paths> = FieldPathValue<T, TFieldName>
|
|
362
|
-
|
|
363
|
-
function test<
|
|
364
|
-
TFieldName extends Paths,
|
|
365
|
-
A extends Value<TFieldName>,
|
|
366
|
-
Val
|
|
367
|
-
>(
|
|
368
|
-
path: TFieldName,
|
|
369
|
-
value: (v: A) => Val
|
|
370
|
-
): FIL<T, string, TType<Val>, VType<Val>>
|
|
371
|
-
function test<
|
|
372
|
-
TFieldName extends Paths,
|
|
373
|
-
A extends Value<TFieldName>
|
|
374
|
-
>(
|
|
375
|
-
path: TFieldName,
|
|
376
|
-
value: A
|
|
377
|
-
): FIL<T, string, "eq", A>
|
|
378
|
-
function test(p: string, v: any) {
|
|
379
|
-
return f(p, v) as any
|
|
380
|
-
}
|
|
381
|
-
return test
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
// export function makeFilter<TFieldValues extends FieldValues>() {
|
|
385
|
-
// const f = makeFilter_<TFieldValues>()
|
|
386
|
-
// return f as WhereFilterHelper<TFieldValues>
|
|
387
|
-
// }
|
|
388
|
-
|
|
389
|
-
// export interface WhereFilterHelper<TFieldValues extends FieldValues> extends ReturnType<typeof makeFilter_<TFieldValues>> {}
|
|
390
|
-
|
|
391
|
-
// function makeFilter_<TFieldValues extends FieldValues>() {
|
|
392
|
-
// function eq<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
|
|
393
|
-
// path: TFieldName,
|
|
394
|
-
// value: V
|
|
395
|
-
// ) {
|
|
396
|
-
// return { key: path, value, t: "eq" as const }
|
|
397
|
-
// }
|
|
398
|
-
// const f = Object.assign(eq satisfies (...args: any[]) => Where, {
|
|
399
|
-
// in<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
|
|
400
|
-
// path: TFieldName,
|
|
401
|
-
// value: readonly V[]
|
|
402
|
-
// ) {
|
|
403
|
-
// return { key: path, value, t: "in" as const }
|
|
404
|
-
// },
|
|
405
|
-
// notIn<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
|
|
406
|
-
// path: TFieldName,
|
|
407
|
-
// value: readonly V[]
|
|
408
|
-
// ) {
|
|
409
|
-
// return { key: path, value, t: "not-in" as const }
|
|
410
|
-
// },
|
|
411
|
-
// eq,
|
|
412
|
-
// notEq<TFieldName extends FieldPath<TFieldValues>, V extends FieldPathValue<TFieldValues, TFieldName>>(
|
|
413
|
-
// path: TFieldName,
|
|
414
|
-
// value: V
|
|
415
|
-
// ) {
|
|
416
|
-
// return { key: path, value, t: "not-eq" as const }
|
|
417
|
-
// }
|
|
418
|
-
// } satisfies Record<string, (...args: any[]) => Where>)
|
|
419
|
-
// return f
|
|
420
|
-
// }
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import type { StoreWhereFilter, Where } from "@effect-app/infra/services/Store"
|
|
2
|
-
import { Filters, makeFilters } from "../../filter.js"
|
|
3
|
-
import { buildWhereCosmosQuery } from "./Cosmos/query.js"
|
|
4
|
-
|
|
5
|
-
const f_ = makeFilters<Something>()
|
|
6
|
-
export type SomethingWhereFilter = typeof f_
|
|
7
|
-
|
|
8
|
-
export function makeSomethingFilter_(filter: (f: SomethingWhereFilter) => StoreWhereFilter) {
|
|
9
|
-
return filter(f_)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function somethingsWhere(
|
|
13
|
-
makeWhere: (
|
|
14
|
-
f: SomethingWhereFilter
|
|
15
|
-
) => Where | [Where, ...Where[]],
|
|
16
|
-
mode?: "or" | "and"
|
|
17
|
-
) {
|
|
18
|
-
return makeSomethingFilter_((f) => {
|
|
19
|
-
const m = makeWhere ? makeWhere(f) : []
|
|
20
|
-
return ({
|
|
21
|
-
mode,
|
|
22
|
-
where: (Array.isArray(m) ? m as unknown as [Where, ...Where[]] : [m]) as readonly [Where, ...Where[]]
|
|
23
|
-
})
|
|
24
|
-
})
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
type SomethingElse = {
|
|
28
|
-
a: string
|
|
29
|
-
b: number
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
type Something = {
|
|
33
|
-
a: number
|
|
34
|
-
id: string
|
|
35
|
-
b: string
|
|
36
|
-
c: readonly string[]
|
|
37
|
-
d: readonly SomethingElse[]
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
test("works", () => {
|
|
41
|
-
expect(buildWhereCosmosQuery(
|
|
42
|
-
somethingsWhere((_) => _("b", (_) => "b2")),
|
|
43
|
-
"Somethings",
|
|
44
|
-
"importedMarkerId",
|
|
45
|
-
{},
|
|
46
|
-
undefined,
|
|
47
|
-
10
|
|
48
|
-
))
|
|
49
|
-
.toEqual({
|
|
50
|
-
"parameters": [
|
|
51
|
-
{
|
|
52
|
-
"name": "@id",
|
|
53
|
-
"value": "importedMarkerId"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "@v0",
|
|
57
|
-
"value": "b2"
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
"query": `
|
|
61
|
-
SELECT f
|
|
62
|
-
FROM Somethings f
|
|
63
|
-
|
|
64
|
-
WHERE f.id != @id AND f.b = @v0
|
|
65
|
-
OFFSET 0 LIMIT 10`
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
expect(buildWhereCosmosQuery(
|
|
69
|
-
somethingsWhere((_) => _("d.-1.a", Filters.isnt("a2"))),
|
|
70
|
-
"Somethings",
|
|
71
|
-
"importedMarkerId",
|
|
72
|
-
{},
|
|
73
|
-
undefined,
|
|
74
|
-
10
|
|
75
|
-
))
|
|
76
|
-
.toEqual({
|
|
77
|
-
"parameters": [
|
|
78
|
-
{
|
|
79
|
-
"name": "@id",
|
|
80
|
-
"value": "importedMarkerId"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"name": "@v0",
|
|
84
|
-
"value": "a2"
|
|
85
|
-
}
|
|
86
|
-
],
|
|
87
|
-
"query": `
|
|
88
|
-
SELECT f
|
|
89
|
-
FROM Somethings f
|
|
90
|
-
JOIN d IN f.d
|
|
91
|
-
WHERE f.id != @id AND d.a <> @v0
|
|
92
|
-
OFFSET 0 LIMIT 10`
|
|
93
|
-
})
|
|
94
|
-
})
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import type { StoreWhereFilter, Where } from "@effect-app/infra/services/Store"
|
|
2
|
-
import { ReadonlyArray } from "effect-app"
|
|
3
|
-
import { Filters, makeFilters } from "../../filter.js"
|
|
4
|
-
import { codeFilter } from "./utils.js"
|
|
5
|
-
|
|
6
|
-
const somethings = [
|
|
7
|
-
{ a: 1, b: "b", c: ["c"], d: [{ a: "a2", b: 1 }, { a: "a", b: 1 }], id: "1" },
|
|
8
|
-
{ a: 2, b: "b2", c: ["c2"], d: [{ a: "a4", b: 2 }, { a: "a5", b: 2 }], id: "2" }
|
|
9
|
-
] satisfies readonly Something[]
|
|
10
|
-
|
|
11
|
-
const f_ = makeFilters<Something>()
|
|
12
|
-
export type SomethingWhereFilter = typeof f_
|
|
13
|
-
|
|
14
|
-
export function makeSomethingFilter_(filter: (f: SomethingWhereFilter) => StoreWhereFilter) {
|
|
15
|
-
return filter(f_)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function somethingsWhere(
|
|
19
|
-
makeWhere: (
|
|
20
|
-
f: SomethingWhereFilter
|
|
21
|
-
) => Where | [Where, ...Where[]],
|
|
22
|
-
mode?: "or" | "and"
|
|
23
|
-
) {
|
|
24
|
-
return makeSomethingFilter_((f) => {
|
|
25
|
-
const m = makeWhere ? makeWhere(f) : []
|
|
26
|
-
return ({
|
|
27
|
-
mode,
|
|
28
|
-
where: (Array.isArray(m) ? m as unknown as [Where, ...Where[]] : [m]) as readonly [Where, ...Where[]]
|
|
29
|
-
})
|
|
30
|
-
})
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type SomethingElse = {
|
|
34
|
-
a: string
|
|
35
|
-
b: number
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
type Something = {
|
|
39
|
-
a: number
|
|
40
|
-
id: string
|
|
41
|
-
b: string
|
|
42
|
-
c: readonly string[]
|
|
43
|
-
d: readonly SomethingElse[]
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
test("works", () => {
|
|
47
|
-
expect(
|
|
48
|
-
ReadonlyArray.filterMap(
|
|
49
|
-
somethings,
|
|
50
|
-
codeFilter(
|
|
51
|
-
somethingsWhere((_) => _("b", (_) => "b2"))
|
|
52
|
-
)
|
|
53
|
-
)
|
|
54
|
-
)
|
|
55
|
-
.toEqual([somethings[1]])
|
|
56
|
-
|
|
57
|
-
expect(
|
|
58
|
-
ReadonlyArray.filterMap(
|
|
59
|
-
somethings,
|
|
60
|
-
codeFilter(
|
|
61
|
-
somethingsWhere((_) => _("b", Filters.contains("b")))
|
|
62
|
-
)
|
|
63
|
-
)
|
|
64
|
-
)
|
|
65
|
-
.toEqual([somethings[0], somethings[1]])
|
|
66
|
-
|
|
67
|
-
expect(
|
|
68
|
-
ReadonlyArray.filterMap(
|
|
69
|
-
somethings,
|
|
70
|
-
codeFilter(
|
|
71
|
-
somethingsWhere((_) => _("b", Filters.contains("2")))
|
|
72
|
-
)
|
|
73
|
-
)
|
|
74
|
-
)
|
|
75
|
-
.toEqual([somethings[1]])
|
|
76
|
-
|
|
77
|
-
expect(
|
|
78
|
-
ReadonlyArray.filterMap(
|
|
79
|
-
somethings,
|
|
80
|
-
codeFilter(
|
|
81
|
-
somethingsWhere((_) => _("b", Filters.endsWith("b")))
|
|
82
|
-
)
|
|
83
|
-
)
|
|
84
|
-
)
|
|
85
|
-
.toEqual([somethings[0]])
|
|
86
|
-
|
|
87
|
-
expect(
|
|
88
|
-
ReadonlyArray.filterMap(
|
|
89
|
-
somethings,
|
|
90
|
-
codeFilter(
|
|
91
|
-
somethingsWhere((_) => _("b", Filters.endsWith("2")))
|
|
92
|
-
)
|
|
93
|
-
)
|
|
94
|
-
)
|
|
95
|
-
.toEqual([somethings[1]])
|
|
96
|
-
|
|
97
|
-
expect(
|
|
98
|
-
ReadonlyArray.filterMap(
|
|
99
|
-
somethings,
|
|
100
|
-
codeFilter(
|
|
101
|
-
somethingsWhere((_) => _("b", Filters.startsWith("b")))
|
|
102
|
-
)
|
|
103
|
-
)
|
|
104
|
-
)
|
|
105
|
-
.toEqual([somethings[0], somethings[1]])
|
|
106
|
-
|
|
107
|
-
expect(
|
|
108
|
-
ReadonlyArray.filterMap(
|
|
109
|
-
somethings,
|
|
110
|
-
codeFilter(
|
|
111
|
-
somethingsWhere((_) => _("b", Filters.startsWith("2")))
|
|
112
|
-
)
|
|
113
|
-
)
|
|
114
|
-
)
|
|
115
|
-
.toEqual([])
|
|
116
|
-
|
|
117
|
-
expect(
|
|
118
|
-
ReadonlyArray.filterMap(
|
|
119
|
-
somethings,
|
|
120
|
-
codeFilter(
|
|
121
|
-
somethingsWhere((_) => _("b", (_) => "b"))
|
|
122
|
-
)
|
|
123
|
-
)
|
|
124
|
-
)
|
|
125
|
-
.toEqual([somethings[0]])
|
|
126
|
-
|
|
127
|
-
expect(
|
|
128
|
-
ReadonlyArray.filterMap(
|
|
129
|
-
somethings,
|
|
130
|
-
codeFilter(
|
|
131
|
-
somethingsWhere((_) => _("c", Filters.includes("c")))
|
|
132
|
-
)
|
|
133
|
-
)
|
|
134
|
-
)
|
|
135
|
-
.toEqual([somethings[0]])
|
|
136
|
-
|
|
137
|
-
expect(
|
|
138
|
-
ReadonlyArray.filterMap(
|
|
139
|
-
somethings,
|
|
140
|
-
codeFilter(
|
|
141
|
-
somethingsWhere((_) => _("d.-1.a", (_) => "a5"))
|
|
142
|
-
)
|
|
143
|
-
)
|
|
144
|
-
)
|
|
145
|
-
.toEqual([somethings[1]])
|
|
146
|
-
|
|
147
|
-
expect(
|
|
148
|
-
ReadonlyArray.filterMap(
|
|
149
|
-
somethings,
|
|
150
|
-
codeFilter(
|
|
151
|
-
somethingsWhere((_) => _("d.-1.a", (_) => "a"))
|
|
152
|
-
)
|
|
153
|
-
)
|
|
154
|
-
)
|
|
155
|
-
.toEqual([somethings[0]])
|
|
156
|
-
|
|
157
|
-
expect(
|
|
158
|
-
ReadonlyArray.filterMap(
|
|
159
|
-
somethings,
|
|
160
|
-
codeFilter(
|
|
161
|
-
somethingsWhere((_) => _("d.-1.a", Filters.isnt("a")))
|
|
162
|
-
)
|
|
163
|
-
)
|
|
164
|
-
)
|
|
165
|
-
.toEqual([somethings[1]])
|
|
166
|
-
})
|