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 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 the model itself is the
131
- representation, so re-emitting it as a nested schema would be redundant.
132
- If you need to validate the related entity, just compose the related
133
- schema yourself.
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
  /**
@@ -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;;;;;;;;CAQe,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,CAWjF"}
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AA0CA,wCAWC;AAnDD;;;;;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;CACS,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;KACnF,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"}
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
@@ -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,GACX,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,GAChB,MAAM,YAAY,CAAC"}
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,yCAMqB;AALnB,oHAAA,uBAAuB,OAAA;AACvB,sHAAA,yBAAyB,OAAA;AACzB,yGAAA,YAAY,OAAA;AACZ,2GAAA,cAAc,OAAA;AACd,uGAAA,UAAU,OAAA;AAEZ,yCAAuD;AAA9C,2GAAA,cAAc,OAAA;AAAE,qGAAA,QAAQ,OAAA;AACjC,yCAAyD;AAAhD,4GAAA,eAAe,OAAA;AAAE,sGAAA,SAAS,OAAA;AAUnC,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"}
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
@@ -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,CAiBR;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"}
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
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"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"}
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 entirely. Scalar
28
- * fields are emitted in the order they appear in the DMMF.
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
  *
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,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;AAeD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CAiCR;AAgCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CAoCR"}
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 entirely. Scalar
68
- * fields are emitted in the order they appear in the DMMF.
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
- lines.push(`export const ${model.name}Schema = ${binding}.Struct({`);
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
- const { expr, unsupported } = (0, mapper_js_1.prismaFieldToEffectSchema)(field, datamodel, options);
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");
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
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;
@@ -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;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,aAAa,CAAC;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CACzC"}
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.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'"