@kavo/prisma 0.5.0 → 0.7.1
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/LICENSE +201 -0
- package/README.md +1 -1
- package/dist/filter-translator.d.ts +18 -12
- package/dist/filter-translator.d.ts.map +1 -1
- package/dist/filter-translator.js +187 -39
- package/dist/filter-translator.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure.d.ts +4 -4
- package/dist/infrastructure.d.ts.map +1 -1
- package/dist/infrastructure.js +10 -4
- package/dist/infrastructure.js.map +1 -1
- package/dist/metadata.d.ts +24 -2
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +15 -3
- package/dist/metadata.js.map +1 -1
- package/dist/prisma-repository-adapter.d.ts +13 -13
- package/dist/prisma-repository-adapter.d.ts.map +1 -1
- package/dist/prisma-repository-adapter.js +29 -13
- package/dist/prisma-repository-adapter.js.map +1 -1
- package/package.json +8 -8
package/LICENSE
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
6
|
+
|
|
7
|
+
1. Definitions.
|
|
8
|
+
|
|
9
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
10
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
11
|
+
|
|
12
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
13
|
+
the copyright owner that is granting the License.
|
|
14
|
+
|
|
15
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
16
|
+
other entities that control, are controlled by, or are under common
|
|
17
|
+
control with that entity. For the purposes of this definition,
|
|
18
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
19
|
+
direction or management of such entity, whether by contract or
|
|
20
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
21
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
22
|
+
|
|
23
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
24
|
+
exercising permissions granted by this License.
|
|
25
|
+
|
|
26
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
27
|
+
including but not limited to software source code, documentation
|
|
28
|
+
source, and configuration files.
|
|
29
|
+
|
|
30
|
+
"Object" form shall mean any form resulting from mechanical
|
|
31
|
+
transformation or translation of a Source form, including but
|
|
32
|
+
not limited to compiled object code, generated documentation,
|
|
33
|
+
and conversions to other media types.
|
|
34
|
+
|
|
35
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
36
|
+
Object form, made available under the License, as indicated by a
|
|
37
|
+
copyright notice that is included in or attached to the work
|
|
38
|
+
(an example is provided in the Appendix below).
|
|
39
|
+
|
|
40
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
41
|
+
form, that is based on (or derived from) the Work and for which the
|
|
42
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
43
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
44
|
+
of this License, Derivative Works shall not include works that remain
|
|
45
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
46
|
+
the Work and Derivative Works thereof.
|
|
47
|
+
|
|
48
|
+
"Contribution" shall mean any work of authorship, including
|
|
49
|
+
the original version of the Work and any modifications or additions
|
|
50
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
|
+
means any form of electronic, verbal, or written communication sent
|
|
55
|
+
to the Licensor or its representatives, including but not limited to
|
|
56
|
+
communication on electronic mailing lists, source code control systems,
|
|
57
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
58
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
59
|
+
excluding communication that is conspicuously marked or otherwise
|
|
60
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
|
+
|
|
62
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
|
+
subsequently incorporated within the Work.
|
|
65
|
+
|
|
66
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
67
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
68
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
69
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
70
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
71
|
+
Work and such Derivative Works in Source or Object form.
|
|
72
|
+
|
|
73
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
74
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
75
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
76
|
+
(except as stated in this section) patent license to make, have made,
|
|
77
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
78
|
+
where such license applies only to those patent claims licensable
|
|
79
|
+
by such Contributor that are necessarily infringed by their
|
|
80
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
81
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
82
|
+
institute patent litigation against any entity (including a
|
|
83
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
84
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
85
|
+
or contributory patent infringement, then any patent licenses
|
|
86
|
+
granted to You under this License for that Work shall terminate
|
|
87
|
+
as of the date such litigation is filed.
|
|
88
|
+
|
|
89
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
90
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
91
|
+
modifications, and in Source or Object form, provided that You
|
|
92
|
+
meet the following conditions:
|
|
93
|
+
|
|
94
|
+
(a) You must give any other recipients of the Work or
|
|
95
|
+
Derivative Works a copy of this License; and
|
|
96
|
+
|
|
97
|
+
(b) You must cause any modified files to carry prominent notices
|
|
98
|
+
stating that You changed the files; and
|
|
99
|
+
|
|
100
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
101
|
+
that You distribute, all copyright, patent, trademark, and
|
|
102
|
+
attribution notices from the Source form of the Work,
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
|
+
|
|
106
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
|
+
include a readable copy of the attribution notices contained
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
122
|
+
|
|
123
|
+
You may add Your own copyright statement to Your modifications and
|
|
124
|
+
may provide additional or different license terms and conditions
|
|
125
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
126
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
127
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
128
|
+
the conditions stated in this License.
|
|
129
|
+
|
|
130
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
131
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
132
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
133
|
+
this License, without any additional terms or conditions.
|
|
134
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
135
|
+
the terms of any separate license agreement you may have executed
|
|
136
|
+
with Licensor regarding such Contributions.
|
|
137
|
+
|
|
138
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
139
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
140
|
+
except as required for reasonable and customary use in describing
|
|
141
|
+
the origin of the Work and reproducing the content of the NOTICE file.
|
|
142
|
+
|
|
143
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
144
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
145
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
146
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
147
|
+
implied, including, without limitation, any warranties or conditions
|
|
148
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
149
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
150
|
+
appropriateness of using or redistributing the Work and assume any
|
|
151
|
+
risks associated with Your exercise of permissions under this License.
|
|
152
|
+
|
|
153
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
154
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
155
|
+
unless required by applicable law (such as deliberate and grossly
|
|
156
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
157
|
+
liable to You for damages, including any direct, indirect, special,
|
|
158
|
+
incidental, or consequential damages of any character arising as a
|
|
159
|
+
result of this License or out of the use or inability to use the
|
|
160
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
161
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
162
|
+
other commercial damages or losses), even if such Contributor
|
|
163
|
+
has been advised of the possibility of such damages.
|
|
164
|
+
|
|
165
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
166
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
167
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
168
|
+
or other liability obligations and/or rights consistent with this
|
|
169
|
+
License. However, in accepting such obligations, You may act only
|
|
170
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
171
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
172
|
+
defend, and hold each Contributor harmless for any liability
|
|
173
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
174
|
+
of your accepting any such warranty or additional liability.
|
|
175
|
+
|
|
176
|
+
END OF TERMS AND CONDITIONS
|
|
177
|
+
|
|
178
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
179
|
+
|
|
180
|
+
To apply the Apache License to your work, attach the following
|
|
181
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
182
|
+
replaced with your own identifying information. (Don't include
|
|
183
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
184
|
+
comment syntax for the file format. We also recommend that a
|
|
185
|
+
file name and description of purpose be included on the same
|
|
186
|
+
"printed page" as the copyright notice for easier identification
|
|
187
|
+
within third-party archives.
|
|
188
|
+
|
|
189
|
+
Copyright 2026 Hossein Saleminejad
|
|
190
|
+
|
|
191
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
|
+
you may not use this file except in compliance with the License.
|
|
193
|
+
You may obtain a copy of the License at
|
|
194
|
+
|
|
195
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
196
|
+
|
|
197
|
+
Unless required by applicable law or agreed to in writing, software
|
|
198
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
199
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
200
|
+
See the License for the specific language governing permissions and
|
|
201
|
+
limitations under the License.
|
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ includes all run through this adapter.
|
|
|
18
18
|
Prisma generates no runtime class for a model, so each entity needs a
|
|
19
19
|
caller-declared **marker class** as its `ClassRef` identity, matched by
|
|
20
20
|
name to the schema (`class Author {}` ↔ `model Author { … }`). See
|
|
21
|
-
`docs/adr/0017-prisma-marker-classes-and-entity-registry.md` for why.
|
|
21
|
+
`docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md` for why.
|
|
22
22
|
|
|
23
23
|
```ts
|
|
24
24
|
import { PrismaClient, Prisma } from "@prisma/client";
|
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import type { Filter } from "@kavo/core";
|
|
2
|
+
import type { PrismaRelationGraph } from "./metadata.js";
|
|
2
3
|
/** A Prisma `where` input, built structurally — no generated type is required to build one. */
|
|
3
4
|
export type PrismaWhere = Record<string, unknown>;
|
|
4
|
-
/**
|
|
5
|
-
* Whether the target connector supports Prisma's `mode: "insensitive"`
|
|
6
|
-
* string filter — Postgres and MongoDB do; MySQL, SQLite, and SQL Server
|
|
7
|
-
* reject the argument outright. There is no reliable way to detect this
|
|
8
|
-
* from the DMMF at runtime, so it is an explicit, caller-declared setting
|
|
9
|
-
* (see `PrismaInfrastructureOptions.caseInsensitiveFilters`) rather than a
|
|
10
|
-
* guess. On an unsupported connector, `ILIKE` degrades to the same
|
|
11
|
-
* translation as `LIKE` — on SQLite in particular this is not a loss of
|
|
12
|
-
* behavior, since SQLite's own `LIKE` is already ASCII case-insensitive.
|
|
13
|
-
*/
|
|
14
5
|
export interface FilterTranslatorOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Whether the target connector supports Prisma's `mode: "insensitive"`
|
|
8
|
+
* string filter — Postgres and MongoDB do; MySQL, SQLite, and SQL Server
|
|
9
|
+
* reject the argument outright. There is no reliable way to detect this
|
|
10
|
+
* from the DMMF at runtime, so it is an explicit, caller-declared setting
|
|
11
|
+
* (see `PrismaInfrastructureOptions.caseInsensitiveFilters`) rather than a
|
|
12
|
+
* guess. On an unsupported connector, `ILIKE` degrades to the same
|
|
13
|
+
* translation as `LIKE` — on SQLite in particular this is not a loss of
|
|
14
|
+
* behavior, since SQLite's own `LIKE` is already ASCII case-insensitive.
|
|
15
|
+
*/
|
|
15
16
|
readonly caseInsensitiveFilters: boolean;
|
|
17
|
+
/** The model a relation path starts walking from — the entity being queried. */
|
|
18
|
+
readonly model: string;
|
|
19
|
+
/** The whole datamodel's relation edges, so a path's cardinality is knowable. */
|
|
20
|
+
readonly relations: PrismaRelationGraph;
|
|
16
21
|
}
|
|
17
22
|
/**
|
|
18
23
|
* Filter AST → Prisma `where` object.
|
|
@@ -20,8 +25,9 @@ export interface FilterTranslatorOptions {
|
|
|
20
25
|
* Unlike `@kavo/typeorm`'s translator, this needs no query-builder state
|
|
21
26
|
* (no join aliases, no parameter numbering): Prisma's `where` already
|
|
22
27
|
* nests relation paths natively (`{ author: { name: { equals: "Ada" } } }`),
|
|
23
|
-
* so a relation-path field (`author.name`)
|
|
24
|
-
*
|
|
28
|
+
* so a relation-path field (`author.name`) nests the same translation one
|
|
29
|
+
* level deeper instead of adding a join. A *to-many* segment takes a `some`
|
|
30
|
+
* wrapper on the way down — see {@link nest}.
|
|
25
31
|
*/
|
|
26
32
|
export declare function translateFilter<Entity>(filter: Filter<Entity>, options: FilterTranslatorOptions): PrismaWhere | undefined;
|
|
27
33
|
//# sourceMappingURL=filter-translator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-translator.d.ts","sourceRoot":"","sources":["../src/filter-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmD,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-translator.d.ts","sourceRoot":"","sources":["../src/filter-translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmD,MAAM,YAAY,CAAC;AAE1F,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE7E,+FAA+F;AAC/F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,MAAM,WAAW,uBAAuB;IACtC;;;;;;;;;OASG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACzC;AAUD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EACpC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EACtB,OAAO,EAAE,uBAAuB,GAC/B,WAAW,GAAG,SAAS,CAIzB"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import { assertNever } from "@kavo/core";
|
|
1
|
+
import { assertNever, QueryValidationException } from "@kavo/core";
|
|
2
|
+
/**
|
|
3
|
+
* A predicate that matches no row: the empty disjunction, which is `false`
|
|
4
|
+
* by definition. Spelled this way rather than against the primary key
|
|
5
|
+
* (`@kavo/mikroorm`'s `{ id: { $in: [] } }`) because it needs no metadata,
|
|
6
|
+
* and unlike an empty `NOT` Prisma does honor it.
|
|
7
|
+
*/
|
|
8
|
+
const MATCHES_NOTHING = { OR: [] };
|
|
2
9
|
/**
|
|
3
10
|
* Filter AST → Prisma `where` object.
|
|
4
11
|
*
|
|
5
12
|
* Unlike `@kavo/typeorm`'s translator, this needs no query-builder state
|
|
6
13
|
* (no join aliases, no parameter numbering): Prisma's `where` already
|
|
7
14
|
* nests relation paths natively (`{ author: { name: { equals: "Ada" } } }`),
|
|
8
|
-
* so a relation-path field (`author.name`)
|
|
9
|
-
*
|
|
15
|
+
* so a relation-path field (`author.name`) nests the same translation one
|
|
16
|
+
* level deeper instead of adding a join. A *to-many* segment takes a `some`
|
|
17
|
+
* wrapper on the way down — see {@link nest}.
|
|
10
18
|
*/
|
|
11
19
|
export function translateFilter(filter, options) {
|
|
12
20
|
const root = filter.root;
|
|
@@ -19,52 +27,110 @@ function translateExpression(expression, options) {
|
|
|
19
27
|
return translateCondition(expression, options);
|
|
20
28
|
}
|
|
21
29
|
if (expression.operator === "NOT") {
|
|
22
|
-
|
|
23
|
-
|
|
30
|
+
// `NOT` is variadic and means `NOT(AND(children))` (doc 05 §1), so no
|
|
31
|
+
// child past the first is dropped (#115).
|
|
32
|
+
//
|
|
33
|
+
// The empty case cannot be spelled that way, though: Prisma drops a
|
|
34
|
+
// `NOT` whose operand carries no condition, so `{ NOT: { AND: [] } }`
|
|
35
|
+
// matches *every* row rather than none — the same silent widening #111
|
|
36
|
+
// fixed in `@kavo/typeorm`, verified against a real engine in
|
|
37
|
+
// `adapter.spec.ts`. `MATCHES_NOTHING` is the contradiction Prisma does
|
|
38
|
+
// honor.
|
|
39
|
+
if (expression.children.length === 0)
|
|
40
|
+
return MATCHES_NOTHING;
|
|
41
|
+
return { NOT: conjunction(expression.children, options) };
|
|
24
42
|
}
|
|
25
43
|
const key = expression.operator === "OR" ? "OR" : "AND";
|
|
26
44
|
return { [key]: expression.children.map((child) => translateExpression(child, options)) };
|
|
27
45
|
}
|
|
28
|
-
/**
|
|
29
|
-
|
|
46
|
+
/**
|
|
47
|
+
* `AND` over `children`, as the thing `NOT` negates. A single child is
|
|
48
|
+
* returned unwrapped so the common unary `NOT` keeps its exact shape.
|
|
49
|
+
*/
|
|
50
|
+
function conjunction(children, options) {
|
|
51
|
+
if (children.length === 1)
|
|
52
|
+
return translateExpression(children[0], options);
|
|
53
|
+
return { AND: children.map((child) => translateExpression(child, options)) };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Nest `condition.field` (`"author.name"`) into Prisma's native
|
|
57
|
+
* relation-path shape.
|
|
58
|
+
*
|
|
59
|
+
* Cardinality decides the shape, which is why the translator needs the
|
|
60
|
+
* relation graph at all. Prisma accepts a bare nested object only on a
|
|
61
|
+
* to-one relation; on a list it requires `some`/`every`/`none` and rejects
|
|
62
|
+
* the bare form with `Unknown argument`. `some` is the right one: doc 05 §3
|
|
63
|
+
* defines a relation-path filter as restricting *root* rows — "a user with
|
|
64
|
+
* at least one post titled x" — which is exactly what `@kavo/typeorm` gets
|
|
65
|
+
* from a `LEFT JOIN` plus a `WHERE` on the joined column.
|
|
66
|
+
*/
|
|
67
|
+
function nest(field, leaf, options) {
|
|
30
68
|
const segments = field.split(".");
|
|
31
|
-
|
|
69
|
+
if (segments.length === 1)
|
|
70
|
+
return { [field]: leaf };
|
|
71
|
+
// Walk the path first, so an unresolvable segment raises a Kavo 400
|
|
72
|
+
// instead of building a `where` Prisma will reject at runtime.
|
|
73
|
+
const edges = [];
|
|
74
|
+
let model = options.model;
|
|
75
|
+
for (const segment of segments.slice(0, -1)) {
|
|
76
|
+
const edge = options.relations.get(model)?.get(segment);
|
|
77
|
+
if (edge === undefined)
|
|
78
|
+
throw unknownRelationSegment(field, segment, model);
|
|
79
|
+
edges.push(edge);
|
|
80
|
+
model = edge.target;
|
|
81
|
+
}
|
|
82
|
+
// Then build outwards from the leaf, wrapping each to-many hop in `some`.
|
|
83
|
+
let nested = { [segments[segments.length - 1]]: leaf };
|
|
84
|
+
for (let index = edges.length - 1; index >= 0; index -= 1) {
|
|
85
|
+
const inner = edges[index].cardinality === "many" ? { some: nested } : nested;
|
|
86
|
+
nested = { [segments[index]]: inner };
|
|
87
|
+
}
|
|
88
|
+
return nested;
|
|
89
|
+
}
|
|
90
|
+
function unknownRelationSegment(field, segment, model) {
|
|
91
|
+
return QueryValidationException.single({
|
|
92
|
+
field,
|
|
93
|
+
code: "KAVO_QUERY_UNSUPPORTED_PARAM",
|
|
94
|
+
detail: `Query parameter '${field}' is not supported: '${segment}' is not a relation on Prisma model ` +
|
|
95
|
+
`'${model}', so @kavo/prisma cannot tell whether to nest it as a to-one or a to-many filter. ` +
|
|
96
|
+
`Remove '${field}' from the allowlist, or correct the path.`,
|
|
97
|
+
});
|
|
32
98
|
}
|
|
33
99
|
function translateCondition(condition, options) {
|
|
34
100
|
const field = condition.field;
|
|
35
101
|
const value = condition.value;
|
|
36
102
|
switch (condition.operator) {
|
|
37
103
|
case "EQ":
|
|
38
|
-
return nest(field, { equals: value });
|
|
104
|
+
return nest(field, { equals: value }, options);
|
|
39
105
|
case "NE":
|
|
40
|
-
return nest(field, { not: value });
|
|
106
|
+
return nest(field, { not: value }, options);
|
|
41
107
|
case "GT":
|
|
42
|
-
return nest(field, { gt: value });
|
|
108
|
+
return nest(field, { gt: value }, options);
|
|
43
109
|
case "GTE":
|
|
44
|
-
return nest(field, { gte: value });
|
|
110
|
+
return nest(field, { gte: value }, options);
|
|
45
111
|
case "LT":
|
|
46
|
-
return nest(field, { lt: value });
|
|
112
|
+
return nest(field, { lt: value }, options);
|
|
47
113
|
case "LTE":
|
|
48
|
-
return nest(field, { lte: value });
|
|
114
|
+
return nest(field, { lte: value }, options);
|
|
49
115
|
case "IN":
|
|
50
|
-
return nest(field, { in: value });
|
|
116
|
+
return nest(field, { in: value }, options);
|
|
51
117
|
case "NOT_IN":
|
|
52
|
-
return nest(field, { notIn: value });
|
|
118
|
+
return nest(field, { notIn: value }, options);
|
|
53
119
|
case "LIKE":
|
|
54
|
-
return nest(field, likeToPrismaStringFilter(value));
|
|
120
|
+
return nest(field, likeToPrismaStringFilter(value, field), options);
|
|
55
121
|
case "ILIKE":
|
|
56
122
|
return nest(field, {
|
|
57
|
-
...likeToPrismaStringFilter(value),
|
|
123
|
+
...likeToPrismaStringFilter(value, field),
|
|
58
124
|
...(options.caseInsensitiveFilters && { mode: "insensitive" }),
|
|
59
|
-
});
|
|
125
|
+
}, options);
|
|
60
126
|
case "BETWEEN": {
|
|
61
127
|
const [low, high] = value;
|
|
62
|
-
return nest(field, { gte: low, lte: high });
|
|
128
|
+
return nest(field, { gte: low, lte: high }, options);
|
|
63
129
|
}
|
|
64
130
|
case "IS_NULL":
|
|
65
|
-
return nest(field, { equals: null });
|
|
131
|
+
return nest(field, { equals: null }, options);
|
|
66
132
|
case "IS_NOT_NULL":
|
|
67
|
-
return nest(field, { not: null });
|
|
133
|
+
return nest(field, { not: null }, options);
|
|
68
134
|
default:
|
|
69
135
|
// Every AST operator must translate to a predicate — proven total
|
|
70
136
|
// here at build time, same guarantee as `@kavo/typeorm`'s translator.
|
|
@@ -72,23 +138,105 @@ function translateCondition(condition, options) {
|
|
|
72
138
|
}
|
|
73
139
|
}
|
|
74
140
|
/**
|
|
75
|
-
* `LIKE
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
141
|
+
* Split a `LIKE` pattern into tokens, honoring the grammar's backslash
|
|
142
|
+
* escape (doc 05 §3): `\%` and `\_` are literal text, not wildcards.
|
|
143
|
+
*
|
|
144
|
+
* Consecutive `%` collapse into one — `a%%` and `a%` mean the same thing —
|
|
145
|
+
* so the shape check downstream is about structure rather than spelling.
|
|
146
|
+
* A trailing lone backslash escapes nothing and is treated as a literal,
|
|
147
|
+
* matching `@kavo/mongoose`'s `likeToRegExpSource`.
|
|
81
148
|
*/
|
|
82
|
-
function
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
149
|
+
function tokenizeLike(pattern) {
|
|
150
|
+
const tokens = [];
|
|
151
|
+
let literal = "";
|
|
152
|
+
const flush = () => {
|
|
153
|
+
if (literal !== "") {
|
|
154
|
+
tokens.push({ kind: "literal", text: literal });
|
|
155
|
+
literal = "";
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
for (let index = 0; index < pattern.length; index += 1) {
|
|
159
|
+
const character = pattern[index];
|
|
160
|
+
if (character === "\\") {
|
|
161
|
+
const escaped = pattern[index + 1];
|
|
162
|
+
if (escaped === undefined) {
|
|
163
|
+
literal += "\\";
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
literal += escaped;
|
|
167
|
+
index += 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (character === "%") {
|
|
171
|
+
flush();
|
|
172
|
+
if (tokens[tokens.length - 1]?.kind !== "any")
|
|
173
|
+
tokens.push({ kind: "any" });
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (character === "_") {
|
|
177
|
+
flush();
|
|
178
|
+
tokens.push({ kind: "one" });
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
literal += character;
|
|
182
|
+
}
|
|
183
|
+
flush();
|
|
184
|
+
return tokens;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* `LIKE`/`ILIKE` → a Prisma string filter.
|
|
188
|
+
*
|
|
189
|
+
* Prisma's `where` has no raw pattern operator — only
|
|
190
|
+
* `equals`/`startsWith`/`endsWith`/`contains` — so exactly four pattern
|
|
191
|
+
* shapes are expressible, distinguished by where the wildcards sit:
|
|
192
|
+
*
|
|
193
|
+
* | pattern | filter |
|
|
194
|
+
* | ------- | ------------- |
|
|
195
|
+
* | `john` | `equals` |
|
|
196
|
+
* | `A%` | `startsWith` |
|
|
197
|
+
* | `%son` | `endsWith` |
|
|
198
|
+
* | `%j%` | `contains` |
|
|
199
|
+
*
|
|
200
|
+
* Everything else — an interior `%` (`a%b`), or any `_` at all, which
|
|
201
|
+
* Prisma has no single-character wildcard for — is **rejected with a 400**
|
|
202
|
+
* rather than silently downgraded. The rejected forms used to fall through
|
|
203
|
+
* to `equals` on the raw pattern (#114), so the same wire request returned
|
|
204
|
+
* one result set on TypeORM/Mongoose/MikroORM and a different one here,
|
|
205
|
+
* with no error on either side. A 400 makes the limitation visible; see
|
|
206
|
+
* `docs/internals/architecture/14-prisma-adapter.md`.
|
|
207
|
+
*
|
|
208
|
+
* The backslash escape is applied first, so `100\%` is the literal text
|
|
209
|
+
* `100%` (an `equals`), not a `startsWith` on `100\` — matching the
|
|
210
|
+
* `ESCAPE` clause `@kavo/typeorm` binds and the regex `@kavo/mongoose`
|
|
211
|
+
* builds.
|
|
212
|
+
*/
|
|
213
|
+
function likeToPrismaStringFilter(pattern, field) {
|
|
214
|
+
const tokens = tokenizeLike(pattern);
|
|
215
|
+
const literals = tokens.filter((token) => token.kind === "literal");
|
|
216
|
+
const text = literals.length === 1 ? literals[0].text : "";
|
|
217
|
+
if (!tokens.some((token) => token.kind === "one") && literals.length <= 1) {
|
|
218
|
+
const leading = tokens[0]?.kind === "any";
|
|
219
|
+
const trailing = tokens.length > 1 && tokens[tokens.length - 1]?.kind === "any";
|
|
220
|
+
// `%` alone is one `any` token: leading with no literal, which reads as
|
|
221
|
+
// `contains: ""` — every non-null value, the same set SQL `LIKE '%'` has.
|
|
222
|
+
if (tokens.length === 1 && leading)
|
|
223
|
+
return { contains: "" };
|
|
224
|
+
if (leading && trailing)
|
|
225
|
+
return { contains: text };
|
|
226
|
+
if (trailing)
|
|
227
|
+
return { startsWith: text };
|
|
228
|
+
if (leading)
|
|
229
|
+
return { endsWith: text };
|
|
230
|
+
return { equals: text };
|
|
231
|
+
}
|
|
232
|
+
throw QueryValidationException.single({
|
|
233
|
+
field,
|
|
234
|
+
code: "KAVO_QUERY_UNSUPPORTED_PARAM",
|
|
235
|
+
detail: `Query parameter '${field}' is not supported: @kavo/prisma cannot express the pattern ` +
|
|
236
|
+
`'${pattern}'. Prisma's 'where' has no raw pattern operator, so only a leading and/or ` +
|
|
237
|
+
`trailing '%' is supported ('john', 'A%', '%son', '%j%'); an interior '%' and the ` +
|
|
238
|
+
`single-character wildcard '_' have no equivalent. Escape a literal '%' or '_' with a ` +
|
|
239
|
+
`backslash, or move the pattern to a raw query.`,
|
|
240
|
+
});
|
|
93
241
|
}
|
|
94
242
|
//# sourceMappingURL=filter-translator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-translator.js","sourceRoot":"","sources":["../src/filter-translator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"filter-translator.js","sourceRoot":"","sources":["../src/filter-translator.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { buildEntityMetadata } from "./metadata.js";
|
|
1
|
+
export { buildEntityMetadata, buildRelationGraph, type PrismaRelationEdge, type PrismaRelationGraph, } from "./metadata.js";
|
|
2
2
|
export { mapDriverError } from "./error-mapping.js";
|
|
3
|
-
export { translateFilter, type PrismaWhere } from "./filter-translator.js";
|
|
3
|
+
export { translateFilter, type FilterTranslatorOptions, type PrismaWhere } from "./filter-translator.js";
|
|
4
4
|
export { PrismaRepositoryAdapter } from "./prisma-repository-adapter.js";
|
|
5
|
-
export {
|
|
5
|
+
export { createInfrastructure, createPrismaKavo, type PrismaInfrastructureOptions } from "./infrastructure.js";
|
|
6
6
|
export { delegateName, type PrismaClientLike, type PrismaModelDelegate } from "./prisma-client-like.js";
|
|
7
7
|
export type { PrismaDatamodel, PrismaEnum, PrismaField, PrismaModel } from "./datamodel.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,eAAe,EAAE,KAAK,uBAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,KAAK,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxG,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
export { buildEntityMetadata } from "./metadata.js";
|
|
1
|
+
export { buildEntityMetadata, buildRelationGraph, } from "./metadata.js";
|
|
2
2
|
export { mapDriverError } from "./error-mapping.js";
|
|
3
|
+
// `FilterTranslatorOptions` is named here for the same reason `@kavo/mongoose`
|
|
4
|
+
// and `@kavo/mikroorm` name theirs: `PrismaRepositoryAdapter` is public, and
|
|
5
|
+
// constructing one means constructing its filter options.
|
|
3
6
|
export { translateFilter } from "./filter-translator.js";
|
|
4
7
|
export { PrismaRepositoryAdapter } from "./prisma-repository-adapter.js";
|
|
5
|
-
export {
|
|
8
|
+
export { createInfrastructure, createPrismaKavo } from "./infrastructure.js";
|
|
6
9
|
export { delegateName } from "./prisma-client-like.js";
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,+EAA+E;AAC/E,6EAA6E;AAC7E,0DAA0D;AAC1D,OAAO,EAAE,eAAe,EAAkD,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAoC,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,YAAY,EAAmD,MAAM,yBAAyB,CAAC"}
|
package/dist/infrastructure.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClassRef,
|
|
1
|
+
import type { ClassRef, KavoInfrastructure, KavoInstance, KavoOptions } from "@kavo/core";
|
|
2
2
|
import type { PrismaDatamodel } from "./datamodel.js";
|
|
3
3
|
import type { PrismaClientLike } from "./prisma-client-like.js";
|
|
4
4
|
/**
|
|
@@ -13,7 +13,7 @@ import type { PrismaClientLike } from "./prisma-client-like.js";
|
|
|
13
13
|
* purely as `ClassRef` identity (`class Author {}` ↔ `model Author`,
|
|
14
14
|
* matched by name) — and a relation's target model name can only resolve
|
|
15
15
|
* back to *its* marker class if every marker class was registered up
|
|
16
|
-
* front. See `docs/adr/0017-prisma-marker-classes-and-entity-registry.md`.
|
|
16
|
+
* front. See `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`.
|
|
17
17
|
*/
|
|
18
18
|
export interface PrismaInfrastructureOptions {
|
|
19
19
|
readonly datamodel: PrismaDatamodel;
|
|
@@ -31,9 +31,9 @@ export interface PrismaInfrastructureOptions {
|
|
|
31
31
|
* The Prisma implementation of core's infrastructure seam: metadata and
|
|
32
32
|
* adapters derived from one Prisma Client, cached per entity (metadata
|
|
33
33
|
* derivation and adapter construction are bootstrap work, not per-request
|
|
34
|
-
* work) — same shape as `@kavo/typeorm`'s `
|
|
34
|
+
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`.
|
|
35
35
|
*/
|
|
36
|
-
export declare function
|
|
36
|
+
export declare function createInfrastructure(prismaClient: PrismaClientLike, options: PrismaInfrastructureOptions): KavoInfrastructure;
|
|
37
37
|
/**
|
|
38
38
|
* Sugar for the common case: a Kavo root instance wired to one Prisma
|
|
39
39
|
* Client, so `kavo.createCrud(Author)` is genuinely zero-config beyond
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrastructure.d.ts","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,YAAY,EACZ,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"infrastructure.d.ts","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,YAAY,EACZ,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,QAAQ,EAAE,CAAC;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,2BAA2B,GACnC,kBAAkB,CAiCpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,gBAAgB,EAC9B,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,GACzE,YAAY,CAMd"}
|
package/dist/infrastructure.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import { createKavo } from "@kavo/core";
|
|
2
|
-
import { buildEntityMetadata } from "./metadata.js";
|
|
2
|
+
import { buildEntityMetadata, buildRelationGraph } from "./metadata.js";
|
|
3
3
|
import { PrismaRepositoryAdapter } from "./prisma-repository-adapter.js";
|
|
4
4
|
/**
|
|
5
5
|
* The Prisma implementation of core's infrastructure seam: metadata and
|
|
6
6
|
* adapters derived from one Prisma Client, cached per entity (metadata
|
|
7
7
|
* derivation and adapter construction are bootstrap work, not per-request
|
|
8
|
-
* work) — same shape as `@kavo/typeorm`'s `
|
|
8
|
+
* work) — same shape as `@kavo/typeorm`'s `createInfrastructure`.
|
|
9
9
|
*/
|
|
10
|
-
export function
|
|
10
|
+
export function createInfrastructure(prismaClient, options) {
|
|
11
11
|
const byName = new Map(options.entities.map((entity) => [entity.name, entity]));
|
|
12
12
|
const metadataCache = new Map();
|
|
13
13
|
const adapterCache = new Map();
|
|
14
|
+
// Derived once for the whole datamodel, not per entity: a relation-path
|
|
15
|
+
// filter walks models the queried entity's own metadata cannot describe
|
|
16
|
+
// (`author.posts.title` needs Author's edges too). Bootstrap work, like
|
|
17
|
+
// metadata derivation and adapter construction.
|
|
18
|
+
const relations = buildRelationGraph(options.datamodel);
|
|
14
19
|
function metadataFor(entity) {
|
|
15
20
|
let metadata = metadataCache.get(entity);
|
|
16
21
|
if (metadata === undefined) {
|
|
@@ -26,6 +31,7 @@ export function createPrismaInfrastructure(prismaClient, options) {
|
|
|
26
31
|
if (adapter === undefined) {
|
|
27
32
|
adapter = new PrismaRepositoryAdapter(prismaClient, metadataFor(entity), {
|
|
28
33
|
caseInsensitiveFilters: options.caseInsensitiveFilters ?? true,
|
|
34
|
+
relations,
|
|
29
35
|
});
|
|
30
36
|
adapterCache.set(entity, adapter);
|
|
31
37
|
}
|
|
@@ -42,7 +48,7 @@ export function createPrismaKavo(prismaClient, options) {
|
|
|
42
48
|
const { datamodel, entities, caseInsensitiveFilters, ...kavoOptions } = options;
|
|
43
49
|
return createKavo({
|
|
44
50
|
...kavoOptions,
|
|
45
|
-
infrastructure:
|
|
51
|
+
infrastructure: createInfrastructure(prismaClient, { datamodel, entities, caseInsensitiveFilters }),
|
|
46
52
|
});
|
|
47
53
|
}
|
|
48
54
|
//# sourceMappingURL=infrastructure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"infrastructure.js","sourceRoot":"","sources":["../src/infrastructure.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AA6BzE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,YAA8B,EAC9B,OAAoC;IAEpC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC5D,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,gDAAgD;IAChD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAExD,SAAS,WAAW,CAAwB,MAAwB;QAClE,IAAI,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAClE,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,QAAkC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,WAAW;QACX,UAAU,CAAwB,MAAwB;YACxD,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,IAAI,uBAAuB,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE;oBACvE,sBAAsB,EAAE,OAAO,CAAC,sBAAsB,IAAI,IAAI;oBAC9D,SAAS;iBACV,CAAsB,CAAC;gBACxB,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,OAAO,OAAoC,CAAC;QAC9C,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,YAA8B,EAC9B,OAA0E;IAE1E,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAChF,OAAO,UAAU,CAAC;QAChB,GAAG,WAAW;QACd,cAAc,EAAE,oBAAoB,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;KACpG,CAAC,CAAC;AACL,CAAC"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -10,8 +10,30 @@ import type { PrismaDatamodel } from "./datamodel.js";
|
|
|
10
10
|
* name→class registry that lets a relation's target model name resolve
|
|
11
11
|
* back to *its* marker class; TypeORM gets this for free from
|
|
12
12
|
* `DataSource#entities`, Prisma has no equivalent, so
|
|
13
|
-
* `
|
|
14
|
-
* `docs/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
13
|
+
* `createInfrastructure` collects it explicitly (see
|
|
14
|
+
* `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
15
15
|
*/
|
|
16
16
|
export declare function buildEntityMetadata<Entity extends object>(datamodel: PrismaDatamodel, entity: ClassRef<Entity>, entities: ReadonlyMap<string, ClassRef>): EntityMetadata<Entity>;
|
|
17
|
+
/**
|
|
18
|
+
* One relation edge, as the filter translator needs to see it: which
|
|
19
|
+
* Prisma model it lands on, and whether it is a list.
|
|
20
|
+
*/
|
|
21
|
+
export interface PrismaRelationEdge {
|
|
22
|
+
readonly cardinality: "one" | "many";
|
|
23
|
+
/** Target model name — the key to look up for the next path segment. */
|
|
24
|
+
readonly target: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Model name → relation property name → edge, for the whole datamodel.
|
|
28
|
+
*
|
|
29
|
+
* `EntityMetadata.relations` describes one entity, which is enough for
|
|
30
|
+
* include resolution but not for a filter path: `author.posts.title` walks
|
|
31
|
+
* two models, and only the second hop knows whether `posts` is a list. The
|
|
32
|
+
* graph is derived once at bootstrap (`createInfrastructure`) and handed to
|
|
33
|
+
* the translator as plain data, which is what keeps `translateFilter` a
|
|
34
|
+
* pure function rather than something that reaches for a client.
|
|
35
|
+
*/
|
|
36
|
+
export type PrismaRelationGraph = ReadonlyMap<string, ReadonlyMap<string, PrismaRelationEdge>>;
|
|
37
|
+
/** Derive {@link PrismaRelationGraph} from Prisma's DMMF. */
|
|
38
|
+
export declare function buildRelationGraph(datamodel: PrismaDatamodel): PrismaRelationGraph;
|
|
17
39
|
//# sourceMappingURL=metadata.d.ts.map
|
package/dist/metadata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAgD,MAAM,YAAY,CAAC;AAEzG,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAC;AA4CnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,EACvD,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,cAAc,CAAC,MAAM,CAAC,CAoDxB"}
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAgD,MAAM,YAAY,CAAC;AAEzG,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAC;AA4CnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,EACvD,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACxB,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,cAAc,CAAC,MAAM,CAAC,CAoDxB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,MAAM,CAAC;IACrC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAE/F,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,eAAe,GAAG,mBAAmB,CAclF"}
|
package/dist/metadata.js
CHANGED
|
@@ -52,8 +52,8 @@ function isGeneratedField(field) {
|
|
|
52
52
|
* name→class registry that lets a relation's target model name resolve
|
|
53
53
|
* back to *its* marker class; TypeORM gets this for free from
|
|
54
54
|
* `DataSource#entities`, Prisma has no equivalent, so
|
|
55
|
-
* `
|
|
56
|
-
* `docs/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
55
|
+
* `createInfrastructure` collects it explicitly (see
|
|
56
|
+
* `docs/internals/adr/0017-prisma-marker-classes-and-entity-registry.md`).
|
|
57
57
|
*/
|
|
58
58
|
export function buildEntityMetadata(datamodel, entity, entities) {
|
|
59
59
|
const modelName = entity.name;
|
|
@@ -94,6 +94,18 @@ export function buildEntityMetadata(datamodel, entity, entities) {
|
|
|
94
94
|
softDeleteField: null,
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
+
/** Derive {@link PrismaRelationGraph} from Prisma's DMMF. */
|
|
98
|
+
export function buildRelationGraph(datamodel) {
|
|
99
|
+
return new Map(datamodel.models.map((model) => [
|
|
100
|
+
model.name,
|
|
101
|
+
new Map(model.fields
|
|
102
|
+
.filter((field) => field.kind === "object")
|
|
103
|
+
.map((field) => [
|
|
104
|
+
field.name,
|
|
105
|
+
{ cardinality: field.isList ? "many" : "one", target: field.type },
|
|
106
|
+
])),
|
|
107
|
+
]));
|
|
108
|
+
}
|
|
97
109
|
function relationDescriptor(field, ownerModelName, entities) {
|
|
98
110
|
return {
|
|
99
111
|
name: field.name,
|
|
@@ -101,7 +113,7 @@ function relationDescriptor(field, ownerModelName, entities) {
|
|
|
101
113
|
const target = entities.get(field.type);
|
|
102
114
|
if (target === undefined) {
|
|
103
115
|
throw new ConfigurationException(ownerModelName, field.name, `Relation '${field.name}' targets Prisma model '${field.type}', but no marker class for it was ` +
|
|
104
|
-
`registered with
|
|
116
|
+
`registered with createInfrastructure's 'entities' list`);
|
|
105
117
|
}
|
|
106
118
|
return target;
|
|
107
119
|
},
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { KavoContext, EntityId, EntityMetadata, NormalizedQueryContext, RepositoryAdapter } from "@kavo/core";
|
|
2
2
|
import { type FilterTranslatorOptions } from "./filter-translator.js";
|
|
3
3
|
import { type PrismaClientLike } from "./prisma-client-like.js";
|
|
4
4
|
/**
|
|
@@ -19,14 +19,14 @@ import { type PrismaClientLike } from "./prisma-client-like.js";
|
|
|
19
19
|
export declare class PrismaRepositoryAdapter<Entity extends object> implements RepositoryAdapter<Entity> {
|
|
20
20
|
private readonly prismaClient;
|
|
21
21
|
private readonly metadata;
|
|
22
|
-
private readonly filterOptions;
|
|
23
22
|
private readonly delegate;
|
|
24
23
|
private readonly idField;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
private readonly filterOptions;
|
|
25
|
+
constructor(prismaClient: PrismaClientLike, metadata: EntityMetadata<Entity>, filterOptions: Omit<FilterTranslatorOptions, "model">);
|
|
26
|
+
findOneById(id: EntityId, query: NormalizedQueryContext<Entity> | null, context: KavoContext<Entity>): Promise<Entity | null>;
|
|
27
|
+
findOne(query: NormalizedQueryContext<Entity>, context: KavoContext<Entity>): Promise<Entity | null>;
|
|
28
|
+
findMany(query: NormalizedQueryContext<Entity>, context: KavoContext<Entity>): Promise<readonly Entity[]>;
|
|
29
|
+
count(query: NormalizedQueryContext<Entity>, context: KavoContext<Entity>): Promise<number>;
|
|
30
30
|
private buildFindArgs;
|
|
31
31
|
/**
|
|
32
32
|
* Translate a validated `IncludeTree` into Prisma's nested `include`
|
|
@@ -42,9 +42,9 @@ export declare class PrismaRepositoryAdapter<Entity extends object> implements R
|
|
|
42
42
|
private requireSoftDelete;
|
|
43
43
|
private isDeleted;
|
|
44
44
|
private byId;
|
|
45
|
-
create(data: Partial<Entity>, context:
|
|
46
|
-
update(id: EntityId, data: Partial<Entity>, context:
|
|
47
|
-
patch(id: EntityId, data: Partial<Entity>, context:
|
|
45
|
+
create(data: Partial<Entity>, context: KavoContext<Entity>): Promise<Entity>;
|
|
46
|
+
update(id: EntityId, data: Partial<Entity>, context: KavoContext<Entity>): Promise<Entity>;
|
|
47
|
+
patch(id: EntityId, data: Partial<Entity>, context: KavoContext<Entity>): Promise<Entity>;
|
|
48
48
|
/**
|
|
49
49
|
* update and patch share one primitive: the *shape* of `data` differs
|
|
50
50
|
* (full body vs. sparse) because the DTO layer differs, not the
|
|
@@ -53,9 +53,9 @@ export declare class PrismaRepositoryAdapter<Entity extends object> implements R
|
|
|
53
53
|
* existence is checked against the live scope before the write.
|
|
54
54
|
*/
|
|
55
55
|
private writeExisting;
|
|
56
|
-
delete(id: EntityId, context:
|
|
57
|
-
restore(id: EntityId, context:
|
|
58
|
-
purge(id: EntityId, context:
|
|
56
|
+
delete(id: EntityId, context: KavoContext<Entity>): Promise<void>;
|
|
57
|
+
restore(id: EntityId, context: KavoContext<Entity>): Promise<Entity>;
|
|
58
|
+
purge(id: EntityId, context: KavoContext<Entity>): Promise<void>;
|
|
59
59
|
private notFound;
|
|
60
60
|
}
|
|
61
61
|
//# sourceMappingURL=prisma-repository-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-repository-adapter.d.ts","sourceRoot":"","sources":["../src/prisma-repository-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EAEd,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"prisma-repository-adapter.d.ts","sourceRoot":"","sources":["../src/prisma-repository-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,cAAc,EAEd,sBAAsB,EACtB,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAmB,KAAK,uBAAuB,EAAoB,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAgB,KAAK,gBAAgB,EAA4B,MAAM,yBAAyB,CAAC;AAExG;;;;;;;;;;;;;;GAcG;AACH,qBAAa,uBAAuB,CAAC,MAAM,SAAS,MAAM,CAAE,YAAW,iBAAiB,CAAC,MAAM,CAAC;IAM5F,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;gBAGrC,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC,EAIjD,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAkBjD,WAAW,CACf,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,IAAI,EAC5C,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBnB,OAAO,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASpG,QAAQ,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAmBzG,KAAK,CAAC,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBjG,OAAO,CAAC,aAAa;IAsBrB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,WAAW;IAkBnB,sEAAsE;IACtE,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,SAAS;YAIH,IAAI;IAWZ,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5E,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1F,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/F;;;;;;OAMG;YACW,aAAa;IAUrB,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBjE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBpE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtE,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlreadyDeletedException, ConfigurationException, NotDeletedException, NotFoundException } from "@kavo/core";
|
|
1
|
+
import { AlreadyDeletedException, ConfigurationException, NotDeletedException, NotFoundException, hasKeyset, readFilter, } from "@kavo/core";
|
|
2
2
|
import { mapDriverError } from "./error-mapping.js";
|
|
3
3
|
import { translateFilter } from "./filter-translator.js";
|
|
4
4
|
import { delegateName } from "./prisma-client-like.js";
|
|
@@ -20,13 +20,17 @@ import { delegateName } from "./prisma-client-like.js";
|
|
|
20
20
|
export class PrismaRepositoryAdapter {
|
|
21
21
|
prismaClient;
|
|
22
22
|
metadata;
|
|
23
|
-
filterOptions;
|
|
24
23
|
delegate;
|
|
25
24
|
idField;
|
|
26
|
-
|
|
25
|
+
filterOptions;
|
|
26
|
+
constructor(prismaClient, metadata,
|
|
27
|
+
// `model` is not the caller's to supply — it is the entity this adapter
|
|
28
|
+
// already describes, and a mismatched one would nest relation paths
|
|
29
|
+
// against the wrong model's edges.
|
|
30
|
+
filterOptions) {
|
|
27
31
|
this.prismaClient = prismaClient;
|
|
28
32
|
this.metadata = metadata;
|
|
29
|
-
this.filterOptions = filterOptions;
|
|
33
|
+
this.filterOptions = { ...filterOptions, model: metadata.name };
|
|
30
34
|
const name = delegateName(metadata.name);
|
|
31
35
|
const delegate = prismaClient[name];
|
|
32
36
|
if (delegate === undefined) {
|
|
@@ -38,7 +42,7 @@ export class PrismaRepositoryAdapter {
|
|
|
38
42
|
// ── Reads ────────────────────────────────────────────────────────────
|
|
39
43
|
async findOneById(id, query, context) {
|
|
40
44
|
try {
|
|
41
|
-
const where = this.scopeToLive({ [this.idField]: id }, context, query?.withDeleted ?? false);
|
|
45
|
+
const where = this.scopeToLive({ [this.idField]: id }, context, query?.withDeleted ?? false, query?.onlyDeleted ?? false);
|
|
42
46
|
const include = this.buildInclude(query?.include ?? {});
|
|
43
47
|
const row = await this.delegate.findFirst({ where, ...(include && { include }) });
|
|
44
48
|
return row ?? null;
|
|
@@ -58,10 +62,16 @@ export class PrismaRepositoryAdapter {
|
|
|
58
62
|
}
|
|
59
63
|
async findMany(query, context) {
|
|
60
64
|
try {
|
|
65
|
+
// `readFilter` folds in the keyset predicate under cursor pagination
|
|
66
|
+
// (a no-op otherwise), and a cursor page has no `offset` to skip by —
|
|
67
|
+
// the keyset predicate *is* the skip. Prisma's own `cursor`/`skip: 1`
|
|
68
|
+
// option is deliberately not used: it takes a unique *id* and cannot
|
|
69
|
+
// express a multi-column keyset with mixed directions.
|
|
70
|
+
const { pagination } = query;
|
|
61
71
|
const rows = await this.delegate.findMany({
|
|
62
|
-
...this.buildFindArgs(query, context),
|
|
63
|
-
skip:
|
|
64
|
-
take:
|
|
72
|
+
...this.buildFindArgs(query, context, readFilter(query)),
|
|
73
|
+
skip: hasKeyset(pagination) ? 0 : pagination.offset,
|
|
74
|
+
take: pagination.limit,
|
|
65
75
|
});
|
|
66
76
|
return rows;
|
|
67
77
|
}
|
|
@@ -73,15 +83,15 @@ export class PrismaRepositoryAdapter {
|
|
|
73
83
|
try {
|
|
74
84
|
// A dedicated count — never fetch-then-length: the engine only calls
|
|
75
85
|
// this when `query.count` is true, so `total: null` costs zero queries.
|
|
76
|
-
const where = this.scopeToLive(translateFilter(query.filter, this.filterOptions), context, query.withDeleted);
|
|
86
|
+
const where = this.scopeToLive(translateFilter(query.filter, this.filterOptions), context, query.withDeleted, query.onlyDeleted);
|
|
77
87
|
return await this.delegate.count({ ...(where && { where }) });
|
|
78
88
|
}
|
|
79
89
|
catch (error) {
|
|
80
90
|
throw mapDriverError(error, errorContext(context));
|
|
81
91
|
}
|
|
82
92
|
}
|
|
83
|
-
buildFindArgs(query, context) {
|
|
84
|
-
const where = this.scopeToLive(translateFilter(
|
|
93
|
+
buildFindArgs(query, context, filter = query.filter) {
|
|
94
|
+
const where = this.scopeToLive(translateFilter(filter, this.filterOptions), context, query.withDeleted, query.onlyDeleted);
|
|
85
95
|
const orderBy = query.sort.map((sort) => nestOrderBy(sort.field, sort.direction));
|
|
86
96
|
const include = this.buildInclude(query.include);
|
|
87
97
|
return {
|
|
@@ -117,9 +127,15 @@ export class PrismaRepositoryAdapter {
|
|
|
117
127
|
return include;
|
|
118
128
|
}
|
|
119
129
|
// ── Soft delete ──────────────────────────────────────────────────────
|
|
120
|
-
scopeToLive(where, context, withDeleted) {
|
|
130
|
+
scopeToLive(where, context, withDeleted, onlyDeleted = false) {
|
|
121
131
|
const softDelete = context.config.softDelete;
|
|
122
|
-
if (softDelete.strategy !== "soft"
|
|
132
|
+
if (softDelete.strategy !== "soft")
|
|
133
|
+
return where;
|
|
134
|
+
if (onlyDeleted) {
|
|
135
|
+
const deleted = { [softDelete.field]: { not: null } };
|
|
136
|
+
return where === undefined ? deleted : { AND: [where, deleted] };
|
|
137
|
+
}
|
|
138
|
+
if (withDeleted)
|
|
123
139
|
return where;
|
|
124
140
|
const live = { [softDelete.field]: null };
|
|
125
141
|
if (where === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prisma-repository-adapter.js","sourceRoot":"","sources":["../src/prisma-repository-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prisma-repository-adapter.js","sourceRoot":"","sources":["../src/prisma-repository-adapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kavo/prisma",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Kavo Prisma adapter — implements @kavo/core's RepositoryAdapter over Prisma Client.",
|
|
5
|
-
"license": "
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/kavo-labs/kavo.git",
|
|
@@ -23,12 +23,8 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
|
-
"scripts": {
|
|
27
|
-
"build": "tsc -b",
|
|
28
|
-
"generate": "prisma generate --schema prisma/schema.prisma && prisma db push --schema prisma/schema.prisma --skip-generate --accept-data-loss"
|
|
29
|
-
},
|
|
30
26
|
"dependencies": {
|
|
31
|
-
"@kavo/core": "
|
|
27
|
+
"@kavo/core": "^0.7.1"
|
|
32
28
|
},
|
|
33
29
|
"peerDependencies": {
|
|
34
30
|
"@prisma/client": "^5.0.0 || ^6.0.0"
|
|
@@ -36,5 +32,9 @@
|
|
|
36
32
|
"devDependencies": {
|
|
37
33
|
"@prisma/client": "^6.19.3",
|
|
38
34
|
"prisma": "^6.19.3"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"build": "tsc -b",
|
|
38
|
+
"generate": "prisma generate --schema prisma/schema.prisma && prisma db push --schema prisma/schema.prisma --skip-generate --accept-data-loss"
|
|
39
39
|
}
|
|
40
|
-
}
|
|
40
|
+
}
|