@effect-app/infra 0.201.2 → 0.201.4
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/_cjs/services/RepositoryBase.cjs +8 -3
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/query/dsl.cjs +18 -3
- package/_cjs/services/query/dsl.cjs.map +1 -1
- package/_cjs/services/query/new-kid-interpreter.cjs +10 -1
- package/_cjs/services/query/new-kid-interpreter.cjs.map +1 -1
- package/dist/api/routing/match.d.ts +1 -1
- package/dist/services/QueueMaker/memQueue.d.ts +1 -1
- package/dist/services/QueueMaker/sbqueue.d.ts +1 -1
- package/dist/services/Repository/dsl.d.ts.map +1 -1
- package/dist/services/Repository/ext.d.ts +1 -1
- package/dist/services/RepositoryBase.d.ts +10 -16
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +10 -6
- package/dist/services/query/dsl.d.ts +18 -8
- package/dist/services/query/dsl.d.ts.map +1 -1
- package/dist/services/query/dsl.js +15 -2
- package/dist/services/query/new-kid-interpreter.d.ts +1 -0
- package/dist/services/query/new-kid-interpreter.d.ts.map +1 -1
- package/dist/services/query/new-kid-interpreter.js +9 -2
- package/package.json +2 -2
- package/src/services/Repository/dsl.ts +1 -1
- package/src/services/RepositoryBase.ts +55 -44
- package/src/services/query/dsl.ts +57 -14
- package/src/services/query/new-kid-interpreter.ts +9 -1
|
@@ -8,10 +8,10 @@ import type { S } from "effect-app"
|
|
|
8
8
|
import { Data } from "effect-app"
|
|
9
9
|
import type { Covariant } from "effect/Types"
|
|
10
10
|
|
|
11
|
-
export type QAll<TFieldValues extends FieldValues, A = TFieldValues, R = never> =
|
|
11
|
+
export type QAll<TFieldValues extends FieldValues, A = TFieldValues, R = never, TType extends "one" | "many" = "many"> =
|
|
12
12
|
| Query<TFieldValues>
|
|
13
13
|
| QueryWhere<TFieldValues>
|
|
14
|
-
| QueryEnd<TFieldValues>
|
|
14
|
+
| QueryEnd<TFieldValues, TType>
|
|
15
15
|
| QueryProjection<TFieldValues, A, R>
|
|
16
16
|
|
|
17
17
|
export const QId = Symbol()
|
|
@@ -21,28 +21,41 @@ export interface QueryTogether<
|
|
|
21
21
|
out TFieldValues extends FieldValues,
|
|
22
22
|
out T extends "initial" | "where" | "end" | "projection" = "initial",
|
|
23
23
|
out A = TFieldValues,
|
|
24
|
-
out R = never
|
|
24
|
+
out R = never,
|
|
25
|
+
out TType extends "many" | "one" = "many"
|
|
25
26
|
> {
|
|
26
27
|
readonly [QId]: {
|
|
27
28
|
readonly _TFieldValues: Covariant<TFieldValues>
|
|
28
29
|
readonly _T: Covariant<T>
|
|
29
30
|
readonly _A: Covariant<A>
|
|
30
31
|
readonly _R: Covariant<R>
|
|
32
|
+
readonly _TT: Covariant<TType>
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
export type Query<TFieldValues extends FieldValues> = QueryTogether<TFieldValues, "initial">
|
|
35
37
|
export type QueryWhere<TFieldValues extends FieldValues> = QueryTogether<TFieldValues, "where">
|
|
36
38
|
|
|
37
|
-
export type QueryEnd<TFieldValues extends FieldValues> = QueryTogether<
|
|
39
|
+
export type QueryEnd<TFieldValues extends FieldValues, TType extends "many" | "one" = "many"> = QueryTogether<
|
|
40
|
+
TFieldValues,
|
|
41
|
+
"end",
|
|
42
|
+
TFieldValues,
|
|
43
|
+
never,
|
|
44
|
+
TType
|
|
45
|
+
>
|
|
38
46
|
|
|
39
|
-
export type QueryProjection<
|
|
47
|
+
export type QueryProjection<
|
|
48
|
+
TFieldValues extends FieldValues,
|
|
49
|
+
A = TFieldValues,
|
|
50
|
+
R = never,
|
|
51
|
+
TType extends "many" | "one" = "many"
|
|
52
|
+
> = QueryTogether<
|
|
40
53
|
TFieldValues,
|
|
41
54
|
"projection",
|
|
42
55
|
A,
|
|
43
|
-
R
|
|
56
|
+
R,
|
|
57
|
+
TType
|
|
44
58
|
>
|
|
45
|
-
|
|
46
59
|
export type Q<TFieldValues extends FieldValues> =
|
|
47
60
|
| Initial<TFieldValues>
|
|
48
61
|
| Where<TFieldValues>
|
|
@@ -51,6 +64,7 @@ export type Q<TFieldValues extends FieldValues> =
|
|
|
51
64
|
| Order<TFieldValues, any>
|
|
52
65
|
| Page<TFieldValues>
|
|
53
66
|
| Project<any, TFieldValues, any>
|
|
67
|
+
| One<TFieldValues>
|
|
54
68
|
|
|
55
69
|
export class Initial<TFieldValues extends FieldValues> extends Data.TaggedClass("value")<{ value: "initial" }>
|
|
56
70
|
implements Query<TFieldValues>
|
|
@@ -90,6 +104,12 @@ export class Page<TFieldValues extends FieldValues> extends Data.TaggedClass("pa
|
|
|
90
104
|
readonly [QId]!: any
|
|
91
105
|
}
|
|
92
106
|
|
|
107
|
+
export class One<TFieldValues extends FieldValues> extends Data.TaggedClass("one")<{
|
|
108
|
+
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues>
|
|
109
|
+
}> implements QueryEnd<TFieldValues, "many"> {
|
|
110
|
+
readonly [QId]!: any
|
|
111
|
+
}
|
|
112
|
+
|
|
93
113
|
export class Order<TFieldValues extends FieldValues, TFieldName extends FieldPath<TFieldValues>>
|
|
94
114
|
extends Data.TaggedClass("order")<{
|
|
95
115
|
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues>
|
|
@@ -101,10 +121,13 @@ export class Order<TFieldValues extends FieldValues, TFieldName extends FieldPat
|
|
|
101
121
|
readonly [QId]!: any
|
|
102
122
|
}
|
|
103
123
|
|
|
104
|
-
export class Project<A, TFieldValues extends FieldValues, R
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
124
|
+
export class Project<A, TFieldValues extends FieldValues, R, TType extends "one" | "many" = "many">
|
|
125
|
+
extends Data.TaggedClass("project")<{
|
|
126
|
+
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues, TType>
|
|
127
|
+
schema: S.Schema<A, TFieldValues, R>
|
|
128
|
+
}>
|
|
129
|
+
implements QueryProjection<TFieldValues, A, R>
|
|
130
|
+
{
|
|
108
131
|
readonly [QId]!: any
|
|
109
132
|
}
|
|
110
133
|
|
|
@@ -134,11 +157,31 @@ export const page: <TFieldValues extends FieldValues>(
|
|
|
134
157
|
skip
|
|
135
158
|
})
|
|
136
159
|
|
|
137
|
-
export const
|
|
160
|
+
export const one: <TFieldValues extends FieldValues>(
|
|
161
|
+
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues>
|
|
162
|
+
) => QueryEnd<TFieldValues, "one"> = (current) =>
|
|
163
|
+
new One({
|
|
164
|
+
current
|
|
165
|
+
})
|
|
166
|
+
/*
|
|
167
|
+
.andThen(flow(
|
|
168
|
+
toNonEmptyArray,
|
|
169
|
+
Effect.mapError(() => new NotFoundError<"User">({ id: auth0Id, type: "User" })),
|
|
170
|
+
Effect.map((_) => _[0])
|
|
171
|
+
))
|
|
172
|
+
*/
|
|
173
|
+
|
|
174
|
+
export const project: <
|
|
175
|
+
TFieldValues extends FieldValues,
|
|
176
|
+
A = FieldValues,
|
|
177
|
+
R = never,
|
|
178
|
+
TType extends "one" | "many" = "many"
|
|
179
|
+
>(
|
|
138
180
|
schema: S.Schema<A, TFieldValues, R>
|
|
139
181
|
) => (
|
|
140
|
-
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues>
|
|
141
|
-
) => QueryProjection<TFieldValues, A, R> = (schema) => (current) =>
|
|
182
|
+
current: Query<TFieldValues> | QueryWhere<TFieldValues> | QueryEnd<TFieldValues, TType>
|
|
183
|
+
) => QueryProjection<TFieldValues, A, R, TType> = (schema) => (current) =>
|
|
184
|
+
new Project({ current: current as any, /* TODO: why */ schema })
|
|
142
185
|
|
|
143
186
|
export type FilterWheres = {
|
|
144
187
|
<
|
|
@@ -14,6 +14,7 @@ type Result<TFieldValues extends FieldValues, A = TFieldValues, R = never> = {
|
|
|
14
14
|
limit: number | undefined
|
|
15
15
|
skip: number | undefined
|
|
16
16
|
order: { key: FieldPath<TFieldValues>; direction: "ASC" | "DESC" }[]
|
|
17
|
+
ttype: "one" | "many" | undefined
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
const interpret = <TFieldValues extends FieldValues, A = TFieldValues, R = never>(_: QAll<TFieldValues, A, R>) => {
|
|
@@ -24,7 +25,8 @@ const interpret = <TFieldValues extends FieldValues, A = TFieldValues, R = never
|
|
|
24
25
|
schema: undefined,
|
|
25
26
|
limit: undefined,
|
|
26
27
|
skip: undefined,
|
|
27
|
-
order: []
|
|
28
|
+
order: [],
|
|
29
|
+
ttype: undefined
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
const upd = (
|
|
@@ -88,6 +90,11 @@ const interpret = <TFieldValues extends FieldValues, A = TFieldValues, R = never
|
|
|
88
90
|
)
|
|
89
91
|
}
|
|
90
92
|
},
|
|
93
|
+
one: ({ current }) => {
|
|
94
|
+
upd(interpret(current))
|
|
95
|
+
data.limit = 1
|
|
96
|
+
data.ttype = "one"
|
|
97
|
+
},
|
|
91
98
|
order: ({ current, direction, field }) => {
|
|
92
99
|
upd(interpret(current))
|
|
93
100
|
data.order.push({ key: field, direction })
|
|
@@ -133,6 +140,7 @@ export const toFilter = <
|
|
|
133
140
|
select: Option.getOrUndefined(toNonEmptyArray(select)),
|
|
134
141
|
schema,
|
|
135
142
|
order: Option.getOrUndefined(toNonEmptyArray(a.order)),
|
|
143
|
+
ttype: a.ttype,
|
|
136
144
|
filter: a.filter.length
|
|
137
145
|
? {
|
|
138
146
|
type: "new-kid" as const,
|