prisma-effect-schema-generator 0.1.1 → 0.1.3
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 +126 -4
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/mapper.d.ts +26 -0
- package/dist/mapper.d.ts.map +1 -1
- package/dist/mapper.js +88 -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 +182 -12
- package/dist/render.js.map +1 -1
- package/dist/types.d.ts +64 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -89,6 +89,11 @@ 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. |
|
|
94
|
+
| `idColumn` | `"false"` | Emit `PRIMARY_KEY_COLUMNS` map from model name to primary-key column (or `null`). |
|
|
95
|
+
| `softDeleteColumn` | `"false"` | Emit `SOFT_DELETE_COLUMNS` map from model name to detected soft-delete column. |
|
|
96
|
+
| `tables` | `"false"` | Emit `TableDescriptor` / `ColumnDescriptor` interfaces and a `TABLES` map for runtime introspection. |
|
|
92
97
|
|
|
93
98
|
```prisma
|
|
94
99
|
generator effect_client {
|
|
@@ -101,9 +106,81 @@ generator effect_client {
|
|
|
101
106
|
dateAs = "DateFromSelf"
|
|
102
107
|
exportModelNames = "true"
|
|
103
108
|
exportModelNameType = "true"
|
|
109
|
+
standardSchemaV1 = "false"
|
|
110
|
+
relationColumns = "false"
|
|
111
|
+
idColumn = "false"
|
|
112
|
+
softDeleteColumn = "false"
|
|
113
|
+
tables = "false"
|
|
104
114
|
}
|
|
105
115
|
```
|
|
106
116
|
|
|
117
|
+
### Introspection helpers (`idColumn`, `softDeleteColumn`, `tables`)
|
|
118
|
+
|
|
119
|
+
Enable these options when you need runtime metadata about your Prisma schema
|
|
120
|
+
in addition to the per-model schemas.
|
|
121
|
+
|
|
122
|
+
```prisma
|
|
123
|
+
generator effect_client {
|
|
124
|
+
provider = "prisma-effect-schema-generator"
|
|
125
|
+
idColumn = "true"
|
|
126
|
+
softDeleteColumn = "true"
|
|
127
|
+
tables = "true"
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
model User {
|
|
131
|
+
id String @id
|
|
132
|
+
email String
|
|
133
|
+
deletedAt DateTime?
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
// generated/effect-schemas/index.ts
|
|
139
|
+
export const PRIMARY_KEY_COLUMNS = {
|
|
140
|
+
User: "id",
|
|
141
|
+
} as const satisfies Record<ModelName, string | null>
|
|
142
|
+
|
|
143
|
+
export const SOFT_DELETE_COLUMNS = {
|
|
144
|
+
User: "deletedAt",
|
|
145
|
+
} as const satisfies Partial<Record<ModelName, string>>
|
|
146
|
+
|
|
147
|
+
export interface ColumnDescriptor {
|
|
148
|
+
readonly name: string
|
|
149
|
+
readonly type: 'string' | 'number' | 'boolean' | 'date' | 'json' | 'bytes' | 'unknown'
|
|
150
|
+
readonly required: boolean
|
|
151
|
+
readonly list: boolean
|
|
152
|
+
readonly unique: boolean
|
|
153
|
+
readonly isEnum: boolean
|
|
154
|
+
readonly enumValues?: ReadonlyArray<string>
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface TableDescriptor {
|
|
158
|
+
readonly name: string
|
|
159
|
+
readonly primaryKey: string | null
|
|
160
|
+
readonly softDelete: string | null
|
|
161
|
+
readonly columns: ReadonlyArray<ColumnDescriptor>
|
|
162
|
+
readonly includedInSync: boolean
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export const TABLES: { [M in ModelName]: TableDescriptor } = {
|
|
166
|
+
User: {
|
|
167
|
+
name: "User",
|
|
168
|
+
primaryKey: "id",
|
|
169
|
+
softDelete: "deletedAt",
|
|
170
|
+
columns: [
|
|
171
|
+
{ name: "id"; type: 'string'; required: true; list: false; unique: true; isEnum: false },
|
|
172
|
+
{ name: "email"; type: 'string'; required: true; list: false; unique: false; isEnum: false },
|
|
173
|
+
{ name: "deletedAt"; type: 'date'; required: false; list: false; unique: false; isEnum: false },
|
|
174
|
+
],
|
|
175
|
+
includedInSync: true,
|
|
176
|
+
},
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Primary keys are detected from `@id` first, then a single `String` or `Int`
|
|
181
|
+
`@unique` column. Soft-delete columns are detected by name (`deletedAt`,
|
|
182
|
+
`archivedAt`, `isDeleted`, `removedAt`) and type (`DateTime` or `Boolean`).
|
|
183
|
+
|
|
107
184
|
## Type mapping
|
|
108
185
|
|
|
109
186
|
| Prisma field | Effect Schema (default) | Encoded → Decoded |
|
|
@@ -127,10 +204,55 @@ Wrappers:
|
|
|
127
204
|
| `field[]` | `Schema.Array(...)` |
|
|
128
205
|
| `field[]?` | `Schema.NullOr(Schema.Array(...))` |
|
|
129
206
|
|
|
130
|
-
Relations (object-typed fields) are skipped
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
207
|
+
Relations (object-typed fields) are skipped from the model's own struct by
|
|
208
|
+
default. If you need schemas for relation foreign keys, enable
|
|
209
|
+
`relationColumns`:
|
|
210
|
+
|
|
211
|
+
```prisma
|
|
212
|
+
generator effect_client {
|
|
213
|
+
provider = "prisma-effect-schema-generator"
|
|
214
|
+
relationColumns = "true"
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
model Post {
|
|
218
|
+
id String @id
|
|
219
|
+
authorId String
|
|
220
|
+
author User @relation(fields: [authorId], references: [id])
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
```ts
|
|
225
|
+
// generated/effect-schemas/index.ts
|
|
226
|
+
export const PostAuthorRelationSchema = Schema.Struct({
|
|
227
|
+
authorId: Schema.String,
|
|
228
|
+
})
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Standard Schema v1
|
|
232
|
+
|
|
233
|
+
Enable `standardSchemaV1` to have every emitted model/relation schema
|
|
234
|
+
wrapped with `Schema.standardSchemaV1(...)`. The resulting values still
|
|
235
|
+
work as Effect schemas, but they also expose the
|
|
236
|
+
[Standard Schema](https://standardschema.dev/) `~standard` interface so
|
|
237
|
+
libraries like TanStack DB can consume them directly.
|
|
238
|
+
|
|
239
|
+
```prisma
|
|
240
|
+
generator effect_client {
|
|
241
|
+
provider = "prisma-effect-schema-generator"
|
|
242
|
+
standardSchemaV1 = "true"
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
export const UserSchema = Schema.standardSchemaV1(Schema.Struct({
|
|
248
|
+
id: Schema.String,
|
|
249
|
+
email: Schema.String,
|
|
250
|
+
}))
|
|
251
|
+
|
|
252
|
+
// Works with Standard Schema consumers:
|
|
253
|
+
UserSchema["~standard"].validate({ id: "u1", email: "a@b.c" })
|
|
254
|
+
// => { value: { id: "u1", email: "a@b.c" } }
|
|
255
|
+
```
|
|
134
256
|
|
|
135
257
|
## Programmatic use
|
|
136
258
|
|
package/dist/config.d.ts
CHANGED
|
@@ -13,6 +13,11 @@ 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;
|
|
18
|
+
readonly idColumn: false;
|
|
19
|
+
readonly softDeleteColumn: false;
|
|
20
|
+
readonly tables: false;
|
|
16
21
|
};
|
|
17
22
|
type RawConfig = Record<string, string | string[] | boolean | undefined>;
|
|
18
23
|
/**
|
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;;;;;;;;;;;;;CAae,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,CAgBjF"}
|
package/dist/config.js
CHANGED
|
@@ -16,6 +16,11 @@ exports.DEFAULTS = {
|
|
|
16
16
|
dateAs: "DateFromSelf",
|
|
17
17
|
exportModelNames: true,
|
|
18
18
|
exportModelNameType: true,
|
|
19
|
+
standardSchemaV1: false,
|
|
20
|
+
relationColumns: false,
|
|
21
|
+
idColumn: false,
|
|
22
|
+
softDeleteColumn: false,
|
|
23
|
+
tables: false,
|
|
19
24
|
};
|
|
20
25
|
/**
|
|
21
26
|
* Normalise a string-or-boolean into a real boolean.
|
|
@@ -51,6 +56,11 @@ function resolveOptions(raw) {
|
|
|
51
56
|
dateAs: enumOr(cfg.dateAs, exports.DEFAULTS.dateAs, ["Date", "DateFromSelf"]),
|
|
52
57
|
exportModelNames: toBool(cfg.exportModelNames, exports.DEFAULTS.exportModelNames),
|
|
53
58
|
exportModelNameType: toBool(cfg.exportModelNameType, exports.DEFAULTS.exportModelNameType),
|
|
59
|
+
standardSchemaV1: toBool(cfg.standardSchemaV1, exports.DEFAULTS.standardSchemaV1),
|
|
60
|
+
relationColumns: toBool(cfg.relationColumns, exports.DEFAULTS.relationColumns),
|
|
61
|
+
idColumn: toBool(cfg.idColumn, exports.DEFAULTS.idColumn),
|
|
62
|
+
softDeleteColumn: toBool(cfg.softDeleteColumn, exports.DEFAULTS.softDeleteColumn),
|
|
63
|
+
tables: toBool(cfg.tables, exports.DEFAULTS.tables),
|
|
54
64
|
};
|
|
55
65
|
}
|
|
56
66
|
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":";;;AA+CA,wCAgBC;AA7DD;;;;;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;IACtB,QAAQ,EAAE,KAAK;IACf,gBAAgB,EAAE,KAAK;IACvB,MAAM,EAAE,KAAK;CACqB,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;QACtE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAQ,CAAC,QAAQ,CAAC;QACjD,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QACzE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAQ,CAAC,MAAM,CAAC;KAC5C,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/index.d.ts
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export { register, runGenerator, onGenerate, resolveOutputPath, } from "./generator.js";
|
|
18
18
|
export { renderModule } from "./render.js";
|
|
19
|
-
export { prismaFieldToBaseSchema, prismaFieldToEffectSchema, enumToSchema, isIncludeField, sortModels, } from "./mapper.js";
|
|
19
|
+
export { prismaFieldToBaseSchema, prismaFieldToEffectSchema, enumToSchema, isIncludeField, sortModels, findPrimaryKeyColumn, findSoftDeleteColumn, prismaTypeToColumnType, enumValuesForField, } from "./mapper.js";
|
|
20
20
|
export { resolveOptions, DEFAULTS } from "./config.js";
|
|
21
21
|
export { shouldQuoteName, renderKey } from "./render.js";
|
|
22
|
-
export type { DMMFDatamodelLike, DMMFEnumLike, DMMFFieldLike, DMMFModelLike, GeneratorOptionsConfig, ResolvedOptions, } from "./types.js";
|
|
22
|
+
export type { DMMFDatamodelLike, DMMFEnumLike, DMMFFieldLike, DMMFModelLike, GeneratorOptionsConfig, ResolvedOptions, TableDescriptor, ColumnDescriptor, } from "./types.js";
|
|
23
23
|
//# 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":";AACA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* `schema.prisma` and run `prisma generate`.
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.renderKey = exports.shouldQuoteName = exports.DEFAULTS = exports.resolveOptions = exports.sortModels = exports.isIncludeField = exports.enumToSchema = exports.prismaFieldToEffectSchema = exports.prismaFieldToBaseSchema = exports.renderModule = exports.resolveOutputPath = exports.onGenerate = exports.runGenerator = exports.register = void 0;
|
|
19
|
+
exports.renderKey = exports.shouldQuoteName = exports.DEFAULTS = exports.resolveOptions = exports.enumValuesForField = exports.prismaTypeToColumnType = exports.findSoftDeleteColumn = exports.findPrimaryKeyColumn = exports.sortModels = exports.isIncludeField = exports.enumToSchema = exports.prismaFieldToEffectSchema = exports.prismaFieldToBaseSchema = exports.renderModule = exports.resolveOutputPath = exports.onGenerate = exports.runGenerator = exports.register = void 0;
|
|
20
20
|
const generator_js_1 = require("./generator.js");
|
|
21
21
|
var generator_js_2 = require("./generator.js");
|
|
22
22
|
Object.defineProperty(exports, "register", { enumerable: true, get: function () { return generator_js_2.register; } });
|
|
@@ -31,6 +31,10 @@ Object.defineProperty(exports, "prismaFieldToEffectSchema", { enumerable: true,
|
|
|
31
31
|
Object.defineProperty(exports, "enumToSchema", { enumerable: true, get: function () { return mapper_js_1.enumToSchema; } });
|
|
32
32
|
Object.defineProperty(exports, "isIncludeField", { enumerable: true, get: function () { return mapper_js_1.isIncludeField; } });
|
|
33
33
|
Object.defineProperty(exports, "sortModels", { enumerable: true, get: function () { return mapper_js_1.sortModels; } });
|
|
34
|
+
Object.defineProperty(exports, "findPrimaryKeyColumn", { enumerable: true, get: function () { return mapper_js_1.findPrimaryKeyColumn; } });
|
|
35
|
+
Object.defineProperty(exports, "findSoftDeleteColumn", { enumerable: true, get: function () { return mapper_js_1.findSoftDeleteColumn; } });
|
|
36
|
+
Object.defineProperty(exports, "prismaTypeToColumnType", { enumerable: true, get: function () { return mapper_js_1.prismaTypeToColumnType; } });
|
|
37
|
+
Object.defineProperty(exports, "enumValuesForField", { enumerable: true, get: function () { return mapper_js_1.enumValuesForField; } });
|
|
34
38
|
var config_js_1 = require("./config.js");
|
|
35
39
|
Object.defineProperty(exports, "resolveOptions", { enumerable: true, get: function () { return config_js_1.resolveOptions; } });
|
|
36
40
|
Object.defineProperty(exports, "DEFAULTS", { enumerable: true, get: function () { return config_js_1.DEFAULTS; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;GAcG;;;AAEH,iDAA0C;AAE1C,+CAKwB;AAJtB,wGAAA,QAAQ,OAAA;AACR,4GAAA,YAAY,OAAA;AACZ,0GAAA,UAAU,OAAA;AACV,iHAAA,iBAAiB,OAAA;AAEnB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;GAcG;;;AAEH,iDAA0C;AAE1C,+CAKwB;AAJtB,wGAAA,QAAQ,OAAA;AACR,4GAAA,YAAY,OAAA;AACZ,0GAAA,UAAU,OAAA;AACV,iHAAA,iBAAiB,OAAA;AAEnB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,yCAUqB;AATnB,oHAAA,uBAAuB,OAAA;AACvB,sHAAA,yBAAyB,OAAA;AACzB,yGAAA,YAAY,OAAA;AACZ,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AACV,iHAAA,oBAAoB,OAAA;AACpB,iHAAA,oBAAoB,OAAA;AACpB,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAEpB,yCAAuD;AAA9C,2GAAA,cAAc,OAAA;AAAE,qGAAA,QAAQ,OAAA;AACjC,yCAAyD;AAAhD,4GAAA,eAAe,OAAA;AAAE,sGAAA,SAAS,OAAA;AAYnC,oEAAoE;AACpE,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,EAAE;AACF,qEAAqE;AACrE,oEAAoE;AACpE,yEAAyE;AACzE,0CAA0C;AAC1C,IACE,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,8BAA8B,KAAK,GAAG;IAClD,OAAO,OAAO,KAAK,WAAW;IAC9B,OAAO,CAAC,IAAI,KAAK,MAAM,EACvB,CAAC;IACD,IAAA,uBAAQ,GAAE,CAAC;AACb,CAAC"}
|
package/dist/mapper.d.ts
CHANGED
|
@@ -52,4 +52,30 @@ export declare function isIncludeField(field: DMMFFieldLike): boolean;
|
|
|
52
52
|
* DMMF hands them to us in. Field order inside a model is preserved.
|
|
53
53
|
*/
|
|
54
54
|
export declare function sortModels(models: readonly DMMFModelLike[]): DMMFModelLike[];
|
|
55
|
+
/**
|
|
56
|
+
* Detect the primary-key column for a model.
|
|
57
|
+
*
|
|
58
|
+
* Preference order:
|
|
59
|
+
* 1. A field with `isId: true`.
|
|
60
|
+
* 2. A single field with `isUnique: true` and type `String` or `Int`.
|
|
61
|
+
* 3. `null` (composite keys are not supported in v1).
|
|
62
|
+
*/
|
|
63
|
+
export declare function findPrimaryKeyColumn(model: DMMFModelLike): string | null;
|
|
64
|
+
/**
|
|
65
|
+
* Detect the soft-delete column for a model.
|
|
66
|
+
*
|
|
67
|
+
* Matches fields named `deletedAt`, `archivedAt`, `isDeleted`, or
|
|
68
|
+
* `removedAt` with scalar type `DateTime` or `Boolean`.
|
|
69
|
+
*/
|
|
70
|
+
export declare function findSoftDeleteColumn(model: DMMFModelLike): string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Map a Prisma scalar/enum type to a runtime column-type string.
|
|
73
|
+
*
|
|
74
|
+
* Enums are reported as `"string"` with `isEnum: true`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function prismaTypeToColumnType(type: string): "string" | "number" | "boolean" | "date" | "json" | "bytes" | "unknown";
|
|
77
|
+
/**
|
|
78
|
+
* Resolve the enum values for a field, if it is an enum field.
|
|
79
|
+
*/
|
|
80
|
+
export declare function enumValuesForField(field: DMMFFieldLike, datamodel: DMMFDatamodelLike): readonly string[] | undefined;
|
|
55
81
|
//# sourceMappingURL=mapper.d.ts.map
|
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,CAsBR;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;AAMD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAcxE;AASD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CASxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAoB5H;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,GAC3B,SAAS,MAAM,EAAE,GAAG,SAAS,CAI/B"}
|
package/dist/mapper.js
CHANGED
|
@@ -6,6 +6,10 @@ exports.prismaFieldToEffectSchema = prismaFieldToEffectSchema;
|
|
|
6
6
|
exports.enumToSchema = enumToSchema;
|
|
7
7
|
exports.isIncludeField = isIncludeField;
|
|
8
8
|
exports.sortModels = sortModels;
|
|
9
|
+
exports.findPrimaryKeyColumn = findPrimaryKeyColumn;
|
|
10
|
+
exports.findSoftDeleteColumn = findSoftDeleteColumn;
|
|
11
|
+
exports.prismaTypeToColumnType = prismaTypeToColumnType;
|
|
12
|
+
exports.enumValuesForField = enumValuesForField;
|
|
9
13
|
/**
|
|
10
14
|
* Return the local binding for the Effect Schema namespace.
|
|
11
15
|
*
|
|
@@ -98,6 +102,11 @@ function enumToSchema(enumName, datamodel, options) {
|
|
|
98
102
|
dateAs: "DateFromSelf",
|
|
99
103
|
exportModelNames: true,
|
|
100
104
|
exportModelNameType: true,
|
|
105
|
+
standardSchemaV1: false,
|
|
106
|
+
relationColumns: false,
|
|
107
|
+
idColumn: false,
|
|
108
|
+
softDeleteColumn: false,
|
|
109
|
+
tables: false,
|
|
101
110
|
});
|
|
102
111
|
const en = datamodel.enums.find((e) => e.name === enumName);
|
|
103
112
|
if (!en || en.values.length === 0) {
|
|
@@ -126,4 +135,83 @@ function isIncludeField(field) {
|
|
|
126
135
|
function sortModels(models) {
|
|
127
136
|
return [...models].sort((a, b) => a.name.localeCompare(b.name));
|
|
128
137
|
}
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
// Introspection helpers used by idColumn / softDeleteColumn / tables options.
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
/**
|
|
142
|
+
* Detect the primary-key column for a model.
|
|
143
|
+
*
|
|
144
|
+
* Preference order:
|
|
145
|
+
* 1. A field with `isId: true`.
|
|
146
|
+
* 2. A single field with `isUnique: true` and type `String` or `Int`.
|
|
147
|
+
* 3. `null` (composite keys are not supported in v1).
|
|
148
|
+
*/
|
|
149
|
+
function findPrimaryKeyColumn(model) {
|
|
150
|
+
const idField = model.fields.find((f) => f.isId);
|
|
151
|
+
if (idField)
|
|
152
|
+
return idField.name;
|
|
153
|
+
const uniqueScalarFields = model.fields.filter((f) => f.isUnique &&
|
|
154
|
+
!f.isList &&
|
|
155
|
+
(f.kind === "scalar" || f.kind === "enum") &&
|
|
156
|
+
(f.type === "String" || f.type === "Int"));
|
|
157
|
+
if (uniqueScalarFields.length === 1)
|
|
158
|
+
return uniqueScalarFields[0].name;
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
161
|
+
const SOFT_DELETE_NAMES = new Set([
|
|
162
|
+
"deletedAt",
|
|
163
|
+
"archivedAt",
|
|
164
|
+
"isDeleted",
|
|
165
|
+
"removedAt",
|
|
166
|
+
]);
|
|
167
|
+
/**
|
|
168
|
+
* Detect the soft-delete column for a model.
|
|
169
|
+
*
|
|
170
|
+
* Matches fields named `deletedAt`, `archivedAt`, `isDeleted`, or
|
|
171
|
+
* `removedAt` with scalar type `DateTime` or `Boolean`.
|
|
172
|
+
*/
|
|
173
|
+
function findSoftDeleteColumn(model) {
|
|
174
|
+
const field = model.fields.find((f) => {
|
|
175
|
+
if (!SOFT_DELETE_NAMES.has(f.name))
|
|
176
|
+
return false;
|
|
177
|
+
return ((f.kind === "scalar" || f.kind === "enum") &&
|
|
178
|
+
(f.type === "DateTime" || f.type === "Boolean"));
|
|
179
|
+
});
|
|
180
|
+
return field ? field.name : null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Map a Prisma scalar/enum type to a runtime column-type string.
|
|
184
|
+
*
|
|
185
|
+
* Enums are reported as `"string"` with `isEnum: true`.
|
|
186
|
+
*/
|
|
187
|
+
function prismaTypeToColumnType(type) {
|
|
188
|
+
switch (type) {
|
|
189
|
+
case "String":
|
|
190
|
+
return "string";
|
|
191
|
+
case "Int":
|
|
192
|
+
case "Float":
|
|
193
|
+
case "BigInt":
|
|
194
|
+
case "Decimal":
|
|
195
|
+
return "number";
|
|
196
|
+
case "Boolean":
|
|
197
|
+
return "boolean";
|
|
198
|
+
case "DateTime":
|
|
199
|
+
return "date";
|
|
200
|
+
case "Json":
|
|
201
|
+
return "json";
|
|
202
|
+
case "Bytes":
|
|
203
|
+
return "bytes";
|
|
204
|
+
default:
|
|
205
|
+
return "unknown";
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Resolve the enum values for a field, if it is an enum field.
|
|
210
|
+
*/
|
|
211
|
+
function enumValuesForField(field, datamodel) {
|
|
212
|
+
if (field.kind !== "enum")
|
|
213
|
+
return undefined;
|
|
214
|
+
const en = datamodel.enums.find((e) => e.name === field.type);
|
|
215
|
+
return en?.values.map((v) => v.name);
|
|
216
|
+
}
|
|
129
217
|
//# sourceMappingURL=mapper.js.map
|
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":";;AAcA,oCAIC;AAaD,0DA6CC;AAMD,8DAWC;AASD,oCA0BC;AAUD,wCAEC;AAMD,gCAEC;AAcD,oDAcC;AAeD,oDASC;AAOD,wDAoBC;AAKD,gDAOC;AAxOD;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,OAAwB;IACnD,OAAO,OAAO,CAAC,gBAAgB,KAAK,QAAQ;QAC1C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;AAC/B,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,uBAAuB,CACrC,KAAoB,EACpB,SAA4B,EAC5B,OAAwB;IAExB,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEhC,iEAAiE;IACjE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;YAClD,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,oEAAoE;IACpE,oEAAoE;IACpE,mEAAmE;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACrD,KAAK,KAAK,CAAC;QACX,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACrD,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClE,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACnE,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtD,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAChE,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACzD;YACE,2CAA2C;YAC3C,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CACvC,KAAoB,EACpB,SAA4B,EAC5B,OAAwB;IAExB,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,KAAK,CAAC,MAAM;QAAE,IAAI,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,UAAU;QAAE,IAAI,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;IACrD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,QAAgB,EAChB,SAA4B,EAC5B,OAAyB;IAEzB,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI;QAChC,YAAY,EAAE,QAAQ;QACtB,gBAAgB,EAAE,QAAQ;QAC1B,QAAQ,EAAE,gBAAgB;QAC1B,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,cAAc;QACtB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,gBAAgB,EAAE,KAAK;QACvB,eAAe,EAAE,KAAK;QACtB,QAAQ,EAAE,KAAK;QACf,gBAAgB,EAAE,KAAK;QACvB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,qBAAqB,CAAC;IACnC,CAAC;IACD,MAAM,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAE,CAAC;IAC/C,OAAO,GAAG,CAAC,UAAU,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,KAAoB;IACjD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;AAC1F,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,MAAgC;IACzD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,KAAoB;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC,IAAI,CAAC;IAEjC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,MAAM;QACT,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QAC1C,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAC5C,CAAC;IACF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,kBAAkB,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC;IAExE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,KAAoB;IACvD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,OAAO,CACL,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;YAC1C,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAChD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,IAAY;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,KAAoB,EACpB,SAA4B;IAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
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":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AASA,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;AAoMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CA+CR"}
|
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,147 @@ 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
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Render the `PRIMARY_KEY_COLUMNS` map when `idColumn` is enabled.
|
|
163
|
+
*
|
|
164
|
+
* The map is sorted by model name. Models with no detectable single-column
|
|
165
|
+
* primary key get `null`.
|
|
166
|
+
*/
|
|
167
|
+
function renderPrimaryKeyColumns(models) {
|
|
168
|
+
const lines = [];
|
|
169
|
+
const entries = (0, mapper_js_1.sortModels)(models).map((m) => {
|
|
170
|
+
const pk = (0, mapper_js_1.findPrimaryKeyColumn)(m);
|
|
171
|
+
return ` ${renderKey(m.name)}: ${pk === null ? "null" : JSON.stringify(pk)},`;
|
|
172
|
+
});
|
|
173
|
+
lines.push("export const PRIMARY_KEY_COLUMNS = {", ...entries, '} as const satisfies Record<ModelName, string | null>', "");
|
|
174
|
+
return lines;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Render the `SOFT_DELETE_COLUMNS` map when `softDeleteColumn` is enabled.
|
|
178
|
+
*
|
|
179
|
+
* Only models with an auto-detected soft-delete column appear in the map.
|
|
180
|
+
*/
|
|
181
|
+
function renderSoftDeleteColumns(models) {
|
|
182
|
+
const lines = [];
|
|
183
|
+
const entries = (0, mapper_js_1.sortModels)(models)
|
|
184
|
+
.map((m) => {
|
|
185
|
+
const col = (0, mapper_js_1.findSoftDeleteColumn)(m);
|
|
186
|
+
return col === null
|
|
187
|
+
? null
|
|
188
|
+
: ` ${renderKey(m.name)}: ${JSON.stringify(col)},`;
|
|
189
|
+
})
|
|
190
|
+
.filter((e) => e !== null);
|
|
191
|
+
if (entries.length === 0) {
|
|
192
|
+
lines.push('export const SOFT_DELETE_COLUMNS = {} as const satisfies Partial<Record<ModelName, string>>', "");
|
|
193
|
+
return lines;
|
|
194
|
+
}
|
|
195
|
+
lines.push("export const SOFT_DELETE_COLUMNS = {", ...entries, '} as const satisfies Partial<Record<ModelName, string>>', "");
|
|
196
|
+
return lines;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Render the `TableDescriptor` interface and `TABLES` map when `tables`
|
|
200
|
+
* is enabled.
|
|
201
|
+
*/
|
|
202
|
+
function renderTables(datamodel) {
|
|
203
|
+
const lines = [];
|
|
204
|
+
lines.push("export interface ColumnDescriptor {", ' readonly name: string', " readonly type: 'string' | 'number' | 'boolean' | 'date' | 'json' | 'bytes' | 'unknown'", ' readonly required: boolean', ' readonly list: boolean', ' readonly unique: boolean', ' readonly isEnum: boolean', ' readonly enumValues?: ReadonlyArray<string>', '}', '', 'export interface TableDescriptor {', ' readonly name: string', ' readonly primaryKey: string | null', ' readonly softDelete: string | null', ' readonly columns: ReadonlyArray<ColumnDescriptor>', ' readonly includedInSync: boolean', '}', '');
|
|
205
|
+
const models = (0, mapper_js_1.sortModels)(datamodel.models);
|
|
206
|
+
const entries = models.map((m) => renderTableEntry(m, datamodel));
|
|
207
|
+
lines.push('export const TABLES: { [M in ModelName]: TableDescriptor } = {', ...entries, '}', "");
|
|
208
|
+
return lines;
|
|
209
|
+
}
|
|
210
|
+
function renderTableEntry(model, datamodel) {
|
|
211
|
+
const tableName = model.dbName ?? model.name;
|
|
212
|
+
const primaryKey = (0, mapper_js_1.findPrimaryKeyColumn)(model);
|
|
213
|
+
const softDelete = (0, mapper_js_1.findSoftDeleteColumn)(model);
|
|
214
|
+
const columns = model.fields
|
|
215
|
+
.filter(mapper_js_1.isIncludeField)
|
|
216
|
+
.map((f) => renderColumnDescriptor(f, datamodel));
|
|
217
|
+
const columnLines = columns.length === 0
|
|
218
|
+
? [' columns: [],']
|
|
219
|
+
: [' columns: [', ...columns.map((c) => ` ${c},`), ' ],'];
|
|
220
|
+
return [
|
|
221
|
+
` ${renderKey(model.name)}: {`,
|
|
222
|
+
` name: ${JSON.stringify(tableName)},`,
|
|
223
|
+
` primaryKey: ${primaryKey === null ? "null" : JSON.stringify(primaryKey)},`,
|
|
224
|
+
` softDelete: ${softDelete === null ? "null" : JSON.stringify(softDelete)},`,
|
|
225
|
+
...columnLines,
|
|
226
|
+
' includedInSync: true,',
|
|
227
|
+
' },',
|
|
228
|
+
].join("\n");
|
|
229
|
+
}
|
|
230
|
+
function renderColumnDescriptor(field, datamodel) {
|
|
231
|
+
const enumValues = (0, mapper_js_1.enumValuesForField)(field, datamodel);
|
|
232
|
+
const isEnum = field.kind === "enum";
|
|
233
|
+
const columnType = isEnum ? "string" : (0, mapper_js_1.prismaTypeToColumnType)(field.type);
|
|
234
|
+
const base = {
|
|
235
|
+
name: JSON.stringify(field.name),
|
|
236
|
+
type: `'${columnType}'`,
|
|
237
|
+
required: String(field.isRequired),
|
|
238
|
+
list: String(field.isList),
|
|
239
|
+
unique: String(field.isId || field.isUnique),
|
|
240
|
+
isEnum: String(isEnum),
|
|
241
|
+
};
|
|
242
|
+
const parts = [
|
|
243
|
+
`name: ${base.name}`,
|
|
244
|
+
`type: ${base.type}`,
|
|
245
|
+
`required: ${base.required}`,
|
|
246
|
+
`list: ${base.list}`,
|
|
247
|
+
`unique: ${base.unique}`,
|
|
248
|
+
`isEnum: ${base.isEnum}`,
|
|
249
|
+
];
|
|
250
|
+
if (enumValues && enumValues.length > 0) {
|
|
251
|
+
parts.push(`enumValues: ${JSON.stringify([...enumValues])} as const`);
|
|
252
|
+
}
|
|
253
|
+
return `{ ${parts.join("; ")} }`;
|
|
254
|
+
}
|
|
95
255
|
/**
|
|
96
256
|
* Render the helper exports at the bottom of the file:
|
|
97
257
|
*
|
|
@@ -138,6 +298,16 @@ function renderModule(datamodel, options) {
|
|
|
138
298
|
const models = (0, mapper_js_1.sortModels)(datamodel.models);
|
|
139
299
|
for (const m of models) {
|
|
140
300
|
lines.push(renderModel(m, datamodel, options));
|
|
301
|
+
lines.push(...renderRelationSchemas(m, datamodel, options));
|
|
302
|
+
}
|
|
303
|
+
if (options.idColumn) {
|
|
304
|
+
lines.push(...renderPrimaryKeyColumns(models));
|
|
305
|
+
}
|
|
306
|
+
if (options.softDeleteColumn) {
|
|
307
|
+
lines.push(...renderSoftDeleteColumns(models));
|
|
308
|
+
}
|
|
309
|
+
if (options.tables) {
|
|
310
|
+
lines.push(...renderTables(datamodel));
|
|
141
311
|
}
|
|
142
312
|
lines.push(...renderModelHelpers(models, options));
|
|
143
313
|
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":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,6 +29,31 @@ 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;
|
|
42
|
+
/**
|
|
43
|
+
* Emit `PRIMARY_KEY_COLUMNS` mapping each model to its primary-key column.
|
|
44
|
+
* Default `false`.
|
|
45
|
+
*/
|
|
46
|
+
readonly idColumn?: boolean | string;
|
|
47
|
+
/**
|
|
48
|
+
* Emit `SOFT_DELETE_COLUMNS` mapping each model to its soft-delete column
|
|
49
|
+
* (if auto-detected). Default `false`.
|
|
50
|
+
*/
|
|
51
|
+
readonly softDeleteColumn?: boolean | string;
|
|
52
|
+
/**
|
|
53
|
+
* Emit `TABLES` introspection map and `TableDescriptor` interface.
|
|
54
|
+
* Default `false`.
|
|
55
|
+
*/
|
|
56
|
+
readonly tables?: boolean | string;
|
|
32
57
|
}
|
|
33
58
|
/**
|
|
34
59
|
* Fully-resolved options (defaults applied) used internally by the renderer.
|
|
@@ -41,6 +66,35 @@ export interface ResolvedOptions {
|
|
|
41
66
|
readonly dateAs: "Date" | "DateFromSelf";
|
|
42
67
|
readonly exportModelNames: boolean;
|
|
43
68
|
readonly exportModelNameType: boolean;
|
|
69
|
+
readonly standardSchemaV1: boolean;
|
|
70
|
+
readonly relationColumns: boolean;
|
|
71
|
+
readonly idColumn: boolean;
|
|
72
|
+
readonly softDeleteColumn: boolean;
|
|
73
|
+
readonly tables: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Runtime descriptor for a model's table. Emitted when `tables = "true"`.
|
|
77
|
+
*/
|
|
78
|
+
export interface TableDescriptor {
|
|
79
|
+
/** SQL table name. Uses the model's `@@map` name when available. */
|
|
80
|
+
readonly name: string;
|
|
81
|
+
/** Primary-key column name, or `null` if none could be auto-detected. */
|
|
82
|
+
readonly primaryKey: string | null;
|
|
83
|
+
/** Soft-delete column name, or `null` if none was auto-detected. */
|
|
84
|
+
readonly softDelete: string | null;
|
|
85
|
+
/** Column descriptors for scalar and enum fields (relations are omitted). */
|
|
86
|
+
readonly columns: ReadonlyArray<ColumnDescriptor>;
|
|
87
|
+
/** Whether the table should participate in sync operations. */
|
|
88
|
+
readonly includedInSync: boolean;
|
|
89
|
+
}
|
|
90
|
+
export interface ColumnDescriptor {
|
|
91
|
+
readonly name: string;
|
|
92
|
+
readonly type: "string" | "number" | "boolean" | "date" | "json" | "bytes" | "unknown";
|
|
93
|
+
readonly required: boolean;
|
|
94
|
+
readonly list: boolean;
|
|
95
|
+
readonly unique: boolean;
|
|
96
|
+
readonly isEnum: boolean;
|
|
97
|
+
readonly enumValues?: readonly string[];
|
|
44
98
|
}
|
|
45
99
|
/**
|
|
46
100
|
* The shape of an `@prisma/dmmf` field that we care about.
|
|
@@ -58,6 +112,16 @@ export interface DMMFFieldLike {
|
|
|
58
112
|
readonly isId?: boolean;
|
|
59
113
|
readonly hasDefaultValue?: boolean;
|
|
60
114
|
readonly dbName?: string | null;
|
|
115
|
+
/**
|
|
116
|
+
* For relation fields: the local scalar fields that form the foreign key.
|
|
117
|
+
* E.g. `author User @relation(fields: [authorId], references: [id])`
|
|
118
|
+
* gives `relationFromFields: ["authorId"]`.
|
|
119
|
+
*/
|
|
120
|
+
readonly relationFromFields?: readonly string[];
|
|
121
|
+
/**
|
|
122
|
+
* For relation fields: the target fields on the related model.
|
|
123
|
+
*/
|
|
124
|
+
readonly relationToFields?: readonly string[];
|
|
61
125
|
}
|
|
62
126
|
export interface DMMFModelLike {
|
|
63
127
|
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.3",
|
|
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'"
|