@k0lyan/nestjs-prisma-graphql-generator 0.1.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/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/cli/generator.d.ts +3 -0
- package/dist/cli/generator.d.ts.map +1 -0
- package/dist/cli/generator.js +24 -0
- package/dist/cli/generator.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +18 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options-parser.d.ts +48 -0
- package/dist/cli/options-parser.d.ts.map +1 -0
- package/dist/cli/options-parser.js +61 -0
- package/dist/cli/options-parser.js.map +1 -0
- package/dist/cli/prisma-generator.d.ts +4 -0
- package/dist/cli/prisma-generator.d.ts.map +1 -0
- package/dist/cli/prisma-generator.js +27 -0
- package/dist/cli/prisma-generator.js.map +1 -0
- package/dist/generator/common.d.ts +7 -0
- package/dist/generator/common.d.ts.map +1 -0
- package/dist/generator/common.js +87 -0
- package/dist/generator/common.js.map +1 -0
- package/dist/generator/dmmf/document.d.ts +96 -0
- package/dist/generator/dmmf/document.d.ts.map +1 -0
- package/dist/generator/dmmf/document.js +223 -0
- package/dist/generator/dmmf/document.js.map +1 -0
- package/dist/generator/dmmf/index.d.ts +4 -0
- package/dist/generator/dmmf/index.d.ts.map +1 -0
- package/dist/generator/dmmf/index.js +20 -0
- package/dist/generator/dmmf/index.js.map +1 -0
- package/dist/generator/dmmf/transformer.d.ts +59 -0
- package/dist/generator/dmmf/transformer.d.ts.map +1 -0
- package/dist/generator/dmmf/transformer.js +247 -0
- package/dist/generator/dmmf/transformer.js.map +1 -0
- package/dist/generator/dmmf/types.d.ts +169 -0
- package/dist/generator/dmmf/types.d.ts.map +1 -0
- package/dist/generator/dmmf/types.js +32 -0
- package/dist/generator/dmmf/types.js.map +1 -0
- package/dist/generator/generate.d.ts +10 -0
- package/dist/generator/generate.d.ts.map +1 -0
- package/dist/generator/generate.js +131 -0
- package/dist/generator/generate.js.map +1 -0
- package/dist/generator/helpers-generator.d.ts +7 -0
- package/dist/generator/helpers-generator.d.ts.map +1 -0
- package/dist/generator/helpers-generator.js +216 -0
- package/dist/generator/helpers-generator.js.map +1 -0
- package/dist/generator/index.d.ts +7 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +23 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/templates/args.d.ts +8 -0
- package/dist/generator/templates/args.d.ts.map +1 -0
- package/dist/generator/templates/args.js +650 -0
- package/dist/generator/templates/args.js.map +1 -0
- package/dist/generator/templates/enum.d.ts +8 -0
- package/dist/generator/templates/enum.d.ts.map +1 -0
- package/dist/generator/templates/enum.js +66 -0
- package/dist/generator/templates/enum.js.map +1 -0
- package/dist/generator/templates/index.d.ts +6 -0
- package/dist/generator/templates/index.d.ts.map +1 -0
- package/dist/generator/templates/index.js +22 -0
- package/dist/generator/templates/index.js.map +1 -0
- package/dist/generator/templates/input.d.ts +8 -0
- package/dist/generator/templates/input.d.ts.map +1 -0
- package/dist/generator/templates/input.js +248 -0
- package/dist/generator/templates/input.js.map +1 -0
- package/dist/generator/templates/model.d.ts +8 -0
- package/dist/generator/templates/model.d.ts.map +1 -0
- package/dist/generator/templates/model.js +184 -0
- package/dist/generator/templates/model.js.map +1 -0
- package/dist/generator/templates/resolver.d.ts +8 -0
- package/dist/generator/templates/resolver.d.ts.map +1 -0
- package/dist/generator/templates/resolver.js +456 -0
- package/dist/generator/templates/resolver.js.map +1 -0
- package/dist/generator/writers/file-writer.d.ts +10 -0
- package/dist/generator/writers/file-writer.d.ts.map +1 -0
- package/dist/generator/writers/file-writer.js +40 -0
- package/dist/generator/writers/file-writer.js.map +1 -0
- package/dist/generator/writers/index.d.ts +2 -0
- package/dist/generator/writers/index.d.ts.map +1 -0
- package/dist/generator/writers/index.js +18 -0
- package/dist/generator/writers/index.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/helpers.d.ts +102 -0
- package/dist/runtime/helpers.d.ts.map +1 -0
- package/dist/runtime/helpers.js +210 -0
- package/dist/runtime/helpers.js.map +1 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +18 -0
- package/dist/runtime/index.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DMMFDocument = void 0;
|
|
4
|
+
const transformer_1 = require("./transformer");
|
|
5
|
+
/**
|
|
6
|
+
* Processed DMMF Document that provides easy access to transformed schema data
|
|
7
|
+
*/
|
|
8
|
+
class DMMFDocument {
|
|
9
|
+
_dmmf;
|
|
10
|
+
_config;
|
|
11
|
+
_models = null;
|
|
12
|
+
_enums = null;
|
|
13
|
+
_relations = null;
|
|
14
|
+
_modelMappings = null;
|
|
15
|
+
_inputTypes = null;
|
|
16
|
+
_outputTypes = null;
|
|
17
|
+
constructor(dmmf, config) {
|
|
18
|
+
this._dmmf = dmmf;
|
|
19
|
+
this._config = config;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get raw DMMF document
|
|
23
|
+
*/
|
|
24
|
+
get raw() {
|
|
25
|
+
return this._dmmf;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get generator config
|
|
29
|
+
*/
|
|
30
|
+
get config() {
|
|
31
|
+
return this._config;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all transformed models
|
|
35
|
+
*/
|
|
36
|
+
get models() {
|
|
37
|
+
if (!this._models) {
|
|
38
|
+
this._models = this._dmmf.datamodel.models.map(transformer_1.transformModel);
|
|
39
|
+
}
|
|
40
|
+
return this._models;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get all transformed enums
|
|
44
|
+
*/
|
|
45
|
+
get enums() {
|
|
46
|
+
if (!this._enums) {
|
|
47
|
+
this._enums = this._dmmf.datamodel.enums.map(transformer_1.transformEnum);
|
|
48
|
+
}
|
|
49
|
+
return this._enums;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get all relations between models
|
|
53
|
+
*/
|
|
54
|
+
get relations() {
|
|
55
|
+
if (!this._relations) {
|
|
56
|
+
this._relations = (0, transformer_1.extractRelations)(this.models);
|
|
57
|
+
}
|
|
58
|
+
return this._relations;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Get CRUD operation mappings for all models
|
|
62
|
+
*/
|
|
63
|
+
get modelMappings() {
|
|
64
|
+
if (!this._modelMappings) {
|
|
65
|
+
this._modelMappings = (0, transformer_1.generateModelMappings)(this.models);
|
|
66
|
+
}
|
|
67
|
+
return this._modelMappings;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get input types map
|
|
71
|
+
*/
|
|
72
|
+
get inputTypes() {
|
|
73
|
+
if (!this._inputTypes) {
|
|
74
|
+
this._inputTypes = new Map();
|
|
75
|
+
// Process prisma namespace input types
|
|
76
|
+
const prismaInputTypes = this._dmmf.schema.inputObjectTypes.prisma ?? [];
|
|
77
|
+
for (const inputType of prismaInputTypes) {
|
|
78
|
+
this._inputTypes.set(inputType.name, (0, transformer_1.transformInputType)(inputType));
|
|
79
|
+
}
|
|
80
|
+
// Process model namespace input types
|
|
81
|
+
const modelInputTypes = this._dmmf.schema.inputObjectTypes.model ?? [];
|
|
82
|
+
for (const inputType of modelInputTypes) {
|
|
83
|
+
this._inputTypes.set(inputType.name, (0, transformer_1.transformInputType)(inputType));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return this._inputTypes;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get output types map
|
|
90
|
+
*/
|
|
91
|
+
get outputTypes() {
|
|
92
|
+
if (!this._outputTypes) {
|
|
93
|
+
this._outputTypes = new Map();
|
|
94
|
+
// Process prisma namespace output types
|
|
95
|
+
const prismaOutputTypes = this._dmmf.schema.outputObjectTypes.prisma ?? [];
|
|
96
|
+
for (const outputType of prismaOutputTypes) {
|
|
97
|
+
this._outputTypes.set(outputType.name, {
|
|
98
|
+
name: outputType.name,
|
|
99
|
+
fields: outputType.fields.map(f => ({
|
|
100
|
+
name: f.name,
|
|
101
|
+
type: String(f.outputType.type),
|
|
102
|
+
isList: f.outputType.isList,
|
|
103
|
+
isNullable: f.isNullable ?? false,
|
|
104
|
+
args: f.args.map(a => ({
|
|
105
|
+
name: a.name,
|
|
106
|
+
type: String(a.inputTypes[0]?.type ?? 'unknown'),
|
|
107
|
+
isList: a.inputTypes.some(t => t.isList),
|
|
108
|
+
isRequired: a.isRequired,
|
|
109
|
+
isNullable: a.isNullable,
|
|
110
|
+
inputTypes: a.inputTypes.map(t => ({
|
|
111
|
+
type: String(t.type),
|
|
112
|
+
isList: t.isList,
|
|
113
|
+
location: t.location,
|
|
114
|
+
namespace: t.namespace,
|
|
115
|
+
})),
|
|
116
|
+
})),
|
|
117
|
+
})),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
// Process model namespace output types
|
|
121
|
+
const modelOutputTypes = this._dmmf.schema.outputObjectTypes.model ?? [];
|
|
122
|
+
for (const outputType of modelOutputTypes) {
|
|
123
|
+
this._outputTypes.set(outputType.name, {
|
|
124
|
+
name: outputType.name,
|
|
125
|
+
fields: outputType.fields.map(f => ({
|
|
126
|
+
name: f.name,
|
|
127
|
+
type: String(f.outputType.type),
|
|
128
|
+
isList: f.outputType.isList,
|
|
129
|
+
isNullable: f.isNullable ?? false,
|
|
130
|
+
args: f.args.map(a => ({
|
|
131
|
+
name: a.name,
|
|
132
|
+
type: String(a.inputTypes[0]?.type ?? 'unknown'),
|
|
133
|
+
isList: a.inputTypes.some(t => t.isList),
|
|
134
|
+
isRequired: a.isRequired,
|
|
135
|
+
isNullable: a.isNullable,
|
|
136
|
+
inputTypes: a.inputTypes.map(t => ({
|
|
137
|
+
type: String(t.type),
|
|
138
|
+
isList: t.isList,
|
|
139
|
+
location: t.location,
|
|
140
|
+
namespace: t.namespace,
|
|
141
|
+
})),
|
|
142
|
+
})),
|
|
143
|
+
})),
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return this._outputTypes;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get a model by name
|
|
151
|
+
*/
|
|
152
|
+
getModel(name) {
|
|
153
|
+
return this.models.find(m => m.name === name);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get an enum by name
|
|
157
|
+
*/
|
|
158
|
+
getEnum(name) {
|
|
159
|
+
return this.enums.find(e => e.name === name);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get model mapping by model name
|
|
163
|
+
*/
|
|
164
|
+
getModelMapping(modelName) {
|
|
165
|
+
return this.modelMappings.find(m => m.model === modelName);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get relations for a specific model
|
|
169
|
+
*/
|
|
170
|
+
getRelationsForModel(modelName) {
|
|
171
|
+
return this.relations.filter(r => r.fromModel === modelName || r.toModel === modelName);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Get input type by name
|
|
175
|
+
*/
|
|
176
|
+
getInputType(name) {
|
|
177
|
+
return this.inputTypes.get(name);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get output type by name
|
|
181
|
+
*/
|
|
182
|
+
getOutputType(name) {
|
|
183
|
+
return this.outputTypes.get(name);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Check if a type is an enum
|
|
187
|
+
*/
|
|
188
|
+
isEnum(typeName) {
|
|
189
|
+
return this.enums.some(e => e.name === typeName);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if a type is a model
|
|
193
|
+
*/
|
|
194
|
+
isModel(typeName) {
|
|
195
|
+
return this.models.some(m => m.name === typeName);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Get all input types that match a pattern
|
|
199
|
+
*/
|
|
200
|
+
getInputTypesByPattern(pattern) {
|
|
201
|
+
const result = [];
|
|
202
|
+
for (const [name, inputType] of this.inputTypes) {
|
|
203
|
+
if (pattern.test(name)) {
|
|
204
|
+
result.push(inputType);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return result;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get input types for a specific model
|
|
211
|
+
*/
|
|
212
|
+
getModelInputTypes(modelName) {
|
|
213
|
+
return {
|
|
214
|
+
whereInput: this.getInputType(`${modelName}WhereInput`),
|
|
215
|
+
whereUniqueInput: this.getInputType(`${modelName}WhereUniqueInput`),
|
|
216
|
+
createInput: this.getInputType(`${modelName}CreateInput`),
|
|
217
|
+
updateInput: this.getInputType(`${modelName}UpdateInput`),
|
|
218
|
+
orderByInput: this.getInputType(`${modelName}OrderByWithRelationInput`),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
exports.DMMFDocument = DMMFDocument;
|
|
223
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/generator/dmmf/document.ts"],"names":[],"mappings":";;;AACA,+CAMuB;AAKvB;;GAEG;AACH,MAAa,YAAY;IACN,KAAK,CAAgB;IACrB,OAAO,CAAkB;IAElC,OAAO,GAAmB,IAAI,CAAC;IAC/B,MAAM,GAAkB,IAAI,CAAC;IAC7B,UAAU,GAAsB,IAAI,CAAC;IACrC,cAAc,GAA0B,IAAI,CAAC;IAC7C,WAAW,GAAkC,IAAI,CAAC;IAClD,YAAY,GAAmC,IAAI,CAAC;IAE5D,YAAY,IAAmB,EAAE,MAAuB;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,4BAAc,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,2BAAa,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAA,8BAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAA,mCAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;YAE7B,uCAAuC;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC;YACzE,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAA,gCAAkB,EAAC,SAAS,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,sCAAsC;YACtC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;YACvE,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,IAAA,gCAAkB,EAAC,SAAS,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;YAE9B,wCAAwC;YACxC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC;YAC3E,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBACrC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC/B,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAiB;wBACtC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK;wBACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACrB,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;4BAChD,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BACxC,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCACjC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gCACpB,MAAM,EAAE,CAAC,CAAC,MAAiB;gCAC3B,QAAQ,EAAE,CAAC,CAAC,QAIW;gCACvB,SAAS,EAAE,CAAC,CAAC,SAA2C;6BACzD,CAAC,CAAC;yBACJ,CAAC,CAAC;qBACJ,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;YAED,uCAAuC;YACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE,CAAC;YACzE,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBACrC,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBAClC,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;wBAC/B,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAiB;wBACtC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,KAAK;wBACjC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;4BACrB,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,SAAS,CAAC;4BAChD,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;4BACxC,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,UAAU,EAAE,CAAC,CAAC,UAAU;4BACxB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gCACjC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gCACpB,MAAM,EAAE,CAAC,CAAC,MAAiB;gCAC3B,QAAQ,EAAE,CAAC,CAAC,QAIW;gCACvB,SAAS,EAAE,CAAC,CAAC,SAA2C;6BACzD,CAAC,CAAC;yBACJ,CAAC,CAAC;qBACJ,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,SAAiB;QACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,OAAe;QACpC,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,KAAK,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAiB;QAOlC,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,YAAY,CAAC;YACvD,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,kBAAkB,CAAC;YACnE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,aAAa,CAAC;YACzD,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,aAAa,CAAC;YACzD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,SAAS,0BAA0B,CAAC;SACxE,CAAC;IACJ,CAAC;CACF;AA3PD,oCA2PC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/dmmf/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./document"), exports);
|
|
18
|
+
__exportStar(require("./transformer"), exports);
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/dmmf/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,0CAAwB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Enum, InputField, InputType, Model, ModelField, ModelMapping, Relation } from './types';
|
|
2
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
3
|
+
/**
|
|
4
|
+
* Transform DMMF Model to internal Model representation
|
|
5
|
+
*/
|
|
6
|
+
export declare function transformModel(dmmfModel: DMMF.Model): Model;
|
|
7
|
+
/**
|
|
8
|
+
* Transform DMMF Field to internal ModelField representation
|
|
9
|
+
*/
|
|
10
|
+
export declare function transformField(dmmfField: DMMF.Field): ModelField;
|
|
11
|
+
/**
|
|
12
|
+
* Transform DMMF Enum to internal Enum representation
|
|
13
|
+
*/
|
|
14
|
+
export declare function transformEnum(dmmfEnum: DMMF.DatamodelEnum): Enum;
|
|
15
|
+
/**
|
|
16
|
+
* Extract relations from models
|
|
17
|
+
*/
|
|
18
|
+
export declare function extractRelations(models: Model[]): Relation[];
|
|
19
|
+
/**
|
|
20
|
+
* Generate model mappings for CRUD operations
|
|
21
|
+
*/
|
|
22
|
+
export declare function generateModelMappings(models: Model[]): ModelMapping[];
|
|
23
|
+
/**
|
|
24
|
+
* Transform DMMF InputType to internal InputType representation
|
|
25
|
+
*/
|
|
26
|
+
export declare function transformInputType(dmmfInputType: DMMF.InputType): InputType;
|
|
27
|
+
/**
|
|
28
|
+
* Transform DMMF SchemaArg to internal InputField representation
|
|
29
|
+
*/
|
|
30
|
+
export declare function transformInputField(dmmfArg: DMMF.SchemaArg): InputField;
|
|
31
|
+
/**
|
|
32
|
+
* Convert string to camelCase
|
|
33
|
+
*/
|
|
34
|
+
export declare function camelCase(str: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Convert string to PascalCase
|
|
37
|
+
*/
|
|
38
|
+
export declare function pascalCase(str: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a field is a scalar field
|
|
41
|
+
*/
|
|
42
|
+
export declare function isScalarField(field: ModelField): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a field is an enum field
|
|
45
|
+
*/
|
|
46
|
+
export declare function isEnumField(field: ModelField): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Check if a field is a relation field
|
|
49
|
+
*/
|
|
50
|
+
export declare function isRelationField(field: ModelField): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get ID fields from a model
|
|
53
|
+
*/
|
|
54
|
+
export declare function getIdFields(model: Model): ModelField[];
|
|
55
|
+
/**
|
|
56
|
+
* Get unique fields from a model (excluding ID)
|
|
57
|
+
*/
|
|
58
|
+
export declare function getUniqueFields(model: Model): ModelField[];
|
|
59
|
+
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../../src/generator/dmmf/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,SAAS,EACT,KAAK,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACT,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAmB3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,GAAG,UAAU,CAqBhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAUhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAuC5D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAuBrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAS3E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,GAAG,UAAU,CAcvE;AAmCD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,CAStD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,EAAE,CAE1D"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.transformModel = transformModel;
|
|
7
|
+
exports.transformField = transformField;
|
|
8
|
+
exports.transformEnum = transformEnum;
|
|
9
|
+
exports.extractRelations = extractRelations;
|
|
10
|
+
exports.generateModelMappings = generateModelMappings;
|
|
11
|
+
exports.transformInputType = transformInputType;
|
|
12
|
+
exports.transformInputField = transformInputField;
|
|
13
|
+
exports.camelCase = camelCase;
|
|
14
|
+
exports.pascalCase = pascalCase;
|
|
15
|
+
exports.isScalarField = isScalarField;
|
|
16
|
+
exports.isEnumField = isEnumField;
|
|
17
|
+
exports.isRelationField = isRelationField;
|
|
18
|
+
exports.getIdFields = getIdFields;
|
|
19
|
+
exports.getUniqueFields = getUniqueFields;
|
|
20
|
+
const pluralize_1 = __importDefault(require("pluralize"));
|
|
21
|
+
/**
|
|
22
|
+
* Transform DMMF Model to internal Model representation
|
|
23
|
+
*/
|
|
24
|
+
function transformModel(dmmfModel) {
|
|
25
|
+
return {
|
|
26
|
+
name: dmmfModel.name,
|
|
27
|
+
dbName: dmmfModel.dbName,
|
|
28
|
+
fields: dmmfModel.fields.map(transformField),
|
|
29
|
+
primaryKey: dmmfModel.primaryKey
|
|
30
|
+
? {
|
|
31
|
+
name: dmmfModel.primaryKey.name,
|
|
32
|
+
fields: [...dmmfModel.primaryKey.fields],
|
|
33
|
+
}
|
|
34
|
+
: null,
|
|
35
|
+
uniqueFields: dmmfModel.uniqueFields.map(fields => [...fields]),
|
|
36
|
+
uniqueIndexes: dmmfModel.uniqueIndexes.map(idx => ({
|
|
37
|
+
name: idx.name,
|
|
38
|
+
fields: [...idx.fields],
|
|
39
|
+
})),
|
|
40
|
+
documentation: dmmfModel.documentation,
|
|
41
|
+
isGenerated: dmmfModel.isGenerated ?? false,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Transform DMMF Field to internal ModelField representation
|
|
46
|
+
*/
|
|
47
|
+
function transformField(dmmfField) {
|
|
48
|
+
return {
|
|
49
|
+
name: dmmfField.name,
|
|
50
|
+
type: dmmfField.type,
|
|
51
|
+
kind: dmmfField.kind,
|
|
52
|
+
isList: dmmfField.isList,
|
|
53
|
+
isRequired: dmmfField.isRequired,
|
|
54
|
+
isUnique: dmmfField.isUnique,
|
|
55
|
+
isId: dmmfField.isId,
|
|
56
|
+
isReadOnly: dmmfField.isReadOnly,
|
|
57
|
+
isGenerated: dmmfField.isGenerated ?? false,
|
|
58
|
+
isUpdatedAt: dmmfField.isUpdatedAt ?? false,
|
|
59
|
+
hasDefaultValue: dmmfField.hasDefaultValue,
|
|
60
|
+
default: dmmfField.default,
|
|
61
|
+
relationName: dmmfField.relationName,
|
|
62
|
+
relationFromFields: dmmfField.relationFromFields
|
|
63
|
+
? [...dmmfField.relationFromFields]
|
|
64
|
+
: undefined,
|
|
65
|
+
relationToFields: dmmfField.relationToFields ? [...dmmfField.relationToFields] : undefined,
|
|
66
|
+
documentation: dmmfField.documentation,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Transform DMMF Enum to internal Enum representation
|
|
71
|
+
*/
|
|
72
|
+
function transformEnum(dmmfEnum) {
|
|
73
|
+
return {
|
|
74
|
+
name: dmmfEnum.name,
|
|
75
|
+
values: dmmfEnum.values.map(v => ({
|
|
76
|
+
name: v.name,
|
|
77
|
+
dbName: v.dbName,
|
|
78
|
+
documentation: v.documentation,
|
|
79
|
+
})),
|
|
80
|
+
documentation: dmmfEnum.documentation,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extract relations from models
|
|
85
|
+
*/
|
|
86
|
+
function extractRelations(models) {
|
|
87
|
+
const relations = [];
|
|
88
|
+
const seenRelations = new Set();
|
|
89
|
+
for (const model of models) {
|
|
90
|
+
for (const field of model.fields) {
|
|
91
|
+
if (field.kind === 'object' && field.relationName) {
|
|
92
|
+
const relationKey = [field.relationName, model.name, field.type].sort().join('_');
|
|
93
|
+
if (!seenRelations.has(relationKey)) {
|
|
94
|
+
seenRelations.add(relationKey);
|
|
95
|
+
const targetModel = models.find(m => m.name === field.type);
|
|
96
|
+
const reverseField = targetModel?.fields.find(f => f.relationName === field.relationName && f.type === model.name);
|
|
97
|
+
let relationType = 'one-to-one';
|
|
98
|
+
if (field.isList && reverseField?.isList) {
|
|
99
|
+
relationType = 'many-to-many';
|
|
100
|
+
}
|
|
101
|
+
else if (field.isList || reverseField?.isList) {
|
|
102
|
+
relationType = 'one-to-many';
|
|
103
|
+
}
|
|
104
|
+
relations.push({
|
|
105
|
+
name: field.relationName,
|
|
106
|
+
fromModel: model.name,
|
|
107
|
+
fromField: field.name,
|
|
108
|
+
toModel: field.type,
|
|
109
|
+
toField: reverseField?.name ?? '',
|
|
110
|
+
type: relationType,
|
|
111
|
+
isList: field.isList,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return relations;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate model mappings for CRUD operations
|
|
121
|
+
*/
|
|
122
|
+
function generateModelMappings(models) {
|
|
123
|
+
return models.map(model => {
|
|
124
|
+
const lowerName = camelCase(model.name);
|
|
125
|
+
const pluralName = (0, pluralize_1.default)(lowerName);
|
|
126
|
+
return {
|
|
127
|
+
model: model.name,
|
|
128
|
+
plural: pluralName,
|
|
129
|
+
findUnique: `${lowerName}`,
|
|
130
|
+
findFirst: `findFirst${model.name}`,
|
|
131
|
+
findMany: pluralName,
|
|
132
|
+
create: `createOne${model.name}`,
|
|
133
|
+
createMany: `createMany${model.name}`,
|
|
134
|
+
update: `updateOne${model.name}`,
|
|
135
|
+
updateMany: `updateMany${model.name}`,
|
|
136
|
+
upsert: `upsertOne${model.name}`,
|
|
137
|
+
delete: `deleteOne${model.name}`,
|
|
138
|
+
deleteMany: `deleteMany${model.name}`,
|
|
139
|
+
aggregate: `aggregate${model.name}`,
|
|
140
|
+
groupBy: `groupBy${model.name}`,
|
|
141
|
+
count: `${lowerName}Count`,
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Transform DMMF InputType to internal InputType representation
|
|
147
|
+
*/
|
|
148
|
+
function transformInputType(dmmfInputType) {
|
|
149
|
+
return {
|
|
150
|
+
name: dmmfInputType.name,
|
|
151
|
+
fields: dmmfInputType.fields.map(transformInputField),
|
|
152
|
+
constraints: {
|
|
153
|
+
maxNumFields: dmmfInputType.constraints.maxNumFields,
|
|
154
|
+
minNumFields: dmmfInputType.constraints.minNumFields,
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Transform DMMF SchemaArg to internal InputField representation
|
|
160
|
+
*/
|
|
161
|
+
function transformInputField(dmmfArg) {
|
|
162
|
+
return {
|
|
163
|
+
name: dmmfArg.name,
|
|
164
|
+
type: getMainInputType(dmmfArg.inputTypes),
|
|
165
|
+
isList: dmmfArg.inputTypes.some(t => t.isList),
|
|
166
|
+
isRequired: dmmfArg.isRequired,
|
|
167
|
+
isNullable: dmmfArg.isNullable,
|
|
168
|
+
inputTypes: dmmfArg.inputTypes.map(t => ({
|
|
169
|
+
type: String(t.type),
|
|
170
|
+
isList: t.isList,
|
|
171
|
+
location: t.location,
|
|
172
|
+
namespace: t.namespace,
|
|
173
|
+
})),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get the main input type from a list of input types
|
|
178
|
+
* Prefers non-null, non-list, object types
|
|
179
|
+
*/
|
|
180
|
+
function getMainInputType(inputTypes) {
|
|
181
|
+
// Prefer input object types
|
|
182
|
+
const objectType = inputTypes.find(t => t.location === 'inputObjectTypes');
|
|
183
|
+
if (objectType) {
|
|
184
|
+
return String(objectType.type);
|
|
185
|
+
}
|
|
186
|
+
// Then enums
|
|
187
|
+
const enumType = inputTypes.find(t => t.location === 'enumTypes');
|
|
188
|
+
if (enumType) {
|
|
189
|
+
return String(enumType.type);
|
|
190
|
+
}
|
|
191
|
+
// Then scalars
|
|
192
|
+
const scalarType = inputTypes.find(t => t.location === 'scalar');
|
|
193
|
+
if (scalarType) {
|
|
194
|
+
return String(scalarType.type);
|
|
195
|
+
}
|
|
196
|
+
// Fallback to first type
|
|
197
|
+
return String(inputTypes[0]?.type ?? 'unknown');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Convert string to camelCase
|
|
201
|
+
*/
|
|
202
|
+
function camelCase(str) {
|
|
203
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Convert string to PascalCase
|
|
207
|
+
*/
|
|
208
|
+
function pascalCase(str) {
|
|
209
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Check if a field is a scalar field
|
|
213
|
+
*/
|
|
214
|
+
function isScalarField(field) {
|
|
215
|
+
return field.kind === 'scalar';
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Check if a field is an enum field
|
|
219
|
+
*/
|
|
220
|
+
function isEnumField(field) {
|
|
221
|
+
return field.kind === 'enum';
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Check if a field is a relation field
|
|
225
|
+
*/
|
|
226
|
+
function isRelationField(field) {
|
|
227
|
+
return field.kind === 'object';
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get ID fields from a model
|
|
231
|
+
*/
|
|
232
|
+
function getIdFields(model) {
|
|
233
|
+
// First check for compound primary key
|
|
234
|
+
if (model.primaryKey) {
|
|
235
|
+
return model.fields.filter(f => model.primaryKey.fields.includes(f.name));
|
|
236
|
+
}
|
|
237
|
+
// Fall back to @id field
|
|
238
|
+
const idField = model.fields.find(f => f.isId);
|
|
239
|
+
return idField ? [idField] : [];
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get unique fields from a model (excluding ID)
|
|
243
|
+
*/
|
|
244
|
+
function getUniqueFields(model) {
|
|
245
|
+
return model.fields.filter(f => f.isUnique && !f.isId);
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../../src/generator/dmmf/transformer.ts"],"names":[],"mappings":"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"}
|