@k0lyan/nestjs-prisma-graphql-generator 0.1.4 → 0.1.6
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.
|
@@ -32,6 +32,8 @@ function generateModels(project, dmmf, config) {
|
|
|
32
32
|
function generateModelFile(sourceFile, model, dmmf, config) {
|
|
33
33
|
const nestjsImports = ['ObjectType', 'Field', 'ID', 'Int', 'Float'];
|
|
34
34
|
const hasJson = model.fields.some(f => f.type === 'Json');
|
|
35
|
+
const relationFields = model.fields.filter(f => (0, transformer_1.isRelationField)(f));
|
|
36
|
+
const relatedModels = [...new Set(relationFields.map(f => f.type))].filter(m => m !== model.name);
|
|
35
37
|
// Add imports
|
|
36
38
|
sourceFile.addImportDeclaration({
|
|
37
39
|
moduleSpecifier: '@nestjs/graphql',
|
|
@@ -43,16 +45,13 @@ function generateModelFile(sourceFile, model, dmmf, config) {
|
|
|
43
45
|
namedImports: ['GraphQLJSON'],
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
|
-
// Import related models
|
|
47
|
-
const relationFields = model.fields.filter(f => (0, transformer_1.isRelationField)(f));
|
|
48
|
-
const relatedModels = [...new Set(relationFields.map(f => f.type))];
|
|
48
|
+
// Import related models using type-only imports to avoid circular dependencies
|
|
49
49
|
for (const relatedModel of relatedModels) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
50
|
+
sourceFile.addImportDeclaration({
|
|
51
|
+
moduleSpecifier: `./${relatedModel}`,
|
|
52
|
+
namedImports: [relatedModel],
|
|
53
|
+
isTypeOnly: true,
|
|
54
|
+
});
|
|
56
55
|
}
|
|
57
56
|
// Import enums
|
|
58
57
|
const enumFields = model.fields.filter(f => (0, transformer_1.isEnumField)(f));
|
|
@@ -94,14 +93,25 @@ function generateModelFile(sourceFile, model, dmmf, config) {
|
|
|
94
93
|
*/
|
|
95
94
|
function addFieldToClass(classDecl, field, dmmf, _config) {
|
|
96
95
|
const { graphqlType, tsType } = getFieldTypes(field, dmmf);
|
|
96
|
+
const isRelation = (0, transformer_1.isRelationField)(field);
|
|
97
97
|
// Build @Field decorator arguments
|
|
98
98
|
const fieldDecoratorArgs = [];
|
|
99
|
-
// Type function
|
|
100
|
-
if (
|
|
101
|
-
|
|
99
|
+
// Type function - use lazy require for relations to avoid circular deps
|
|
100
|
+
if (isRelation) {
|
|
101
|
+
if (field.isList) {
|
|
102
|
+
fieldDecoratorArgs.push(`() => [require('./${field.type}').${field.type}]`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
fieldDecoratorArgs.push(`() => require('./${field.type}').${field.type}`);
|
|
106
|
+
}
|
|
102
107
|
}
|
|
103
108
|
else {
|
|
104
|
-
|
|
109
|
+
if (field.isList) {
|
|
110
|
+
fieldDecoratorArgs.push(`() => [${graphqlType}]`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
fieldDecoratorArgs.push(`() => ${graphqlType}`);
|
|
114
|
+
}
|
|
105
115
|
}
|
|
106
116
|
// Options object
|
|
107
117
|
const options = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/generator/templates/model.ts"],"names":[],"mappings":";;AAYA,wCAyBC;AApCD,yCAA4E;AAC5E,uCAAwD;AACxD,qDAAkF;AAIlF,mCAA4C;AAE5C;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAAgB,EAChB,IAAkB,EAClB,MAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC;QACpC,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAExE,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,WAAW,CAAC;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,UAAsB,EACtB,KAAY,EACZ,IAAkB,EAClB,MAAuB;IAEvB,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/generator/templates/model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@k0lyan/nestjs-prisma-graphql-generator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Prisma generator for NestJS 11 GraphQL with optimized query building from GraphQL selections",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -63,7 +63,8 @@
|
|
|
63
63
|
"@nestjs/common": ">=10.0.0",
|
|
64
64
|
"@nestjs/graphql": ">=12.0.0",
|
|
65
65
|
"@prisma/client": ">=7.0.0",
|
|
66
|
-
"graphql": "^16.0.0"
|
|
66
|
+
"graphql": "^16.0.0",
|
|
67
|
+
"graphql-type-json": "^0.3.2"
|
|
67
68
|
},
|
|
68
69
|
"devDependencies": {
|
|
69
70
|
"@types/jest": "^29.5.12",
|