@lexmata/prisma-ent-generator 0.1.0 → 0.2.0
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/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +3 -1
- package/dist/generator.js.map +1 -1
- package/dist/helpers/edge.d.ts.map +1 -1
- package/dist/helpers/edge.js +4 -5
- package/dist/helpers/edge.js.map +1 -1
- package/dist/helpers/field.d.ts +2 -0
- package/dist/helpers/field.d.ts.map +1 -1
- package/dist/helpers/field.js +72 -24
- package/dist/helpers/field.js.map +1 -1
- package/dist/helpers/schema.d.ts +19 -1
- package/dist/helpers/schema.d.ts.map +1 -1
- package/dist/helpers/schema.js +64 -1
- package/dist/helpers/schema.js.map +1 -1
- package/dist/helpers/type-map.d.ts +19 -0
- package/dist/helpers/type-map.d.ts.map +1 -1
- package/dist/helpers/type-map.js +43 -4
- package/dist/helpers/type-map.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAWvE;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAWvE;;;GAGG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDvE"}
|
package/dist/generator.js
CHANGED
|
@@ -51,6 +51,8 @@ async function generate(options) {
|
|
|
51
51
|
const { datamodel } = options.dmmf;
|
|
52
52
|
const models = [...datamodel.models];
|
|
53
53
|
const enums = [...datamodel.enums];
|
|
54
|
+
// Indexes are available at the datamodel level in Prisma v6 DMMF
|
|
55
|
+
const indexes = datamodel.indexes ?? [];
|
|
54
56
|
// Build enum lookup map
|
|
55
57
|
const enumDefs = new Map();
|
|
56
58
|
for (const e of enums) {
|
|
@@ -68,7 +70,7 @@ async function generate(options) {
|
|
|
68
70
|
}
|
|
69
71
|
// --- schema/*.go (one per Prisma model, always overwritten) ---
|
|
70
72
|
for (const model of models) {
|
|
71
|
-
const content = (0, schema_1.generateSchema)(model, models, enumDefs);
|
|
73
|
+
const content = (0, schema_1.generateSchema)(model, models, enumDefs, indexes);
|
|
72
74
|
const fileName = (0, utils_1.modelToFileName)(model.name);
|
|
73
75
|
const filePath = path_1.default.join(schemaDir, `${fileName}.go`);
|
|
74
76
|
fs_1.default.writeFileSync(filePath, content, 'utf-8');
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;;;AAiBA,8BAEC;AAeD,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/helpers/edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/helpers/edge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,SAAS,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAChC,OAAO,EAAE,SAAS,GACjB,MAAM,EAAE,CAcV"}
|
package/dist/helpers/edge.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateEdges = generateEdges;
|
|
4
|
-
const utils_1 = require("../utils");
|
|
5
4
|
/**
|
|
6
5
|
* Generate the Ent edge definition lines for a given model.
|
|
7
6
|
*
|
|
@@ -42,7 +41,7 @@ function generateEdge(field, currentModel, allModels) {
|
|
|
42
41
|
const hasFK = field.relationFromFields !== undefined && field.relationFromFields.length > 0;
|
|
43
42
|
const inverseHasFK = inverseField?.relationFromFields !== undefined &&
|
|
44
43
|
inverseField.relationFromFields.length > 0;
|
|
45
|
-
const edgeName =
|
|
44
|
+
const edgeName = field.name;
|
|
46
45
|
if (hasFK) {
|
|
47
46
|
// This model holds the FK → edge.From (back-reference)
|
|
48
47
|
return buildEdgeFrom(field, edgeName, targetModelName, inverseField);
|
|
@@ -58,14 +57,14 @@ function generateEdge(field, currentModel, allModels) {
|
|
|
58
57
|
* Build an edge.From definition (this model holds the FK).
|
|
59
58
|
*/
|
|
60
59
|
function buildEdgeFrom(field, edgeName, targetModelName, inverseField) {
|
|
61
|
-
const refName = inverseField ?
|
|
60
|
+
const refName = inverseField ? inverseField.name : targetModelName;
|
|
62
61
|
const parts = [];
|
|
63
62
|
parts.push(`edge.From("${edgeName}", ${targetModelName}.Type)`);
|
|
64
63
|
parts.push(`.Ref("${refName}")`);
|
|
65
64
|
parts.push('.Unique()');
|
|
66
65
|
// Bind the FK field to this edge
|
|
67
66
|
if (field.relationFromFields && field.relationFromFields.length > 0) {
|
|
68
|
-
const fkFieldName =
|
|
67
|
+
const fkFieldName = field.relationFromFields[0];
|
|
69
68
|
parts.push(`.Field("${fkFieldName}")`);
|
|
70
69
|
}
|
|
71
70
|
if (field.isRequired) {
|
|
@@ -110,7 +109,7 @@ function buildImplicitEdge(field, edgeName, targetModelName, currentModelName, i
|
|
|
110
109
|
return buildEdgeTo(field, edgeName, targetModelName);
|
|
111
110
|
}
|
|
112
111
|
// Back-reference
|
|
113
|
-
const refName = inverseField ?
|
|
112
|
+
const refName = inverseField ? inverseField.name : targetModelName;
|
|
114
113
|
const parts = [];
|
|
115
114
|
parts.push(`edge.From("${edgeName}", ${targetModelName}.Type)`);
|
|
116
115
|
parts.push(`.Ref("${refName}")`);
|
package/dist/helpers/edge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/helpers/edge.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/helpers/edge.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/field.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare function collectFKFieldNames(fields: readonly DMMF.Field[]): Set<
|
|
|
12
12
|
* - Includes FK scalar fields so they can be bound to edges via `.Field()`.
|
|
13
13
|
* - Handles ID fields: skips default Int autoincrement IDs (Ent default),
|
|
14
14
|
* but generates UUID ID fields when needed.
|
|
15
|
+
* - Uses Prisma field names (camelCase) as Ent field names, with
|
|
16
|
+
* `.StorageKey()` for the DB column mapping from `@map`.
|
|
15
17
|
*
|
|
16
18
|
* @returns An array of Go code strings, each representing one `field.X(...)` call.
|
|
17
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/helpers/field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../src/helpers/field.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAML,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAU9E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EACzC,OAAO,EAAE,SAAS,GACjB,MAAM,EAAE,CAiBV"}
|
package/dist/helpers/field.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.collectFKFieldNames = collectFKFieldNames;
|
|
4
4
|
exports.generateFields = generateFields;
|
|
5
5
|
const type_map_1 = require("./type-map");
|
|
6
|
-
const utils_1 = require("../utils");
|
|
7
6
|
/**
|
|
8
7
|
* Determine the set of field names that serve as foreign keys for relations.
|
|
9
8
|
* These are the scalar fields referenced in `relationFromFields` of relation fields.
|
|
@@ -26,6 +25,8 @@ function collectFKFieldNames(fields) {
|
|
|
26
25
|
* - Includes FK scalar fields so they can be bound to edges via `.Field()`.
|
|
27
26
|
* - Handles ID fields: skips default Int autoincrement IDs (Ent default),
|
|
28
27
|
* but generates UUID ID fields when needed.
|
|
28
|
+
* - Uses Prisma field names (camelCase) as Ent field names, with
|
|
29
|
+
* `.StorageKey()` for the DB column mapping from `@map`.
|
|
29
30
|
*
|
|
30
31
|
* @returns An array of Go code strings, each representing one `field.X(...)` call.
|
|
31
32
|
*/
|
|
@@ -35,6 +36,9 @@ function generateFields(fields, fkFieldNames, enumDefs, imports) {
|
|
|
35
36
|
// Skip relation fields — they become edges
|
|
36
37
|
if (f.kind === 'object')
|
|
37
38
|
continue;
|
|
39
|
+
// Skip unsupported fields (e.g., vector types)
|
|
40
|
+
if (f.kind === 'unsupported')
|
|
41
|
+
continue;
|
|
38
42
|
const line = generateField(f, fkFieldNames, enumDefs, imports);
|
|
39
43
|
if (line !== null) {
|
|
40
44
|
lines.push(line);
|
|
@@ -51,7 +55,7 @@ function generateField(field, fkFieldNames, enumDefs, imports) {
|
|
|
51
55
|
if (field.isId) {
|
|
52
56
|
return generateIdField(field, imports);
|
|
53
57
|
}
|
|
54
|
-
const fieldName =
|
|
58
|
+
const fieldName = field.name;
|
|
55
59
|
imports.field = true;
|
|
56
60
|
if (field.kind === 'enum') {
|
|
57
61
|
return generateEnumField(field, fieldName, enumDefs, imports);
|
|
@@ -75,16 +79,39 @@ function generateIdField(field, imports) {
|
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
imports.field = true;
|
|
78
|
-
// UUID ID field
|
|
82
|
+
// UUID ID field — detected by @db.Uuid native type or uuid() default
|
|
83
|
+
const nativeType = field.nativeType;
|
|
84
|
+
const isUuid = (0, type_map_1.isUuidNativeType)(nativeType);
|
|
85
|
+
const hasUuidDefault = field.hasDefaultValue &&
|
|
86
|
+
typeof field.default === 'object' &&
|
|
87
|
+
field.default !== null &&
|
|
88
|
+
'name' in field.default &&
|
|
89
|
+
field.default.name === 'uuid';
|
|
90
|
+
if (isUuid || (field.type === 'String' && hasUuidDefault)) {
|
|
91
|
+
imports.uuid = true;
|
|
92
|
+
const parts = [];
|
|
93
|
+
parts.push('field.UUID("id", uuid.UUID{})');
|
|
94
|
+
// Add StorageKey if mapped to a different column name
|
|
95
|
+
if (field.dbName && field.dbName !== 'id') {
|
|
96
|
+
parts.push(`.StorageKey("${field.dbName}")`);
|
|
97
|
+
}
|
|
98
|
+
if (hasUuidDefault) {
|
|
99
|
+
parts.push('.Default(uuid.New)');
|
|
100
|
+
}
|
|
101
|
+
return parts.join('');
|
|
102
|
+
}
|
|
103
|
+
// CUID ID field
|
|
79
104
|
if (field.type === 'String' && field.hasDefaultValue) {
|
|
80
105
|
const defaultObj = field.default;
|
|
81
106
|
if (defaultObj && typeof defaultObj === 'object' && 'name' in defaultObj) {
|
|
82
|
-
if (defaultObj.name === 'uuid') {
|
|
83
|
-
imports.uuid = true;
|
|
84
|
-
return 'field.UUID("id", uuid.UUID{}).Default(uuid.New)';
|
|
85
|
-
}
|
|
86
107
|
if (defaultObj.name === 'cuid') {
|
|
87
|
-
|
|
108
|
+
const parts = [];
|
|
109
|
+
parts.push('field.String("id")');
|
|
110
|
+
if (field.dbName && field.dbName !== 'id') {
|
|
111
|
+
parts.push(`.StorageKey("${field.dbName}")`);
|
|
112
|
+
}
|
|
113
|
+
parts.push('.MaxLen(30).NotEmpty()');
|
|
114
|
+
return parts.join('');
|
|
88
115
|
}
|
|
89
116
|
}
|
|
90
117
|
}
|
|
@@ -100,27 +127,32 @@ function generateScalarField(field, fieldName, fkFieldNames, imports) {
|
|
|
100
127
|
if (field.type === 'Json') {
|
|
101
128
|
return generateJsonField(field, fieldName, imports);
|
|
102
129
|
}
|
|
103
|
-
const
|
|
130
|
+
const nativeType = field.nativeType;
|
|
104
131
|
const parts = [];
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
132
|
+
// Check for UUID native type on non-ID fields (FK fields, etc.)
|
|
133
|
+
if ((0, type_map_1.isUuidNativeType)(nativeType)) {
|
|
134
|
+
imports.uuid = true;
|
|
135
|
+
parts.push(`field.UUID("${fieldName}", uuid.UUID{})`);
|
|
136
|
+
}
|
|
137
|
+
else if ((0, type_map_1.isTextNativeType)(nativeType)) {
|
|
138
|
+
// Text fields use field.Text() for unlimited length
|
|
139
|
+
parts.push(`field.Text("${fieldName}")`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
const entType = (0, type_map_1.mapPrismaTypeToEnt)(field.type);
|
|
143
|
+
parts.push(`field.${entType}("${fieldName}")`);
|
|
144
|
+
}
|
|
145
|
+
// StorageKey from @map annotation
|
|
146
|
+
if (field.dbName) {
|
|
147
|
+
parts.push(`.StorageKey("${field.dbName}")`);
|
|
109
148
|
}
|
|
110
149
|
// Unique constraint
|
|
111
150
|
if (field.isUnique) {
|
|
112
151
|
parts.push('.Unique()');
|
|
113
152
|
}
|
|
114
|
-
// Optional
|
|
153
|
+
// Optional
|
|
115
154
|
if (!field.isRequired) {
|
|
116
155
|
parts.push('.Optional()');
|
|
117
|
-
parts.push('.Nillable()');
|
|
118
|
-
}
|
|
119
|
-
// FK fields that are required should still be Optional in Ent
|
|
120
|
-
// because the edge manages the FK value
|
|
121
|
-
if (fkFieldNames.has(field.name) && field.isRequired) {
|
|
122
|
-
// Don't add Optional — Ent requires the FK field to match the edge's Required status.
|
|
123
|
-
// The edge definition will handle Required() separately.
|
|
124
156
|
}
|
|
125
157
|
// Handle @updatedAt (must come before default handling to avoid double-default)
|
|
126
158
|
if (field.isUpdatedAt) {
|
|
@@ -136,6 +168,11 @@ function generateScalarField(field, fieldName, fkFieldNames, imports) {
|
|
|
136
168
|
parts.push(defaultStr);
|
|
137
169
|
}
|
|
138
170
|
}
|
|
171
|
+
// MaxLen from @db.VarChar(N) or @db.Char(N) — only for string-like fields
|
|
172
|
+
const maxLen = (0, type_map_1.extractMaxLen)(nativeType);
|
|
173
|
+
if (maxLen !== null) {
|
|
174
|
+
parts.push(`.MaxLen(${maxLen})`);
|
|
175
|
+
}
|
|
139
176
|
return parts.join('');
|
|
140
177
|
}
|
|
141
178
|
/**
|
|
@@ -148,6 +185,10 @@ function generateScalarField(field, fieldName, fkFieldNames, imports) {
|
|
|
148
185
|
function generateJsonField(field, fieldName, imports) {
|
|
149
186
|
const parts = [];
|
|
150
187
|
parts.push(`field.JSON("${fieldName}", map[string]interface{}{})`);
|
|
188
|
+
// StorageKey from @map annotation
|
|
189
|
+
if (field.dbName) {
|
|
190
|
+
parts.push(`.StorageKey("${field.dbName}")`);
|
|
191
|
+
}
|
|
151
192
|
if (!field.isRequired) {
|
|
152
193
|
parts.push('.Optional()');
|
|
153
194
|
}
|
|
@@ -159,16 +200,19 @@ function generateJsonField(field, fieldName, imports) {
|
|
|
159
200
|
function generateEnumField(field, fieldName, enumDefs, imports) {
|
|
160
201
|
const parts = [];
|
|
161
202
|
parts.push(`field.Enum("${fieldName}")`);
|
|
203
|
+
// StorageKey from @map annotation
|
|
204
|
+
if (field.dbName) {
|
|
205
|
+
parts.push(`.StorageKey("${field.dbName}")`);
|
|
206
|
+
}
|
|
162
207
|
// Get enum values from the definition
|
|
163
208
|
const enumDef = enumDefs.get(field.type);
|
|
164
209
|
if (enumDef) {
|
|
165
210
|
const values = enumDef.values.map((v) => `"${v.name}"`).join(', ');
|
|
166
211
|
parts.push(`.Values(${values})`);
|
|
167
212
|
}
|
|
168
|
-
// Optional
|
|
213
|
+
// Optional
|
|
169
214
|
if (!field.isRequired) {
|
|
170
215
|
parts.push('.Optional()');
|
|
171
|
-
parts.push('.Nillable()');
|
|
172
216
|
}
|
|
173
217
|
// Default value for enums
|
|
174
218
|
if (field.hasDefaultValue && typeof field.default === 'string') {
|
|
@@ -198,7 +242,6 @@ function formatDefault(defaultValue, prismaType, imports) {
|
|
|
198
242
|
imports.uuid = true;
|
|
199
243
|
return '.DefaultFunc(uuid.NewString)';
|
|
200
244
|
case 'cuid':
|
|
201
|
-
// No built-in Ent CUID; leave a comment
|
|
202
245
|
return '/* .DefaultFunc(cuid.New) — add a CUID library */';
|
|
203
246
|
case 'autoincrement':
|
|
204
247
|
return null;
|
|
@@ -215,6 +258,11 @@ function formatDefault(defaultValue, prismaType, imports) {
|
|
|
215
258
|
return `.Default(${defaultValue})`;
|
|
216
259
|
}
|
|
217
260
|
if (typeof defaultValue === 'string') {
|
|
261
|
+
// BigInt defaults are serialized as strings in the DMMF.
|
|
262
|
+
// If the Prisma type is BigInt and the string is a valid number, emit as numeric.
|
|
263
|
+
if (prismaType === 'BigInt' && /^-?\d+$/.test(defaultValue)) {
|
|
264
|
+
return `.Default(${defaultValue})`;
|
|
265
|
+
}
|
|
218
266
|
return `.Default("${escapeGoString(defaultValue)}")`;
|
|
219
267
|
}
|
|
220
268
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/helpers/field.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/helpers/field.ts"],"names":[],"mappings":";;AAcA,kDAUC;AAcD,wCAsBC;AA3DD,yCAOoB;AAEpB;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAA6B;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;YAChD,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,cAAc,CAC5B,MAA6B,EAC7B,YAAyB,EACzB,QAAyC,EACzC,OAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,2CAA2C;QAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAElC,+CAA+C;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;YAAE,SAAS;QAEvC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,KAAiB,EACjB,YAAyB,EACzB,QAAyC,EACzC,OAAkB;IAElB,oBAAoB;IACpB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAErB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,KAAiB,EAAE,OAAkB;IAC5D,0DAA0D;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,eAAe,GACnB,KAAK,CAAC,eAAe;YACrB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YACjC,KAAK,CAAC,OAAO,KAAK,IAAI;YACtB,MAAM,IAAI,KAAK,CAAC,OAAO;YACtB,KAAK,CAAC,OAA4B,CAAC,IAAI,KAAK,eAAe,CAAC;QAE/D,IAAI,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAErB,qEAAqE;IACrE,MAAM,UAAU,GAAI,KAAa,CAAC,UAAmD,CAAC;IACtF,MAAM,MAAM,GAAG,IAAA,2BAAgB,EAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,cAAc,GAClB,KAAK,CAAC,eAAe;QACrB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,KAAK,IAAI;QACtB,MAAM,IAAI,KAAK,CAAC,OAAO;QACtB,KAAK,CAAC,OAA4B,CAAC,IAAI,KAAK,MAAM,CAAC;IAEtD,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE5C,sDAAsD;QACtD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,gBAAgB;IAChB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAwC,CAAC;QAClE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,IAAI,UAAU,EAAE,CAAC;YACzE,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACjC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;gBAC/C,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACrC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,SAAS,OAAO,QAAQ,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,KAAiB,EACjB,SAAiB,EACjB,YAAyB,EACzB,OAAkB;IAElB,mEAAmE;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAI,KAAa,CAAC,UAAmD,CAAC;IACtF,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,gEAAgE;IAChE,IAAI,IAAA,2BAAgB,EAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,iBAAiB,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,IAAA,2BAAgB,EAAC,UAAU,CAAC,EAAE,CAAC;QACxC,oDAAoD;QACpD,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,IAAI,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,kCAAkC;IAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;IACpB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,WAAW;IACX,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,gFAAgF;IAChF,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrE,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAA,wBAAa,EAAC,UAAU,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,KAAiB,EACjB,SAAiB,EACjB,OAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,8BAA8B,CAAC,CAAC;IAEnE,kCAAkC;IAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,KAAiB,EACjB,SAAiB,EACjB,QAAyC,EACzC,OAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,SAAS,IAAI,CAAC,CAAC;IAEzC,kCAAkC;IAClC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,sCAAsC;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,WAAW;IACX,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,0BAA0B;IAC1B,IAAI,KAAK,CAAC,eAAe,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CACpB,YAAqB,EACrB,UAAkB,EAClB,OAAkB;IAElB,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kEAAkE;IAClE,IACE,OAAO,YAAY,KAAK,QAAQ;QAChC,YAAY,KAAK,IAAI;QACrB,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;QAC5B,MAAM,IAAI,YAAY,EACtB,CAAC;QACD,MAAM,WAAW,GAAG,YAAiD,CAAC;QACtE,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,KAAK;gBACR,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACpB,OAAO,oBAAoB,CAAC;YAC9B,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACpB,OAAO,8BAA8B,CAAC;YACxC,KAAK,MAAM;gBACT,OAAO,mDAAmD,CAAC;YAC7D,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC;YACd,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,YAAY,YAAY,GAAG,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,OAAO,YAAY,YAAY,GAAG,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,yDAAyD;QACzD,kFAAkF;QAClF,IAAI,UAAU,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,OAAO,YAAY,YAAY,GAAG,CAAC;QACrC,CAAC;QACD,OAAO,aAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,CAAS;IAC/B,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC"}
|
package/dist/helpers/schema.d.ts
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import type { DMMF } from '@prisma/generator-helper';
|
|
2
|
+
/**
|
|
3
|
+
* Index definition from the DMMF Datamodel.indexes array.
|
|
4
|
+
* We accept a loose type since the DMMF re-exports differ across versions.
|
|
5
|
+
*/
|
|
6
|
+
interface DMMFIndex {
|
|
7
|
+
model: string;
|
|
8
|
+
type: string;
|
|
9
|
+
isDefinedOnField: boolean;
|
|
10
|
+
name?: string;
|
|
11
|
+
dbName?: string;
|
|
12
|
+
fields: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
sortOrder?: string;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
2
17
|
/**
|
|
3
18
|
* Generate a complete Go Ent schema file for a single Prisma model.
|
|
4
19
|
*
|
|
@@ -8,6 +23,9 @@ import type { DMMF } from '@prisma/generator-helper';
|
|
|
8
23
|
* - Struct embedding ent.Schema
|
|
9
24
|
* - Fields() method
|
|
10
25
|
* - Edges() method
|
|
26
|
+
* - Indexes() method (if applicable)
|
|
27
|
+
* - Annotations() method (if @@map is used)
|
|
11
28
|
*/
|
|
12
|
-
export declare function generateSchema(model: DMMF.Model, allModels: readonly DMMF.Model[], enumDefs: Map<string, DMMF.DatamodelEnum
|
|
29
|
+
export declare function generateSchema(model: DMMF.Model, allModels: readonly DMMF.Model[], enumDefs: Map<string, DMMF.DatamodelEnum>, indexes?: readonly DMMFIndex[]): string;
|
|
30
|
+
export {};
|
|
13
31
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/helpers/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/helpers/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAMrD;;;GAGG;AACH,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,SAAS,EAAE,SAAS,IAAI,CAAC,KAAK,EAAE,EAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EACzC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,GAC7B,MAAM,CAgHR"}
|
package/dist/helpers/schema.js
CHANGED
|
@@ -14,13 +14,22 @@ const utils_1 = require("../utils");
|
|
|
14
14
|
* - Struct embedding ent.Schema
|
|
15
15
|
* - Fields() method
|
|
16
16
|
* - Edges() method
|
|
17
|
+
* - Indexes() method (if applicable)
|
|
18
|
+
* - Annotations() method (if @@map is used)
|
|
17
19
|
*/
|
|
18
|
-
function generateSchema(model, allModels, enumDefs) {
|
|
20
|
+
function generateSchema(model, allModels, enumDefs, indexes) {
|
|
19
21
|
const imports = (0, type_map_1.createEmptyImports)();
|
|
20
22
|
// Build enum lookup for this model's enum fields
|
|
21
23
|
const fkFieldNames = (0, field_1.collectFKFieldNames)(model.fields);
|
|
22
24
|
const fieldLines = (0, field_1.generateFields)(model.fields, fkFieldNames, enumDefs, imports);
|
|
23
25
|
const edgeLines = (0, edge_1.generateEdges)(model, allModels, imports);
|
|
26
|
+
// Filter indexes for this model (exclude field-level unique constraints and primary keys)
|
|
27
|
+
const modelIndexes = (indexes ?? []).filter((idx) => idx.model === model.name &&
|
|
28
|
+
!idx.isDefinedOnField &&
|
|
29
|
+
idx.type !== 'id');
|
|
30
|
+
const indexLines = generateIndexes(modelIndexes, model, imports);
|
|
31
|
+
// Check if we need Annotations (for @@map table name)
|
|
32
|
+
const hasTableMapping = model.dbName != null;
|
|
24
33
|
// Mark imports based on content
|
|
25
34
|
if (fieldLines.length > 0) {
|
|
26
35
|
imports.field = true;
|
|
@@ -28,6 +37,13 @@ function generateSchema(model, allModels, enumDefs) {
|
|
|
28
37
|
if (edgeLines.length > 0) {
|
|
29
38
|
imports.edge = true;
|
|
30
39
|
}
|
|
40
|
+
if (indexLines.length > 0) {
|
|
41
|
+
imports.index = true;
|
|
42
|
+
}
|
|
43
|
+
if (hasTableMapping) {
|
|
44
|
+
imports.schema = true;
|
|
45
|
+
imports.entsql = true;
|
|
46
|
+
}
|
|
31
47
|
const lines = [];
|
|
32
48
|
// File header
|
|
33
49
|
lines.push((0, utils_1.fileHeader)());
|
|
@@ -77,6 +93,53 @@ function generateSchema(model, allModels, enumDefs) {
|
|
|
77
93
|
}
|
|
78
94
|
lines.push('}');
|
|
79
95
|
lines.push('');
|
|
96
|
+
// Indexes() method (if applicable)
|
|
97
|
+
if (indexLines.length > 0) {
|
|
98
|
+
lines.push(`// Indexes of the ${model.name}.`);
|
|
99
|
+
lines.push(`func (${model.name}) Indexes() []ent.Index {`);
|
|
100
|
+
lines.push('\treturn []ent.Index{');
|
|
101
|
+
for (const il of indexLines) {
|
|
102
|
+
lines.push(`\t\t${il},`);
|
|
103
|
+
}
|
|
104
|
+
lines.push('\t}');
|
|
105
|
+
lines.push('}');
|
|
106
|
+
lines.push('');
|
|
107
|
+
}
|
|
108
|
+
// Annotations() method (if @@map is used)
|
|
109
|
+
if (hasTableMapping) {
|
|
110
|
+
lines.push(`// Annotations of the ${model.name}.`);
|
|
111
|
+
lines.push(`func (${model.name}) Annotations() []schema.Annotation {`);
|
|
112
|
+
lines.push('\treturn []schema.Annotation{');
|
|
113
|
+
lines.push(`\t\tentsql.Annotation{Table: "${model.dbName}"},`);
|
|
114
|
+
lines.push('\t}');
|
|
115
|
+
lines.push('}');
|
|
116
|
+
lines.push('');
|
|
117
|
+
}
|
|
80
118
|
return lines.join('\n');
|
|
81
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Generate Ent index definitions from DMMF indexes.
|
|
122
|
+
*
|
|
123
|
+
* Translates Prisma @@index and @@unique (compound) into Ent's index builder:
|
|
124
|
+
* - @@index([fieldA, fieldB], map: "name") → index.Fields("fieldA", "fieldB").StorageKey("name")
|
|
125
|
+
* - @@unique([fieldA, fieldB], map: "name") → index.Fields("fieldA", "fieldB").Unique().StorageKey("name")
|
|
126
|
+
*/
|
|
127
|
+
function generateIndexes(indexes, model, imports) {
|
|
128
|
+
const lines = [];
|
|
129
|
+
for (const idx of indexes) {
|
|
130
|
+
// Map Prisma field names to Ent field names (use the Prisma field name directly)
|
|
131
|
+
const fieldNames = idx.fields.map((f) => `"${f.name}"`).join(', ');
|
|
132
|
+
const parts = [];
|
|
133
|
+
parts.push(`index.Fields(${fieldNames})`);
|
|
134
|
+
if (idx.type === 'unique') {
|
|
135
|
+
parts.push('.Unique()');
|
|
136
|
+
}
|
|
137
|
+
// Add custom index name from Prisma's `map:` attribute
|
|
138
|
+
if (idx.dbName) {
|
|
139
|
+
parts.push(`.StorageKey("${idx.dbName}")`);
|
|
140
|
+
}
|
|
141
|
+
lines.push(parts.join(''));
|
|
142
|
+
}
|
|
143
|
+
return lines;
|
|
144
|
+
}
|
|
82
145
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/helpers/schema.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/helpers/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ export interface GoImports {
|
|
|
12
12
|
edge: boolean;
|
|
13
13
|
/** Whether "entgo.io/ent/schema/index" is needed (for indexes). */
|
|
14
14
|
index: boolean;
|
|
15
|
+
/** Whether "entgo.io/ent/schema" is needed (for Annotations). */
|
|
16
|
+
schema: boolean;
|
|
17
|
+
/** Whether "entgo.io/ent/dialect/entsql" is needed (for table name annotations). */
|
|
18
|
+
entsql: boolean;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
21
|
* Create an empty Go imports tracker.
|
|
@@ -30,4 +34,19 @@ export declare function requiresTimeImport(prismaType: string): boolean;
|
|
|
30
34
|
* Build the Go import block string from tracked imports.
|
|
31
35
|
*/
|
|
32
36
|
export declare function buildImportBlock(imports: GoImports): string;
|
|
37
|
+
/**
|
|
38
|
+
* Check whether a field's native type indicates a UUID.
|
|
39
|
+
* Prisma encodes `@db.Uuid` as `['Uuid', []]`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function isUuidNativeType(nativeType?: readonly [string, readonly string[]] | null): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Check whether a field's native type indicates a Text column.
|
|
44
|
+
* Prisma encodes `@db.Text` as `['Text', []]`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isTextNativeType(nativeType?: readonly [string, readonly string[]] | null): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Extract MaxLen from a native type like VarChar(N) or Char(N).
|
|
49
|
+
* Returns the length as a number, or null if not applicable.
|
|
50
|
+
*/
|
|
51
|
+
export declare function extractMaxLen(nativeType?: readonly [string, readonly string[]] | null): number | null;
|
|
33
52
|
//# sourceMappingURL=type-map.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-map.d.ts","sourceRoot":"","sources":["../../src/helpers/type-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,IAAI,EAAE,OAAO,CAAC;IACd,kFAAkF;IAClF,IAAI,EAAE,OAAO,CAAC;IACd,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,IAAI,EAAE,OAAO,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"type-map.d.ts","sourceRoot":"","sources":["../../src/helpers/type-map.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,IAAI,EAAE,OAAO,CAAC;IACd,kFAAkF;IAClF,IAAI,EAAE,OAAO,CAAC;IACd,uFAAuF;IACvF,KAAK,EAAE,OAAO,CAAC;IACf,qFAAqF;IACrF,IAAI,EAAE,OAAO,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,SAAS,CAU9C;AA6BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAgD3D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAElG;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAElG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQrG"}
|
package/dist/helpers/type-map.js
CHANGED
|
@@ -4,6 +4,9 @@ exports.createEmptyImports = createEmptyImports;
|
|
|
4
4
|
exports.mapPrismaTypeToEnt = mapPrismaTypeToEnt;
|
|
5
5
|
exports.requiresTimeImport = requiresTimeImport;
|
|
6
6
|
exports.buildImportBlock = buildImportBlock;
|
|
7
|
+
exports.isUuidNativeType = isUuidNativeType;
|
|
8
|
+
exports.isTextNativeType = isTextNativeType;
|
|
9
|
+
exports.extractMaxLen = extractMaxLen;
|
|
7
10
|
/**
|
|
8
11
|
* Create an empty Go imports tracker.
|
|
9
12
|
*/
|
|
@@ -14,6 +17,8 @@ function createEmptyImports() {
|
|
|
14
17
|
field: false,
|
|
15
18
|
edge: false,
|
|
16
19
|
index: false,
|
|
20
|
+
schema: false,
|
|
21
|
+
entsql: false,
|
|
17
22
|
};
|
|
18
23
|
}
|
|
19
24
|
/**
|
|
@@ -24,7 +29,7 @@ function createEmptyImports() {
|
|
|
24
29
|
* String → String
|
|
25
30
|
* Boolean → Bool
|
|
26
31
|
* Int → Int
|
|
27
|
-
* BigInt →
|
|
32
|
+
* BigInt → Int64 (int64 in Go, Ent uses field.Int for int32)
|
|
28
33
|
* Float → Float
|
|
29
34
|
* Decimal → Float (float64 in Go)
|
|
30
35
|
* DateTime → Time
|
|
@@ -35,7 +40,7 @@ const PRISMA_TO_ENT_FIELD = {
|
|
|
35
40
|
String: 'String',
|
|
36
41
|
Boolean: 'Bool',
|
|
37
42
|
Int: 'Int',
|
|
38
|
-
BigInt: '
|
|
43
|
+
BigInt: 'Int64',
|
|
39
44
|
Float: 'Float',
|
|
40
45
|
Decimal: 'Float',
|
|
41
46
|
DateTime: 'Time',
|
|
@@ -62,12 +67,18 @@ function buildImportBlock(imports) {
|
|
|
62
67
|
const lines = [];
|
|
63
68
|
lines.push('import (');
|
|
64
69
|
lines.push('\t"entgo.io/ent"');
|
|
65
|
-
if (imports.
|
|
66
|
-
lines.push('\t"entgo.io/ent/
|
|
70
|
+
if (imports.entsql) {
|
|
71
|
+
lines.push('\t"entgo.io/ent/dialect/entsql"');
|
|
72
|
+
}
|
|
73
|
+
if (imports.schema) {
|
|
74
|
+
lines.push('\t"entgo.io/ent/schema"');
|
|
67
75
|
}
|
|
68
76
|
if (imports.edge) {
|
|
69
77
|
lines.push('\t"entgo.io/ent/schema/edge"');
|
|
70
78
|
}
|
|
79
|
+
if (imports.field) {
|
|
80
|
+
lines.push('\t"entgo.io/ent/schema/field"');
|
|
81
|
+
}
|
|
71
82
|
if (imports.index) {
|
|
72
83
|
lines.push('\t"entgo.io/ent/schema/index"');
|
|
73
84
|
}
|
|
@@ -94,4 +105,32 @@ function buildImportBlock(imports) {
|
|
|
94
105
|
lines.push(')');
|
|
95
106
|
return lines.join('\n');
|
|
96
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Check whether a field's native type indicates a UUID.
|
|
110
|
+
* Prisma encodes `@db.Uuid` as `['Uuid', []]`.
|
|
111
|
+
*/
|
|
112
|
+
function isUuidNativeType(nativeType) {
|
|
113
|
+
return nativeType != null && nativeType[0] === 'Uuid';
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Check whether a field's native type indicates a Text column.
|
|
117
|
+
* Prisma encodes `@db.Text` as `['Text', []]`.
|
|
118
|
+
*/
|
|
119
|
+
function isTextNativeType(nativeType) {
|
|
120
|
+
return nativeType != null && nativeType[0] === 'Text';
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extract MaxLen from a native type like VarChar(N) or Char(N).
|
|
124
|
+
* Returns the length as a number, or null if not applicable.
|
|
125
|
+
*/
|
|
126
|
+
function extractMaxLen(nativeType) {
|
|
127
|
+
if (nativeType == null)
|
|
128
|
+
return null;
|
|
129
|
+
const [typeName, args] = nativeType;
|
|
130
|
+
if ((typeName === 'VarChar' || typeName === 'Char') && args.length > 0) {
|
|
131
|
+
const len = parseInt(args[0], 10);
|
|
132
|
+
return isNaN(len) ? null : len;
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
97
136
|
//# sourceMappingURL=type-map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-map.js","sourceRoot":"","sources":["../../src/helpers/type-map.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"type-map.js","sourceRoot":"","sources":["../../src/helpers/type-map.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ export { generateSchema } from './helpers/schema';
|
|
|
3
3
|
export { generateFields, collectFKFieldNames } from './helpers/field';
|
|
4
4
|
export { generateEdges } from './helpers/edge';
|
|
5
5
|
export { generateGenerateGo, generateEntcGo } from './helpers/entfiles';
|
|
6
|
-
export { mapPrismaTypeToEnt, buildImportBlock, createEmptyImports, requiresTimeImport, type GoImports, } from './helpers/type-map';
|
|
6
|
+
export { mapPrismaTypeToEnt, buildImportBlock, createEmptyImports, requiresTimeImport, isUuidNativeType, isTextNativeType, extractMaxLen, type GoImports, } from './helpers/type-map';
|
|
7
7
|
export { toSnakeCase, modelToFileName, fileHeader, indent } from './utils';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,KAAK,SAAS,GACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.indent = exports.fileHeader = exports.modelToFileName = exports.toSnakeCase = exports.requiresTimeImport = exports.createEmptyImports = exports.buildImportBlock = exports.mapPrismaTypeToEnt = exports.generateEntcGo = exports.generateGenerateGo = exports.generateEdges = exports.collectFKFieldNames = exports.generateFields = exports.generateSchema = exports.isEnabled = exports.generate = void 0;
|
|
3
|
+
exports.indent = exports.fileHeader = exports.modelToFileName = exports.toSnakeCase = exports.extractMaxLen = exports.isTextNativeType = exports.isUuidNativeType = exports.requiresTimeImport = exports.createEmptyImports = exports.buildImportBlock = exports.mapPrismaTypeToEnt = exports.generateEntcGo = exports.generateGenerateGo = exports.generateEdges = exports.collectFKFieldNames = exports.generateFields = exports.generateSchema = exports.isEnabled = exports.generate = void 0;
|
|
4
4
|
var generator_1 = require("./generator");
|
|
5
5
|
Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return generator_1.generate; } });
|
|
6
6
|
Object.defineProperty(exports, "isEnabled", { enumerable: true, get: function () { return generator_1.isEnabled; } });
|
|
@@ -19,6 +19,9 @@ Object.defineProperty(exports, "mapPrismaTypeToEnt", { enumerable: true, get: fu
|
|
|
19
19
|
Object.defineProperty(exports, "buildImportBlock", { enumerable: true, get: function () { return type_map_1.buildImportBlock; } });
|
|
20
20
|
Object.defineProperty(exports, "createEmptyImports", { enumerable: true, get: function () { return type_map_1.createEmptyImports; } });
|
|
21
21
|
Object.defineProperty(exports, "requiresTimeImport", { enumerable: true, get: function () { return type_map_1.requiresTimeImport; } });
|
|
22
|
+
Object.defineProperty(exports, "isUuidNativeType", { enumerable: true, get: function () { return type_map_1.isUuidNativeType; } });
|
|
23
|
+
Object.defineProperty(exports, "isTextNativeType", { enumerable: true, get: function () { return type_map_1.isTextNativeType; } });
|
|
24
|
+
Object.defineProperty(exports, "extractMaxLen", { enumerable: true, get: function () { return type_map_1.extractMaxLen; } });
|
|
22
25
|
var utils_1 = require("./utils");
|
|
23
26
|
Object.defineProperty(exports, "toSnakeCase", { enumerable: true, get: function () { return utils_1.toSnakeCase; } });
|
|
24
27
|
Object.defineProperty(exports, "modelToFileName", { enumerable: true, get: function () { return utils_1.modelToFileName; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAAzC,qGAAA,QAAQ,OAAA;AAAE,sGAAA,SAAS,OAAA;AAC5B,2CAAkD;AAAzC,wGAAA,cAAc,OAAA;AACvB,yCAAsE;AAA7D,uGAAA,cAAc,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AAC5C,uCAA+C;AAAtC,qGAAA,aAAa,OAAA;AACtB,+CAAwE;AAA/D,8GAAA,kBAAkB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAC3C,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAAzC,qGAAA,QAAQ,OAAA;AAAE,sGAAA,SAAS,OAAA;AAC5B,2CAAkD;AAAzC,wGAAA,cAAc,OAAA;AACvB,yCAAsE;AAA7D,uGAAA,cAAc,OAAA;AAAE,4GAAA,mBAAmB,OAAA;AAC5C,uCAA+C;AAAtC,qGAAA,aAAa,OAAA;AACtB,+CAAwE;AAA/D,8GAAA,kBAAkB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAC3C,+CAS4B;AAR1B,8GAAA,kBAAkB,OAAA;AAClB,4GAAA,gBAAgB,OAAA;AAChB,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,4GAAA,gBAAgB,OAAA;AAChB,4GAAA,gBAAgB,OAAA;AAChB,yGAAA,aAAa,OAAA;AAGf,iCAA2E;AAAlE,oGAAA,WAAW,OAAA;AAAE,wGAAA,eAAe,OAAA;AAAE,mGAAA,UAAU,OAAA;AAAE,+FAAA,MAAM,OAAA"}
|