@effect-app/infra 2.48.0 → 2.49.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 +12 -0
- package/dist/Model/Repository/service.d.ts +22 -21
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/query/dsl.d.ts +65 -63
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/dsl.js +1 -1
- package/package.json +9 -9
- package/src/Model/Repository/service.ts +81 -51
- package/src/Model/query/dsl.ts +1180 -439
- package/test/query.test.ts +29 -4
- package/test/dist/controller.legacy2.test.d.ts.map +0 -1
- package/test/dist/controller.legacy3.test.d.ts.map +0 -1
- package/test/dist/controller.test copy.d.ts +0 -169
- package/test/dist/controller.test copy.d.ts.map +0 -1
- package/test/dist/controller.test copy.js +0 -152
- package/test/dist/controller.test.d.ts.map +0 -1
- package/test/dist/controller6.test.d.ts.map +0 -1
- package/test/dist/controller7.test.d.ts.map +0 -1
- package/test/dist/filterApi.test.d.ts.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { Effect, Option, PubSub, S } from "effect-app"
|
|
3
3
|
import type { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client/errors"
|
|
4
4
|
import type { NonNegativeInt } from "effect-app/Schema/numbers"
|
|
5
|
-
import type { FieldValues, ResolveFirstLevel } from "../filter/types.js"
|
|
5
|
+
import type { FieldValues, IsNever, ResolveFirstLevel } from "../filter/types.js"
|
|
6
6
|
import type { QAll, Query, QueryProjection } from "../query.js"
|
|
7
7
|
import type { Mapped } from "./legacy.js"
|
|
8
8
|
|
|
@@ -35,11 +35,12 @@ export interface Repository<
|
|
|
35
35
|
A,
|
|
36
36
|
R,
|
|
37
37
|
From extends FieldValues,
|
|
38
|
-
TType extends "one" | "many" | "count" = "many"
|
|
38
|
+
TType extends "one" | "many" | "count" = "many",
|
|
39
|
+
E extends boolean = false
|
|
39
40
|
>(
|
|
40
41
|
q: (
|
|
41
42
|
initial: Query<Encoded>
|
|
42
|
-
) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
43
|
+
) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
43
44
|
): Effect.Effect<
|
|
44
45
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
45
46
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -51,14 +52,15 @@ export interface Repository<
|
|
|
51
52
|
R,
|
|
52
53
|
From extends FieldValues,
|
|
53
54
|
TType extends "one" | "many" | "count" = "many",
|
|
54
|
-
$A = never
|
|
55
|
+
$A = never,
|
|
56
|
+
E extends boolean = false
|
|
55
57
|
>(
|
|
56
58
|
q1: (
|
|
57
59
|
initial: Query<Encoded>
|
|
58
60
|
) => $A,
|
|
59
61
|
q2: (
|
|
60
62
|
_: $A
|
|
61
|
-
) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
63
|
+
) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
62
64
|
): Effect.Effect<
|
|
63
65
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
64
66
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -71,7 +73,8 @@ export interface Repository<
|
|
|
71
73
|
From extends FieldValues,
|
|
72
74
|
TType extends "one" | "many" | "count" = "many",
|
|
73
75
|
$A = never,
|
|
74
|
-
$B = never
|
|
76
|
+
$B = never,
|
|
77
|
+
E extends boolean = false
|
|
75
78
|
>(
|
|
76
79
|
q1: (
|
|
77
80
|
initial: Query<Encoded>
|
|
@@ -79,7 +82,7 @@ export interface Repository<
|
|
|
79
82
|
q2: (_: $A) => $B,
|
|
80
83
|
q3: (
|
|
81
84
|
_: $B
|
|
82
|
-
) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
85
|
+
) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
83
86
|
): Effect.Effect<
|
|
84
87
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
85
88
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -93,7 +96,8 @@ export interface Repository<
|
|
|
93
96
|
TType extends "one" | "many" | "count" = "many",
|
|
94
97
|
$A = never,
|
|
95
98
|
$B = never,
|
|
96
|
-
$C = never
|
|
99
|
+
$C = never,
|
|
100
|
+
E extends boolean = false
|
|
97
101
|
>(
|
|
98
102
|
q1: (
|
|
99
103
|
initial: Query<Encoded>
|
|
@@ -102,7 +106,7 @@ export interface Repository<
|
|
|
102
106
|
q3: (_: $B) => $C,
|
|
103
107
|
q4: (
|
|
104
108
|
_: $C
|
|
105
|
-
) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
109
|
+
) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
106
110
|
): Effect.Effect<
|
|
107
111
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
108
112
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -117,7 +121,8 @@ export interface Repository<
|
|
|
117
121
|
$A = never,
|
|
118
122
|
$B = never,
|
|
119
123
|
$C = never,
|
|
120
|
-
$D = never
|
|
124
|
+
$D = never,
|
|
125
|
+
E extends boolean = false
|
|
121
126
|
>(
|
|
122
127
|
q1: (
|
|
123
128
|
initial: Query<Encoded>
|
|
@@ -127,7 +132,7 @@ export interface Repository<
|
|
|
127
132
|
q4: (_: $C) => $D,
|
|
128
133
|
q5: (
|
|
129
134
|
_: $D
|
|
130
|
-
) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
135
|
+
) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
131
136
|
): Effect.Effect<
|
|
132
137
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
133
138
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -143,7 +148,8 @@ export interface Repository<
|
|
|
143
148
|
$B = never,
|
|
144
149
|
$C = never,
|
|
145
150
|
$D = never,
|
|
146
|
-
$E = never
|
|
151
|
+
$E = never,
|
|
152
|
+
E extends boolean = false
|
|
147
153
|
>(
|
|
148
154
|
q1: (
|
|
149
155
|
initial: Query<Encoded>
|
|
@@ -152,7 +158,7 @@ export interface Repository<
|
|
|
152
158
|
q3: (_: $B) => $C,
|
|
153
159
|
q4: (_: $C) => $D,
|
|
154
160
|
q5: (_: $D) => $E,
|
|
155
|
-
q6: (_: $E) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
161
|
+
q6: (_: $E) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
156
162
|
): Effect.Effect<
|
|
157
163
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
158
164
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -169,7 +175,8 @@ export interface Repository<
|
|
|
169
175
|
$C = never,
|
|
170
176
|
$D = never,
|
|
171
177
|
$E = never,
|
|
172
|
-
$F = never
|
|
178
|
+
$F = never,
|
|
179
|
+
E extends boolean = false
|
|
173
180
|
>(
|
|
174
181
|
q1: (
|
|
175
182
|
initial: Query<Encoded>
|
|
@@ -179,7 +186,7 @@ export interface Repository<
|
|
|
179
186
|
q4: (_: $C) => $D,
|
|
180
187
|
q5: (_: $D) => $E,
|
|
181
188
|
q6: (_: $E) => $F,
|
|
182
|
-
q7: (_: $F) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
189
|
+
q7: (_: $F) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
183
190
|
): Effect.Effect<
|
|
184
191
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
185
192
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -197,7 +204,8 @@ export interface Repository<
|
|
|
197
204
|
$D = never,
|
|
198
205
|
$E = never,
|
|
199
206
|
$F = never,
|
|
200
|
-
$G = never
|
|
207
|
+
$G = never,
|
|
208
|
+
E extends boolean = false
|
|
201
209
|
>(
|
|
202
210
|
q1: (
|
|
203
211
|
initial: Query<Encoded>
|
|
@@ -208,7 +216,7 @@ export interface Repository<
|
|
|
208
216
|
q5: (_: $D) => $E,
|
|
209
217
|
q6: (_: $E) => $F,
|
|
210
218
|
q7: (_: $F) => $G,
|
|
211
|
-
q8: (_: $G) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
219
|
+
q8: (_: $G) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
212
220
|
): Effect.Effect<
|
|
213
221
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
214
222
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -227,7 +235,8 @@ export interface Repository<
|
|
|
227
235
|
$E = never,
|
|
228
236
|
$F = never,
|
|
229
237
|
$G = never,
|
|
230
|
-
$H = never
|
|
238
|
+
$H = never,
|
|
239
|
+
E extends boolean = false
|
|
231
240
|
>(
|
|
232
241
|
q1: (
|
|
233
242
|
initial: Query<Encoded>
|
|
@@ -239,7 +248,7 @@ export interface Repository<
|
|
|
239
248
|
q6: (_: $E) => $F,
|
|
240
249
|
q7: (_: $F) => $G,
|
|
241
250
|
q8: (_: $G) => $H,
|
|
242
|
-
q9: (_: $H) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
251
|
+
q9: (_: $H) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
243
252
|
): Effect.Effect<
|
|
244
253
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
245
254
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -259,7 +268,8 @@ export interface Repository<
|
|
|
259
268
|
$F = never,
|
|
260
269
|
$G = never,
|
|
261
270
|
$H = never,
|
|
262
|
-
$I = never
|
|
271
|
+
$I = never,
|
|
272
|
+
E extends boolean = false
|
|
263
273
|
>(
|
|
264
274
|
q1: (
|
|
265
275
|
initial: Query<Encoded>
|
|
@@ -272,7 +282,7 @@ export interface Repository<
|
|
|
272
282
|
q7: (_: $F) => $G,
|
|
273
283
|
q8: (_: $G) => $H,
|
|
274
284
|
q9: (_: $H) => $I,
|
|
275
|
-
q10: (_: $I) => QueryProjection<From extends Encoded ? From : never, A, R, TType>
|
|
285
|
+
q10: (_: $I) => QueryProjection<From extends Encoded ? From : never, A, R, TType, E>
|
|
276
286
|
): Effect.Effect<
|
|
277
287
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
278
288
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
@@ -284,11 +294,12 @@ export interface Repository<
|
|
|
284
294
|
<
|
|
285
295
|
R = never,
|
|
286
296
|
TType extends "one" | "many" = "many",
|
|
287
|
-
EncodedRefined extends Encoded = Encoded
|
|
297
|
+
EncodedRefined extends Encoded = Encoded,
|
|
298
|
+
E extends boolean = false
|
|
288
299
|
>(
|
|
289
|
-
q: (initial: Query<Encoded>) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
300
|
+
q: (initial: Query<Encoded>) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
290
301
|
): Effect.Effect<
|
|
291
|
-
TType extends "many" ?
|
|
302
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
292
303
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
293
304
|
R | RSchema
|
|
294
305
|
>
|
|
@@ -296,14 +307,15 @@ export interface Repository<
|
|
|
296
307
|
R = never,
|
|
297
308
|
TType extends "one" | "many" = "many",
|
|
298
309
|
EncodedRefined extends Encoded = Encoded,
|
|
299
|
-
$A = never
|
|
310
|
+
$A = never,
|
|
311
|
+
E extends boolean = false
|
|
300
312
|
>(
|
|
301
313
|
q1: (initial: Query<Encoded>) => $A,
|
|
302
314
|
q2: (
|
|
303
315
|
_: $A
|
|
304
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
316
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
305
317
|
): Effect.Effect<
|
|
306
|
-
TType extends "many" ?
|
|
318
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
307
319
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
308
320
|
R | RSchema
|
|
309
321
|
>
|
|
@@ -312,7 +324,8 @@ export interface Repository<
|
|
|
312
324
|
TType extends "one" | "many" = "many",
|
|
313
325
|
EncodedRefined extends Encoded = Encoded,
|
|
314
326
|
$A = never,
|
|
315
|
-
$B = never
|
|
327
|
+
$B = never,
|
|
328
|
+
E extends boolean = false
|
|
316
329
|
>(
|
|
317
330
|
q1: (initial: Query<Encoded>) => $A,
|
|
318
331
|
q2: (
|
|
@@ -320,9 +333,9 @@ export interface Repository<
|
|
|
320
333
|
) => $B,
|
|
321
334
|
q3: (
|
|
322
335
|
_: $B
|
|
323
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
336
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
324
337
|
): Effect.Effect<
|
|
325
|
-
TType extends "many" ?
|
|
338
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
326
339
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
327
340
|
R | RSchema
|
|
328
341
|
>
|
|
@@ -332,16 +345,17 @@ export interface Repository<
|
|
|
332
345
|
EncodedRefined extends Encoded = Encoded,
|
|
333
346
|
$A = never,
|
|
334
347
|
$B = never,
|
|
335
|
-
$C = never
|
|
348
|
+
$C = never,
|
|
349
|
+
E extends boolean = false
|
|
336
350
|
>(
|
|
337
351
|
q1: (initial: Query<Encoded>) => $A,
|
|
338
352
|
q2: (_: $A) => $B,
|
|
339
353
|
q3: (_: $B) => $C,
|
|
340
354
|
q4: (
|
|
341
355
|
_: $C
|
|
342
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
356
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
343
357
|
): Effect.Effect<
|
|
344
|
-
TType extends "many" ?
|
|
358
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
345
359
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
346
360
|
R | RSchema
|
|
347
361
|
>
|
|
@@ -352,7 +366,8 @@ export interface Repository<
|
|
|
352
366
|
$A = never,
|
|
353
367
|
$B = never,
|
|
354
368
|
$C = never,
|
|
355
|
-
$D = never
|
|
369
|
+
$D = never,
|
|
370
|
+
E extends boolean = false
|
|
356
371
|
>(
|
|
357
372
|
q1: (initial: Query<Encoded>) => $A,
|
|
358
373
|
q2: (_: $A) => $B,
|
|
@@ -360,9 +375,9 @@ export interface Repository<
|
|
|
360
375
|
q4: (_: $C) => $D,
|
|
361
376
|
q5: (
|
|
362
377
|
_: $D
|
|
363
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
378
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
364
379
|
): Effect.Effect<
|
|
365
|
-
TType extends "many" ?
|
|
380
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
366
381
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
367
382
|
R | RSchema
|
|
368
383
|
>
|
|
@@ -374,7 +389,8 @@ export interface Repository<
|
|
|
374
389
|
$B = never,
|
|
375
390
|
$C = never,
|
|
376
391
|
$D = never,
|
|
377
|
-
$E = never
|
|
392
|
+
$E = never,
|
|
393
|
+
E extends boolean = false
|
|
378
394
|
>(
|
|
379
395
|
q1: (initial: Query<Encoded>) => $A,
|
|
380
396
|
q2: (_: $A) => $B,
|
|
@@ -383,9 +399,9 @@ export interface Repository<
|
|
|
383
399
|
q5: (_: $D) => $E,
|
|
384
400
|
q6: (
|
|
385
401
|
_: $E
|
|
386
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
402
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
387
403
|
): Effect.Effect<
|
|
388
|
-
TType extends "many" ?
|
|
404
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
389
405
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
390
406
|
R | RSchema
|
|
391
407
|
>
|
|
@@ -398,7 +414,8 @@ export interface Repository<
|
|
|
398
414
|
$C = never,
|
|
399
415
|
$D = never,
|
|
400
416
|
$E = never,
|
|
401
|
-
$F = never
|
|
417
|
+
$F = never,
|
|
418
|
+
E extends boolean = false
|
|
402
419
|
>(
|
|
403
420
|
q1: (initial: Query<Encoded>) => $A,
|
|
404
421
|
q2: (_: $A) => $B,
|
|
@@ -408,9 +425,9 @@ export interface Repository<
|
|
|
408
425
|
q6: (_: $E) => $F,
|
|
409
426
|
q7: (
|
|
410
427
|
_: $F
|
|
411
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
428
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
412
429
|
): Effect.Effect<
|
|
413
|
-
TType extends "many" ?
|
|
430
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
414
431
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
415
432
|
R | RSchema
|
|
416
433
|
>
|
|
@@ -424,7 +441,8 @@ export interface Repository<
|
|
|
424
441
|
$D = never,
|
|
425
442
|
$E = never,
|
|
426
443
|
$F = never,
|
|
427
|
-
$G = never
|
|
444
|
+
$G = never,
|
|
445
|
+
E extends boolean = false
|
|
428
446
|
>(
|
|
429
447
|
q1: (initial: Query<Encoded>) => $A,
|
|
430
448
|
q2: (_: $A) => $B,
|
|
@@ -435,9 +453,10 @@ export interface Repository<
|
|
|
435
453
|
q7: (_: $F) => $G,
|
|
436
454
|
q8: (
|
|
437
455
|
_: $G
|
|
438
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
456
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
439
457
|
): Effect.Effect<
|
|
440
|
-
TType extends "many" ?
|
|
458
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
459
|
+
: RefineTHelper<T, EncodedRefined>,
|
|
441
460
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
442
461
|
R | RSchema
|
|
443
462
|
>
|
|
@@ -452,7 +471,8 @@ export interface Repository<
|
|
|
452
471
|
$E = never,
|
|
453
472
|
$F = never,
|
|
454
473
|
$G = never,
|
|
455
|
-
$H = never
|
|
474
|
+
$H = never,
|
|
475
|
+
E extends boolean = false
|
|
456
476
|
>(
|
|
457
477
|
q1: (initial: Query<Encoded>) => $A,
|
|
458
478
|
q2: (_: $A) => $B,
|
|
@@ -464,9 +484,10 @@ export interface Repository<
|
|
|
464
484
|
q8: (_: $G) => $H,
|
|
465
485
|
q9: (
|
|
466
486
|
_: $H
|
|
467
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
487
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
468
488
|
): Effect.Effect<
|
|
469
|
-
TType extends "many" ?
|
|
489
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
490
|
+
: RefineTHelper<T, EncodedRefined>,
|
|
470
491
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
471
492
|
R | RSchema
|
|
472
493
|
>
|
|
@@ -482,7 +503,8 @@ export interface Repository<
|
|
|
482
503
|
$F = never,
|
|
483
504
|
$G = never,
|
|
484
505
|
$H = never,
|
|
485
|
-
$I = never
|
|
506
|
+
$I = never,
|
|
507
|
+
E extends boolean = false
|
|
486
508
|
>(
|
|
487
509
|
q1: (initial: Query<Encoded>) => $A,
|
|
488
510
|
q2: (_: $A) => $B,
|
|
@@ -495,9 +517,10 @@ export interface Repository<
|
|
|
495
517
|
q9: (_: $H) => $I,
|
|
496
518
|
q10: (
|
|
497
519
|
_: $I
|
|
498
|
-
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType>
|
|
520
|
+
) => QAll<Encoded, EncodedRefined, RefineTHelper<T, EncodedRefined>, R, TType, E>
|
|
499
521
|
): Effect.Effect<
|
|
500
|
-
TType extends "many" ?
|
|
522
|
+
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
523
|
+
: RefineTHelper<T, EncodedRefined>,
|
|
501
524
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
502
525
|
R | RSchema
|
|
503
526
|
>
|
|
@@ -507,6 +530,13 @@ export interface Repository<
|
|
|
507
530
|
readonly mapped: Mapped<Encoded>
|
|
508
531
|
}
|
|
509
532
|
|
|
533
|
+
type DistributeQueryIfExclusiveOnArray<Exclusive extends boolean, T, EncodedRefined> = [Exclusive] extends [true]
|
|
534
|
+
? T extends any ? RefineTHelper<T, EncodedRefined> extends infer R ? IsNever<R> extends true ? never
|
|
535
|
+
: readonly R[]
|
|
536
|
+
: never
|
|
537
|
+
: never
|
|
538
|
+
: readonly RefineTHelper<T, EncodedRefined>[]
|
|
539
|
+
|
|
510
540
|
type NullableRefined<T, EncodedRefined> = {
|
|
511
541
|
// EncodedRefined may be a union, so if you just keyof you'll get just common keys
|
|
512
542
|
// p.s. NullableRefined is homomorphic in T so it distributes itself over T
|