prisma-effect-schema-generator 0.1.2 → 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
@@ -91,6 +91,9 @@ updated) on every regeneration.
91
91
  | `exportModelNameType` | `"true"` | Emit `export type ModelName = "X" | "Y"`. |
92
92
  | `standardSchemaV1` | `"false"` | Wrap every model/relation schema in `Schema.standardSchemaV1(...)` for Standard Schema compatibility. |
93
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. |
94
97
 
95
98
  ```prisma
96
99
  generator effect_client {
@@ -105,9 +108,79 @@ generator effect_client {
105
108
  exportModelNameType = "true"
106
109
  standardSchemaV1 = "false"
107
110
  relationColumns = "false"
111
+ idColumn = "false"
112
+ softDeleteColumn = "false"
113
+ tables = "false"
108
114
  }
109
115
  ```
110
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
+
111
184
  ## Type mapping
112
185
 
113
186
  | Prisma field | Effect Schema (default) | Encoded → Decoded |
package/dist/config.d.ts CHANGED
@@ -15,6 +15,9 @@ export declare const DEFAULTS: {
15
15
  readonly exportModelNameType: true;
16
16
  readonly standardSchemaV1: false;
17
17
  readonly relationColumns: false;
18
+ readonly idColumn: false;
19
+ readonly softDeleteColumn: false;
20
+ readonly tables: false;
18
21
  };
19
22
  type RawConfig = Record<string, string | string[] | boolean | undefined>;
20
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;;;;;;;;;;CAUe,CAAC;AAErC,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAkBzE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe,CAajF"}
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
@@ -18,6 +18,9 @@ exports.DEFAULTS = {
18
18
  exportModelNameType: true,
19
19
  standardSchemaV1: false,
20
20
  relationColumns: false,
21
+ idColumn: false,
22
+ softDeleteColumn: false,
23
+ tables: false,
21
24
  };
22
25
  /**
23
26
  * Normalise a string-or-boolean into a real boolean.
@@ -55,6 +58,9 @@ function resolveOptions(raw) {
55
58
  exportModelNameType: toBool(cfg.exportModelNameType, exports.DEFAULTS.exportModelNameType),
56
59
  standardSchemaV1: toBool(cfg.standardSchemaV1, exports.DEFAULTS.standardSchemaV1),
57
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),
58
64
  };
59
65
  }
60
66
  function stringOr(v, fallback) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AA4CA,wCAaC;AAvDD;;;;;GAKG;AACU,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE,QAAQ;IACtB,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,QAAQ;IACnB,MAAM,EAAE,cAAc;IACtB,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;IACvB,eAAe,EAAE,KAAK;CACY,CAAC;AAIrC;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,CAAU,EAAE,QAAiB;IAC3C,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC;QAC9B,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,GAAiC;IAC9D,MAAM,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IACtB,OAAO;QACL,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAQ,CAAC,YAAY,CAAC;QAC/D,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QAC3E,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC/E,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1E,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrE,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QACzE,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAQ,CAAC,mBAAmB,CAAC;QAClF,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,gBAAQ,CAAC,gBAAgB,CAAC;QACzE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAQ,CAAC,eAAe,CAAC;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU,EAAE,QAAgB;IAC5C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9D,CAAC;AAED,SAAS,MAAM,CACb,CAAU,EACV,QAAW,EACX,OAAqB;IAErB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,OAAO,CAAM,CAAC;IAChB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
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,CAmBR;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE,CAE5E"}
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
  *
@@ -100,6 +104,9 @@ function enumToSchema(enumName, datamodel, options) {
100
104
  exportModelNameType: true,
101
105
  standardSchemaV1: false,
102
106
  relationColumns: false,
107
+ idColumn: false,
108
+ softDeleteColumn: false,
109
+ tables: false,
103
110
  });
104
111
  const en = datamodel.enums.find((e) => e.name === enumName);
105
112
  if (!en || en.values.length === 0) {
@@ -128,4 +135,83 @@ function isIncludeField(field) {
128
135
  function sortModels(models) {
129
136
  return [...models].sort((a, b) => a.name.localeCompare(b.name));
130
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
+ }
131
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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EAEjB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAmBpB;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAuCD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CA2BR;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,EAAE,CA0CV;AAqCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACvB,MAAM,CAqCR"}
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
@@ -158,6 +158,100 @@ function capitalize(s) {
158
158
  return s;
159
159
  return s[0].toUpperCase() + s.slice(1);
160
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
+ }
161
255
  /**
162
256
  * Render the helper exports at the bottom of the file:
163
257
  *
@@ -206,6 +300,15 @@ function renderModule(datamodel, options) {
206
300
  lines.push(renderModel(m, datamodel, options));
207
301
  lines.push(...renderRelationSchemas(m, datamodel, options));
208
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));
311
+ }
209
312
  lines.push(...renderModelHelpers(models, options));
210
313
  return lines.join("\n");
211
314
  }
@@ -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
@@ -39,6 +39,21 @@ export interface GeneratorOptionsConfig {
39
39
  * foreign-key columns (`relationFromFields`). Default `false`.
40
40
  */
41
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;
42
57
  }
43
58
  /**
44
59
  * Fully-resolved options (defaults applied) used internally by the renderer.
@@ -53,6 +68,33 @@ export interface ResolvedOptions {
53
68
  readonly exportModelNameType: boolean;
54
69
  readonly standardSchemaV1: boolean;
55
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[];
56
98
  }
57
99
  /**
58
100
  * The shape of an `@prisma/dmmf` field that we care about.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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;IAChD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACpC;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;IACtC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAClD,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;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;IAChC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-effect-schema-generator",
3
- "version": "0.1.2",
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",