prisma-effect-schema-generator 0.1.1 → 0.1.2
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/README.md +53 -4
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/mapper.d.ts.map +1 -1
- package/dist/mapper.js +2 -0
- package/dist/mapper.js.map +1 -1
- package/dist/render.d.ts +11 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +79 -12
- package/dist/render.js.map +1 -1
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -89,6 +89,8 @@ updated) on every regeneration.
|
|
|
89
89
|
| `dateAs` | `"DateFromSelf"` | `"Date"` (ISO-string codec) or `"DateFromSelf"` (accepts native `Date`). |
|
|
90
90
|
| `exportModelNames` | `"true"` | Emit `export const ALL_MODEL_NAMES = [...] as const`. |
|
|
91
91
|
| `exportModelNameType` | `"true"` | Emit `export type ModelName = "X" | "Y"`. |
|
|
92
|
+
| `standardSchemaV1` | `"false"` | Wrap every model/relation schema in `Schema.standardSchemaV1(...)` for Standard Schema compatibility. |
|
|
93
|
+
| `relationColumns` | `"false"` | Emit a separate `Schema.Struct` for each relation that has explicit local foreign-key columns. |
|
|
92
94
|
|
|
93
95
|
```prisma
|
|
94
96
|
generator effect_client {
|
|
@@ -101,6 +103,8 @@ generator effect_client {
|
|
|
101
103
|
dateAs = "DateFromSelf"
|
|
102
104
|
exportModelNames = "true"
|
|
103
105
|
exportModelNameType = "true"
|
|
106
|
+
standardSchemaV1 = "false"
|
|
107
|
+
relationColumns = "false"
|
|
104
108
|
}
|
|
105
109
|
```
|
|
106
110
|
|
|
@@ -127,10 +131,55 @@ Wrappers:
|
|
|
127
131
|
| `field[]` | `Schema.Array(...)` |
|
|
128
132
|
| `field[]?` | `Schema.NullOr(Schema.Array(...))` |
|
|
129
133
|
|
|
130
|
-
Relations (object-typed fields) are skipped
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
Relations (object-typed fields) are skipped from the model's own struct by
|
|
135
|
+
default. If you need schemas for relation foreign keys, enable
|
|
136
|
+
`relationColumns`:
|
|
137
|
+
|
|
138
|
+
```prisma
|
|
139
|
+
generator effect_client {
|
|
140
|
+
provider = "prisma-effect-schema-generator"
|
|
141
|
+
relationColumns = "true"
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
model Post {
|
|
145
|
+
id String @id
|
|
146
|
+
authorId String
|
|
147
|
+
author User @relation(fields: [authorId], references: [id])
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
// generated/effect-schemas/index.ts
|
|
153
|
+
export const PostAuthorRelationSchema = Schema.Struct({
|
|
154
|
+
authorId: Schema.String,
|
|
155
|
+
})
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Standard Schema v1
|
|
159
|
+
|
|
160
|
+
Enable `standardSchemaV1` to have every emitted model/relation schema
|
|
161
|
+
wrapped with `Schema.standardSchemaV1(...)`. The resulting values still
|
|
162
|
+
work as Effect schemas, but they also expose the
|
|
163
|
+
[Standard Schema](https://standardschema.dev/) `~standard` interface so
|
|
164
|
+
libraries like TanStack DB can consume them directly.
|
|
165
|
+
|
|
166
|
+
```prisma
|
|
167
|
+
generator effect_client {
|
|
168
|
+
provider = "prisma-effect-schema-generator"
|
|
169
|
+
standardSchemaV1 = "true"
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```ts
|
|
174
|
+
export const UserSchema = Schema.standardSchemaV1(Schema.Struct({
|
|
175
|
+
id: Schema.String,
|
|
176
|
+
email: Schema.String,
|
|
177
|
+
}))
|
|
178
|
+
|
|
179
|
+
// Works with Standard Schema consumers:
|
|
180
|
+
UserSchema["~standard"].validate({ id: "u1", email: "a@b.c" })
|
|
181
|
+
// => { value: { id: "u1", email: "a@b.c" } }
|
|
182
|
+
```
|
|
134
183
|
|
|
135
184
|
## Programmatic use
|
|
136
185
|
|
package/dist/config.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export declare const DEFAULTS: {
|
|
|
13
13
|
readonly dateAs: "DateFromSelf";
|
|
14
14
|
readonly exportModelNames: true;
|
|
15
15
|
readonly exportModelNameType: true;
|
|
16
|
+
readonly standardSchemaV1: false;
|
|
17
|
+
readonly relationColumns: false;
|
|
16
18
|
};
|
|
17
19
|
type RawConfig = Record<string, string | string[] | boolean | undefined>;
|
|
18
20
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;CAUe,CAAC;AAErC,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAkBzE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe,CAajF"}
|
package/dist/config.js
CHANGED
|
@@ -16,6 +16,8 @@ exports.DEFAULTS = {
|
|
|
16
16
|
dateAs: "DateFromSelf",
|
|
17
17
|
exportModelNames: true,
|
|
18
18
|
exportModelNameType: true,
|
|
19
|
+
standardSchemaV1: false,
|
|
20
|
+
relationColumns: false,
|
|
19
21
|
};
|
|
20
22
|
/**
|
|
21
23
|
* Normalise a string-or-boolean into a real boolean.
|
|
@@ -51,6 +53,8 @@ function resolveOptions(raw) {
|
|
|
51
53
|
dateAs: enumOr(cfg.dateAs, exports.DEFAULTS.dateAs, ["Date", "DateFromSelf"]),
|
|
52
54
|
exportModelNames: toBool(cfg.exportModelNames, exports.DEFAULTS.exportModelNames),
|
|
53
55
|
exportModelNameType: toBool(cfg.exportModelNameType, exports.DEFAULTS.exportModelNameType),
|
|
56
|
+
standardSchemaV1: toBool(cfg.standardSchemaV1, exports.DEFAULTS.standardSchemaV1),
|
|
57
|
+
relationColumns: toBool(cfg.relationColumns, exports.DEFAULTS.relationColumns),
|
|
54
58
|
};
|
|
55
59
|
}
|
|
56
60
|
function stringOr(v, fallback) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AA4CA,wCAaC;AAvDD;;;;;GAKG;AACU,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,cAAc;IACtB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;CACY,CAAC;AAIrC;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,CAAU,EAAE,QAAiB;IAC3C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAiC;IAC9D,MAAM,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IACtB,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAQ,CAAC,YAAY,CAAC;QAC/D,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QAC3E,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC/E,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QACzE,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAQ,CAAC,mBAAmB,CAAC;QAClF,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QACzE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAQ,CAAC,eAAe,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,QAAgB;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9D,CAAC;AAED,SAAS,MAAM,CACb,CAAU,EACV,QAAW,EACX,OAAqB;IAErB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,CAAM,CAAC;IAChB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/mapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAI7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAyCxC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAOxC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,MAAM,
|
|
1
|
+
{"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAI7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAyCxC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAOxC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,MAAM,CAmBR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE,CAE5E"}
|
package/dist/mapper.js
CHANGED
|
@@ -98,6 +98,8 @@ function enumToSchema(enumName, datamodel, options) {
|
|
|
98
98
|
dateAs: "DateFromSelf",
|
|
99
99
|
exportModelNames: true,
|
|
100
100
|
exportModelNameType: true,
|
|
101
|
+
standardSchemaV1: false,
|
|
102
|
+
relationColumns: false,
|
|
101
103
|
});
|
|
102
104
|
const en = datamodel.enums.find((e) => e.name === enumName);
|
|
103
105
|
if (!en || en.values.length === 0) {
|
package/dist/mapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":";;AAcA,oCAIC;AAaD,0DA6CC;AAMD,8DAWC;AASD,
|
|
1
|
+
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"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"}
|
package/dist/render.d.ts
CHANGED
|
@@ -24,10 +24,19 @@ export declare function renderKey(name: string): string;
|
|
|
24
24
|
/**
|
|
25
25
|
* Render a single model as a `Schema.Struct({ ... })` expression.
|
|
26
26
|
*
|
|
27
|
-
* Relation fields (kind === "object") are skipped
|
|
28
|
-
*
|
|
27
|
+
* Relation fields (kind === "object") are skipped from the model's own
|
|
28
|
+
* struct. When `relationColumns` is enabled, those relations are emitted
|
|
29
|
+
* separately by {@link renderRelationSchemas}.
|
|
29
30
|
*/
|
|
30
31
|
export declare function renderModel(model: DMMFModelLike, datamodel: DMMFDatamodelLike, options: ResolvedOptions): string;
|
|
32
|
+
/**
|
|
33
|
+
* Render relation schemas for a model.
|
|
34
|
+
*
|
|
35
|
+
* Only relations with explicit local foreign keys (`relationFromFields`)
|
|
36
|
+
* produce a schema. Others are skipped with a comment explaining why.
|
|
37
|
+
* Each schema is named `{ModelName}{RelationFieldName}RelationSchema`.
|
|
38
|
+
*/
|
|
39
|
+
export declare function renderRelationSchemas(model: DMMFModelLike, datamodel: DMMFDatamodelLike, options: ResolvedOptions): string[];
|
|
31
40
|
/**
|
|
32
41
|
* Render the entire generated module.
|
|
33
42
|
*
|
package/dist/render.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAmBpB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAuCD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CA2BR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,EAAE,CA0CV;AAqCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CAqCR"}
|
package/dist/render.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.shouldQuoteName = shouldQuoteName;
|
|
4
4
|
exports.renderKey = renderKey;
|
|
5
5
|
exports.renderModel = renderModel;
|
|
6
|
+
exports.renderRelationSchemas = renderRelationSchemas;
|
|
6
7
|
exports.renderModule = renderModule;
|
|
7
8
|
const mapper_js_1 = require("./mapper.js");
|
|
8
9
|
const RESERVED_IDENTIFIERS = new Set([
|
|
@@ -61,28 +62,46 @@ function localBinding(options) {
|
|
|
61
62
|
? "Schema"
|
|
62
63
|
: options.effectImportName;
|
|
63
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Wrap a schema expression in `Schema.standardSchemaV1(...)` when the
|
|
67
|
+
* option is enabled, otherwise return it unchanged.
|
|
68
|
+
*/
|
|
69
|
+
function wrapSchema(expr, options) {
|
|
70
|
+
if (!options.standardSchemaV1)
|
|
71
|
+
return expr;
|
|
72
|
+
const binding = localBinding(options);
|
|
73
|
+
return `${binding}.standardSchemaV1(${expr})`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Render a single scalar/enum/unsupported field as a key/value pair
|
|
77
|
+
* suitable for a `Schema.Struct` literal.
|
|
78
|
+
*/
|
|
79
|
+
function renderStructField(field, datamodel, options) {
|
|
80
|
+
const { expr } = (0, mapper_js_1.prismaFieldToEffectSchema)(field, datamodel, options);
|
|
81
|
+
const key = renderKey(field.name);
|
|
82
|
+
return ` ${key}: ${expr},`;
|
|
83
|
+
}
|
|
64
84
|
/**
|
|
65
85
|
* Render a single model as a `Schema.Struct({ ... })` expression.
|
|
66
86
|
*
|
|
67
|
-
* Relation fields (kind === "object") are skipped
|
|
68
|
-
*
|
|
87
|
+
* Relation fields (kind === "object") are skipped from the model's own
|
|
88
|
+
* struct. When `relationColumns` is enabled, those relations are emitted
|
|
89
|
+
* separately by {@link renderRelationSchemas}.
|
|
69
90
|
*/
|
|
70
91
|
function renderModel(model, datamodel, options) {
|
|
71
92
|
const lines = [];
|
|
72
|
-
const binding = localBinding(options);
|
|
73
93
|
const unsupportedComments = [];
|
|
74
|
-
|
|
94
|
+
const structExpr = `${localBinding(options)}.Struct({\n${model.fields
|
|
95
|
+
.filter(mapper_js_1.isIncludeField)
|
|
96
|
+
.map((f) => renderStructField(f, datamodel, options))
|
|
97
|
+
.join("\n")}\n})`;
|
|
98
|
+
const wrapped = wrapSchema(structExpr, options);
|
|
99
|
+
lines.push(`export const ${model.name}Schema = ${wrapped}`);
|
|
75
100
|
for (const field of model.fields) {
|
|
76
|
-
if (!(0, mapper_js_1.isIncludeField)(field))
|
|
101
|
+
if (!(0, mapper_js_1.isIncludeField)(field) || field.kind !== "unsupported")
|
|
77
102
|
continue;
|
|
78
|
-
|
|
79
|
-
const key = renderKey(field.name);
|
|
80
|
-
lines.push(` ${key}: ${expr},`);
|
|
81
|
-
if (unsupported && field.kind === "unsupported") {
|
|
82
|
-
unsupportedComments.push(`// - ${field.name}: Prisma marks this field as "unsupported" -- typed as Schema.Unknown.`);
|
|
83
|
-
}
|
|
103
|
+
unsupportedComments.push(`// - ${field.name}: Prisma marks this field as "unsupported" -- typed as Schema.Unknown.`);
|
|
84
104
|
}
|
|
85
|
-
lines.push("})");
|
|
86
105
|
if (unsupportedComments.length > 0) {
|
|
87
106
|
lines.unshift(`// WARNING: ${model.name} contains unsupported fields:`);
|
|
88
107
|
for (const c of unsupportedComments)
|
|
@@ -92,6 +111,53 @@ function renderModel(model, datamodel, options) {
|
|
|
92
111
|
lines.push("");
|
|
93
112
|
return lines.join("\n");
|
|
94
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Render relation schemas for a model.
|
|
116
|
+
*
|
|
117
|
+
* Only relations with explicit local foreign keys (`relationFromFields`)
|
|
118
|
+
* produce a schema. Others are skipped with a comment explaining why.
|
|
119
|
+
* Each schema is named `{ModelName}{RelationFieldName}RelationSchema`.
|
|
120
|
+
*/
|
|
121
|
+
function renderRelationSchemas(model, datamodel, options) {
|
|
122
|
+
if (!options.relationColumns)
|
|
123
|
+
return [];
|
|
124
|
+
const lines = [];
|
|
125
|
+
const binding = localBinding(options);
|
|
126
|
+
for (const field of model.fields) {
|
|
127
|
+
if (field.kind !== "object")
|
|
128
|
+
continue;
|
|
129
|
+
const fromFields = field.relationFromFields;
|
|
130
|
+
if (!fromFields || fromFields.length === 0) {
|
|
131
|
+
lines.push(`// ${model.name}.${field.name}: relation has no local foreign-key columns; skipping relation schema.`);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const relationName = `${model.name}${capitalize(field.name)}RelationSchema`;
|
|
135
|
+
const fieldMap = new Map(model.fields.map((f) => [f.name, f]));
|
|
136
|
+
const relationFields = fromFields
|
|
137
|
+
.map((name) => {
|
|
138
|
+
const scalar = fieldMap.get(name);
|
|
139
|
+
if (!scalar) {
|
|
140
|
+
return {
|
|
141
|
+
name,
|
|
142
|
+
line: ` ${renderKey(name)}: ${binding}.Unknown,`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
name,
|
|
147
|
+
line: renderStructField(scalar, datamodel, options),
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
const structExpr = `${binding}.Struct({\n${relationFields.map((f) => f.line).join("\n")}\n})`;
|
|
151
|
+
const wrapped = wrapSchema(structExpr, options);
|
|
152
|
+
lines.push(`export const ${relationName} = ${wrapped}`, "");
|
|
153
|
+
}
|
|
154
|
+
return lines;
|
|
155
|
+
}
|
|
156
|
+
function capitalize(s) {
|
|
157
|
+
if (s.length === 0)
|
|
158
|
+
return s;
|
|
159
|
+
return s[0].toUpperCase() + s.slice(1);
|
|
160
|
+
}
|
|
95
161
|
/**
|
|
96
162
|
* Render the helper exports at the bottom of the file:
|
|
97
163
|
*
|
|
@@ -138,6 +204,7 @@ function renderModule(datamodel, options) {
|
|
|
138
204
|
const models = (0, mapper_js_1.sortModels)(datamodel.models);
|
|
139
205
|
for (const m of models) {
|
|
140
206
|
lines.push(renderModel(m, datamodel, options));
|
|
207
|
+
lines.push(...renderRelationSchemas(m, datamodel, options));
|
|
141
208
|
}
|
|
142
209
|
lines.push(...renderModelHelpers(models, options));
|
|
143
210
|
return lines.join("\n");
|
package/dist/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":";;AAwCA,0CAGC;AAWD,8BAEC;AA8CD,kCA+BC;AASD,sDA8CC;AA4CD,oCAwCC;AAhRD,2CAIqB;AAQrB,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAC3C,oEAAoE;IACpE,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU;IAClE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO;IACvE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK;IACvE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;IACnE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACjD,wBAAwB;IACxB,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW;IACnE,QAAQ,EAAE,QAAQ,EAAE,OAAO;IAC3B,uEAAuE;IACvE,uEAAuE;IACvE,sEAAsE;IACtE,iEAAiE;CAClE,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAAC,IAAY;IAC1C,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,OAAwB;IAC5C,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ;QAC1C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,OAAwB;IACxD,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,GAAG,OAAO,qBAAqB,IAAI,GAAG,CAAC;AAChD,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,KAAoB,EACpB,SAA4B,EAC5B,OAAwB;IAExB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,qCAAyB,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,KAAK,GAAG,KAAK,IAAI,GAAG,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,KAAoB,EACpB,SAA4B,EAC5B,OAAwB;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,mBAAmB,GAAa,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,MAAM;SAClE,MAAM,CAAC,0BAAc,CAAC;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SACpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IACpB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,YAAY,OAAO,EAAE,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,CAAC,IAAA,0BAAc,EAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;YAAE,SAAS;QACrE,mBAAmB,CAAC,IAAI,CACtB,UAAU,KAAK,CAAC,IAAI,wEAAwE,CAC7F,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,IAAI,+BAA+B,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,IAAI,mBAAmB;YAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CACnC,KAAoB,EACpB,SAA4B,EAC5B,OAAwB;IAExB,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC;QAC5C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CACR,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,wEAAwE,CACvG,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC5E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/D,MAAM,cAAc,GAAG,UAAU;aAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,IAAI;oBACJ,IAAI,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,KAAK,OAAO,WAAW;iBAClD,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI;gBACJ,IAAI,EAAE,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;aACpD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEL,MAAM,UAAU,GAAG,GAAG,OAAO,cAAc,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9F,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEhD,KAAK,CAAC,IAAI,CAAC,gBAAgB,YAAY,MAAM,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC,CAAC,CAAE,CAAE,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CACzB,MAAgC,EAChC,OAAwB;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,gBAAgB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CACR,kCAAkC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EACtF,EAAE,CACH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,SAA4B,EAC5B,OAAwB;IAExB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CACR,qEAAqE,EACrE,wCAAwC,EACxC,EAAE,CACH,CAAC;IAEF,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,4DAA4D,EAC5D,4CAA4C,EAC5C,+BAA+B,EAC/B,EAAE,CACH,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,sBAAsB,OAAO,CAAC,gBAAgB,YAAY,OAAO,CAAC,YAAY,GAAG,EACjF,EAAE,CACH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,sBAAU,EAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,6 +29,16 @@ export interface GeneratorOptionsConfig {
|
|
|
29
29
|
* Set to `"false"` to disable.
|
|
30
30
|
*/
|
|
31
31
|
readonly exportModelNameType?: boolean | string;
|
|
32
|
+
/**
|
|
33
|
+
* Wrap every emitted model/relation schema in `Schema.standardSchemaV1(...)`.
|
|
34
|
+
* Default `false`.
|
|
35
|
+
*/
|
|
36
|
+
readonly standardSchemaV1?: boolean | string;
|
|
37
|
+
/**
|
|
38
|
+
* Emit a separate `Schema.Struct` for each relation field that has local
|
|
39
|
+
* foreign-key columns (`relationFromFields`). Default `false`.
|
|
40
|
+
*/
|
|
41
|
+
readonly relationColumns?: boolean | string;
|
|
32
42
|
}
|
|
33
43
|
/**
|
|
34
44
|
* Fully-resolved options (defaults applied) used internally by the renderer.
|
|
@@ -41,6 +51,8 @@ export interface ResolvedOptions {
|
|
|
41
51
|
readonly dateAs: "Date" | "DateFromSelf";
|
|
42
52
|
readonly exportModelNames: boolean;
|
|
43
53
|
readonly exportModelNameType: boolean;
|
|
54
|
+
readonly standardSchemaV1: boolean;
|
|
55
|
+
readonly relationColumns: boolean;
|
|
44
56
|
}
|
|
45
57
|
/**
|
|
46
58
|
* The shape of an `@prisma/dmmf` field that we care about.
|
|
@@ -58,6 +70,16 @@ export interface DMMFFieldLike {
|
|
|
58
70
|
readonly isId?: boolean;
|
|
59
71
|
readonly hasDefaultValue?: boolean;
|
|
60
72
|
readonly dbName?: string | null;
|
|
73
|
+
/**
|
|
74
|
+
* For relation fields: the local scalar fields that form the foreign key.
|
|
75
|
+
* E.g. `author User @relation(fields: [authorId], references: [id])`
|
|
76
|
+
* gives `relationFromFields: ["authorId"]`.
|
|
77
|
+
*/
|
|
78
|
+
readonly relationFromFields?: readonly string[];
|
|
79
|
+
/**
|
|
80
|
+
* For relation fields: the target fields on the related model.
|
|
81
|
+
*/
|
|
82
|
+
readonly relationToFields?: readonly string[];
|
|
61
83
|
}
|
|
62
84
|
export interface DMMFModelLike {
|
|
63
85
|
readonly name: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAChD,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACzC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prisma-effect-schema-generator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Prisma generator that emits Effect Schema values for every model — drop-in validation for your database rows.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"prisma",
|
|
@@ -46,8 +46,10 @@
|
|
|
46
46
|
"build": "tsc -p tsconfig.build.json",
|
|
47
47
|
"postbuild": "chmod +x dist/index.js",
|
|
48
48
|
"clean": "rm -rf dist",
|
|
49
|
-
"prepublishOnly": "npm run clean && npm run build && npm test",
|
|
49
|
+
"prepublishOnly": "npm run clean && npm run build && npm run test:unit",
|
|
50
50
|
"test": "vitest run",
|
|
51
|
+
"test:unit": "vitest run --exclude tests/e2e.test.ts",
|
|
52
|
+
"test:e2e": "vitest run tests/e2e.test.ts",
|
|
51
53
|
"test:watch": "vitest",
|
|
52
54
|
"typecheck": "tsc --noEmit",
|
|
53
55
|
"lint": "echo 'no linter configured'"
|