@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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/cli/generator.d.ts +3 -0
  4. package/dist/cli/generator.d.ts.map +1 -0
  5. package/dist/cli/generator.js +24 -0
  6. package/dist/cli/generator.js.map +1 -0
  7. package/dist/cli/index.d.ts +2 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +18 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/options-parser.d.ts +48 -0
  12. package/dist/cli/options-parser.d.ts.map +1 -0
  13. package/dist/cli/options-parser.js +61 -0
  14. package/dist/cli/options-parser.js.map +1 -0
  15. package/dist/cli/prisma-generator.d.ts +4 -0
  16. package/dist/cli/prisma-generator.d.ts.map +1 -0
  17. package/dist/cli/prisma-generator.js +27 -0
  18. package/dist/cli/prisma-generator.js.map +1 -0
  19. package/dist/generator/common.d.ts +7 -0
  20. package/dist/generator/common.d.ts.map +1 -0
  21. package/dist/generator/common.js +87 -0
  22. package/dist/generator/common.js.map +1 -0
  23. package/dist/generator/dmmf/document.d.ts +96 -0
  24. package/dist/generator/dmmf/document.d.ts.map +1 -0
  25. package/dist/generator/dmmf/document.js +223 -0
  26. package/dist/generator/dmmf/document.js.map +1 -0
  27. package/dist/generator/dmmf/index.d.ts +4 -0
  28. package/dist/generator/dmmf/index.d.ts.map +1 -0
  29. package/dist/generator/dmmf/index.js +20 -0
  30. package/dist/generator/dmmf/index.js.map +1 -0
  31. package/dist/generator/dmmf/transformer.d.ts +59 -0
  32. package/dist/generator/dmmf/transformer.d.ts.map +1 -0
  33. package/dist/generator/dmmf/transformer.js +247 -0
  34. package/dist/generator/dmmf/transformer.js.map +1 -0
  35. package/dist/generator/dmmf/types.d.ts +169 -0
  36. package/dist/generator/dmmf/types.d.ts.map +1 -0
  37. package/dist/generator/dmmf/types.js +32 -0
  38. package/dist/generator/dmmf/types.js.map +1 -0
  39. package/dist/generator/generate.d.ts +10 -0
  40. package/dist/generator/generate.d.ts.map +1 -0
  41. package/dist/generator/generate.js +131 -0
  42. package/dist/generator/generate.js.map +1 -0
  43. package/dist/generator/helpers-generator.d.ts +7 -0
  44. package/dist/generator/helpers-generator.d.ts.map +1 -0
  45. package/dist/generator/helpers-generator.js +216 -0
  46. package/dist/generator/helpers-generator.js.map +1 -0
  47. package/dist/generator/index.d.ts +7 -0
  48. package/dist/generator/index.d.ts.map +1 -0
  49. package/dist/generator/index.js +23 -0
  50. package/dist/generator/index.js.map +1 -0
  51. package/dist/generator/templates/args.d.ts +8 -0
  52. package/dist/generator/templates/args.d.ts.map +1 -0
  53. package/dist/generator/templates/args.js +650 -0
  54. package/dist/generator/templates/args.js.map +1 -0
  55. package/dist/generator/templates/enum.d.ts +8 -0
  56. package/dist/generator/templates/enum.d.ts.map +1 -0
  57. package/dist/generator/templates/enum.js +66 -0
  58. package/dist/generator/templates/enum.js.map +1 -0
  59. package/dist/generator/templates/index.d.ts +6 -0
  60. package/dist/generator/templates/index.d.ts.map +1 -0
  61. package/dist/generator/templates/index.js +22 -0
  62. package/dist/generator/templates/index.js.map +1 -0
  63. package/dist/generator/templates/input.d.ts +8 -0
  64. package/dist/generator/templates/input.d.ts.map +1 -0
  65. package/dist/generator/templates/input.js +248 -0
  66. package/dist/generator/templates/input.js.map +1 -0
  67. package/dist/generator/templates/model.d.ts +8 -0
  68. package/dist/generator/templates/model.d.ts.map +1 -0
  69. package/dist/generator/templates/model.js +184 -0
  70. package/dist/generator/templates/model.js.map +1 -0
  71. package/dist/generator/templates/resolver.d.ts +8 -0
  72. package/dist/generator/templates/resolver.d.ts.map +1 -0
  73. package/dist/generator/templates/resolver.js +456 -0
  74. package/dist/generator/templates/resolver.js.map +1 -0
  75. package/dist/generator/writers/file-writer.d.ts +10 -0
  76. package/dist/generator/writers/file-writer.d.ts.map +1 -0
  77. package/dist/generator/writers/file-writer.js +40 -0
  78. package/dist/generator/writers/file-writer.js.map +1 -0
  79. package/dist/generator/writers/index.d.ts +2 -0
  80. package/dist/generator/writers/index.d.ts.map +1 -0
  81. package/dist/generator/writers/index.js +18 -0
  82. package/dist/generator/writers/index.js.map +1 -0
  83. package/dist/index.d.ts +26 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +49 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/runtime/helpers.d.ts +102 -0
  88. package/dist/runtime/helpers.d.ts.map +1 -0
  89. package/dist/runtime/helpers.js +210 -0
  90. package/dist/runtime/helpers.js.map +1 -0
  91. package/dist/runtime/index.d.ts +2 -0
  92. package/dist/runtime/index.d.ts.map +1 -0
  93. package/dist/runtime/index.js +18 -0
  94. package/dist/runtime/index.js.map +1 -0
  95. 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":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './document';
2
+ export * from './transformer';
3
+ export * from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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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"}