@nestledjs/api 0.0.13 → 0.0.16
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/package.json +2 -2
- package/src/generate-crud/files/data-access/src/lib/api-crud-data-access.service.ts__tmpl__ +126 -2
- package/src/generate-crud/files/data-access/src/lib/dto/index.ts__tmpl__ +67 -10
- package/src/generate-crud/generator.d.ts +1 -18
- package/src/generate-crud/generator.js +23 -84
- package/src/generate-crud/generator.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestledjs/api",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"generators": "./generators.json",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "./src/index.js",
|
|
@@ -25,6 +25,6 @@
|
|
|
25
25
|
"pg": "^8.13.0"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@nestledjs/utils": "0.0.
|
|
28
|
+
"@nestledjs/utils": "0.0.15"
|
|
29
29
|
}
|
|
30
30
|
}
|
|
@@ -8,14 +8,136 @@ import * as dto from './dto'
|
|
|
8
8
|
<% if (!model.modelName || !model.pluralModelName) { throw new Error('EJS template error: modelName or pluralModelName missing for model at index ' + idx + ': ' + JSON.stringify(model)); } %>
|
|
9
9
|
<% }) %>
|
|
10
10
|
|
|
11
|
+
<%
|
|
12
|
+
// Helper function to get relation fields for a model
|
|
13
|
+
function getRelationFields(model) {
|
|
14
|
+
return model.fields.filter(field => field.relationName && field.relationName.length > 0);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Helper function to get virtual relation fields for a model
|
|
18
|
+
function getVirtualRelationFields(model) {
|
|
19
|
+
const relationFields = getRelationFields(model);
|
|
20
|
+
const virtualFields = [];
|
|
21
|
+
|
|
22
|
+
relationFields.forEach(relationField => {
|
|
23
|
+
// Only generate virtual fields for relations that don't have explicit foreign keys
|
|
24
|
+
if (!relationField.relationFromFields || relationField.relationFromFields.length === 0) {
|
|
25
|
+
if (relationField.isList) {
|
|
26
|
+
// This is a multi-relation without foreign keys (many-to-many or one-to-many from parent)
|
|
27
|
+
// Generate a virtual foreign key field for connecting
|
|
28
|
+
const virtualFieldName = relationField.name + 'Ids';
|
|
29
|
+
// Check if there's already a scalar field with this name
|
|
30
|
+
const existingField = model.fields.find(f => f.name === virtualFieldName && (!f.relationName || f.relationName.length === 0));
|
|
31
|
+
if (!existingField) {
|
|
32
|
+
virtualFields.push({
|
|
33
|
+
name: virtualFieldName,
|
|
34
|
+
type: 'String',
|
|
35
|
+
isList: true,
|
|
36
|
+
isOptional: true,
|
|
37
|
+
isVirtual: true,
|
|
38
|
+
relationName: relationField.relationName,
|
|
39
|
+
relatedField: relationField.name
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
// This is a single relation without foreign keys (one-to-one or one-to-many from parent)
|
|
44
|
+
// Generate a virtual foreign key field for connecting
|
|
45
|
+
const virtualFieldName = relationField.name + 'Id';
|
|
46
|
+
// Check if there's already a scalar field with this name
|
|
47
|
+
const existingField = model.fields.find(f => f.name === virtualFieldName && (!f.relationName || f.relationName.length === 0));
|
|
48
|
+
if (!existingField) {
|
|
49
|
+
virtualFields.push({
|
|
50
|
+
name: virtualFieldName,
|
|
51
|
+
type: 'String',
|
|
52
|
+
isList: false,
|
|
53
|
+
isOptional: true,
|
|
54
|
+
isVirtual: true,
|
|
55
|
+
relationName: relationField.relationName,
|
|
56
|
+
relatedField: relationField.name
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return virtualFields;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Helper function to get foreign key fields that need relation handling
|
|
67
|
+
function getForeignKeyRelationFields(model) {
|
|
68
|
+
const relationFields = getRelationFields(model);
|
|
69
|
+
const foreignKeyFields = [];
|
|
70
|
+
|
|
71
|
+
relationFields.forEach(relationField => {
|
|
72
|
+
if (relationField.relationFromFields && relationField.relationFromFields.length > 0) {
|
|
73
|
+
// This relation has explicit foreign key fields
|
|
74
|
+
relationField.relationFromFields.forEach(fkFieldName => {
|
|
75
|
+
const fkField = model.fields.find(f => f.name === fkFieldName);
|
|
76
|
+
if (fkField) {
|
|
77
|
+
foreignKeyFields.push({
|
|
78
|
+
fieldName: fkFieldName,
|
|
79
|
+
relationName: relationField.name,
|
|
80
|
+
isRequired: !fkField.isOptional
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return foreignKeyFields;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Helper function to generate relation handling code
|
|
91
|
+
function generateRelationHandling(model, operation) {
|
|
92
|
+
const virtualRelationFields = getVirtualRelationFields(model);
|
|
93
|
+
const foreignKeyFields = getForeignKeyRelationFields(model);
|
|
94
|
+
const allRelationFields = [...virtualRelationFields, ...foreignKeyFields];
|
|
95
|
+
|
|
96
|
+
if (allRelationFields.length === 0) {
|
|
97
|
+
return ' const data = input;';
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
let code = ' const { ';
|
|
101
|
+
code += virtualRelationFields.map(field => field.name).join(', ');
|
|
102
|
+
if (foreignKeyFields.length > 0) {
|
|
103
|
+
if (virtualRelationFields.length > 0) code += ', ';
|
|
104
|
+
code += foreignKeyFields.map(field => field.fieldName).join(', ');
|
|
105
|
+
}
|
|
106
|
+
code += ', ...regularFields } = input;\n';
|
|
107
|
+
code += ' const data: any = regularFields;\n\n';
|
|
108
|
+
|
|
109
|
+
// Handle virtual relation fields (many-to-many without explicit FKs)
|
|
110
|
+
virtualRelationFields.forEach(field => {
|
|
111
|
+
code += ` if (${field.name}) {\n`;
|
|
112
|
+
if (field.isList) {
|
|
113
|
+
code += ` data.${field.relatedField} = { ${operation === 'create' ? 'connect' : 'set'}: ${field.name}.map(id => ({ id })) };\n`;
|
|
114
|
+
} else {
|
|
115
|
+
code += ` data.${field.relatedField} = { connect: { id: ${field.name} } };\n`;
|
|
116
|
+
}
|
|
117
|
+
code += ' }\n';
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// Handle foreign key fields (explicit FK relations)
|
|
121
|
+
foreignKeyFields.forEach(field => {
|
|
122
|
+
code += ` if (${field.fieldName}) {\n`;
|
|
123
|
+
code += ` data.${field.relationName} = { connect: { id: ${field.fieldName} } };\n`;
|
|
124
|
+
code += ' }\n';
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
return code;
|
|
128
|
+
}
|
|
129
|
+
%>
|
|
130
|
+
|
|
11
131
|
@Injectable()
|
|
12
132
|
export class ApiCrudDataAccessService {
|
|
13
133
|
constructor(private readonly data: ApiCoreDataAccessService) {}
|
|
14
134
|
|
|
15
135
|
<% for (const model of models) { %>
|
|
16
136
|
async create<%= model.modelName.charAt(0).toUpperCase() + model.modelName.slice(1) %>(info: GraphQLResolveInfo, input: dto.Create<%= model.modelName %>Input) {
|
|
137
|
+
<%- generateRelationHandling(model, 'create') %>
|
|
138
|
+
|
|
17
139
|
return this.data['<%= model.modelPropertyName %>'].create({
|
|
18
|
-
data
|
|
140
|
+
data,
|
|
19
141
|
select: createSelect(info),
|
|
20
142
|
});
|
|
21
143
|
}
|
|
@@ -52,9 +174,11 @@ export class ApiCrudDataAccessService {
|
|
|
52
174
|
}
|
|
53
175
|
|
|
54
176
|
async update<%= model.modelName.charAt(0).toUpperCase() + model.modelName.slice(1) %>(info: GraphQLResolveInfo, id: string, input: dto.Update<%= model.modelName %>Input) {
|
|
177
|
+
<%- generateRelationHandling(model, 'update') %>
|
|
178
|
+
|
|
55
179
|
return this.data['<%= model.modelPropertyName %>'].update({
|
|
56
180
|
where: { id },
|
|
57
|
-
data
|
|
181
|
+
data,
|
|
58
182
|
select: createSelect(info),
|
|
59
183
|
});
|
|
60
184
|
}
|
|
@@ -9,10 +9,64 @@ let enumNames = new Set();
|
|
|
9
9
|
let usesPartialType = false;
|
|
10
10
|
const alwaysOptionalFields = ['id', 'createdAt', 'updatedAt'];
|
|
11
11
|
|
|
12
|
+
// Helper function to get relation fields for a model
|
|
13
|
+
function getRelationFields(model) {
|
|
14
|
+
return model.fields.filter(field => field.relationName && field.relationName.length > 0);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// Helper function to get virtual relation fields for a model
|
|
18
|
+
function getVirtualRelationFields(model) {
|
|
19
|
+
const relationFields = getRelationFields(model);
|
|
20
|
+
const virtualFields = [];
|
|
21
|
+
|
|
22
|
+
relationFields.forEach(relationField => {
|
|
23
|
+
// Only generate virtual fields for relations that don't have explicit foreign keys
|
|
24
|
+
if (!relationField.relationFromFields || relationField.relationFromFields.length === 0) {
|
|
25
|
+
if (relationField.isList) {
|
|
26
|
+
// This is a multi-relation without foreign keys (many-to-many or one-to-many from parent)
|
|
27
|
+
// Generate a virtual foreign key field for connecting
|
|
28
|
+
const virtualFieldName = relationField.name + 'Ids';
|
|
29
|
+
// Check if there's already a scalar field with this name
|
|
30
|
+
const existingField = model.fields.find(f => f.name === virtualFieldName && (!f.relationName || f.relationName.length === 0));
|
|
31
|
+
if (!existingField) {
|
|
32
|
+
virtualFields.push({
|
|
33
|
+
name: virtualFieldName,
|
|
34
|
+
type: 'String',
|
|
35
|
+
isList: true,
|
|
36
|
+
isOptional: true,
|
|
37
|
+
isVirtual: true, // Mark as virtual so we know it's generated
|
|
38
|
+
relationName: relationField.relationName,
|
|
39
|
+
relatedField: relationField.name
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
// This is a single relation without foreign keys (one-to-one or one-to-many from parent)
|
|
44
|
+
// Generate a virtual foreign key field for connecting
|
|
45
|
+
const virtualFieldName = relationField.name + 'Id';
|
|
46
|
+
// Check if there's already a scalar field with this name
|
|
47
|
+
const existingField = model.fields.find(f => f.name === virtualFieldName && (!f.relationName || f.relationName.length === 0));
|
|
48
|
+
if (!existingField) {
|
|
49
|
+
virtualFields.push({
|
|
50
|
+
name: virtualFieldName,
|
|
51
|
+
type: 'String',
|
|
52
|
+
isList: false,
|
|
53
|
+
isOptional: true,
|
|
54
|
+
isVirtual: true, // Mark as virtual so we know it's generated
|
|
55
|
+
relationName: relationField.relationName,
|
|
56
|
+
relatedField: relationField.name
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return virtualFields;
|
|
64
|
+
}
|
|
65
|
+
|
|
12
66
|
// First pass to determine necessary imports and enums
|
|
13
67
|
for (const model of models) {
|
|
14
68
|
for (const field of model.fields) {
|
|
15
|
-
if (field.
|
|
69
|
+
if (field.relationName && field.relationName.length > 0) continue; // Skip relation object fields
|
|
16
70
|
if (field.type === 'Int') usesInt = true;
|
|
17
71
|
if (field.type === 'Float' || field.type === 'Decimal') usesFloat = true;
|
|
18
72
|
if (field.type === 'Json') usesGraphQLJSON = true;
|
|
@@ -34,10 +88,15 @@ import { <%= Array.from(gqlImports).join(', ') %> } from '@nestjs/graphql'
|
|
|
34
88
|
import { CorePagingInput } from '@<%= npmScope %>/api/core/data-access'
|
|
35
89
|
|
|
36
90
|
<% for (const model of models) { %>
|
|
91
|
+
<%
|
|
92
|
+
// Get all regular fields (non-relation) and virtual relation fields
|
|
93
|
+
const regularFields = model.fields.filter(field => !field.relationName || field.relationName.length === 0);
|
|
94
|
+
const virtualRelationFields = getVirtualRelationFields(model);
|
|
95
|
+
const allFields = [...regularFields, ...virtualRelationFields];
|
|
96
|
+
%>
|
|
37
97
|
@InputType()
|
|
38
98
|
export class Create<%= model.modelName %>Input {
|
|
39
|
-
<% for (const field of
|
|
40
|
-
<% if (field.kind === 'object') { continue; } %>
|
|
99
|
+
<% for (const field of allFields) { %>
|
|
41
100
|
<%
|
|
42
101
|
let baseGqlType;
|
|
43
102
|
let tsType;
|
|
@@ -66,11 +125,11 @@ export class Create<%= model.modelName %>Input {
|
|
|
66
125
|
fieldDecoratorTypeArg = `() => ${baseGqlType}`;
|
|
67
126
|
}
|
|
68
127
|
}
|
|
69
|
-
// Always optional for id, createdAt, updatedAt
|
|
70
|
-
if (alwaysOptionalFields.includes(field.name)) {
|
|
128
|
+
// Always optional for id, createdAt, updatedAt, and virtual fields
|
|
129
|
+
if (alwaysOptionalFields.includes(field.name) || field.isVirtual) {
|
|
71
130
|
isOptional = true;
|
|
72
131
|
} else {
|
|
73
|
-
isOptional =
|
|
132
|
+
isOptional = field.isOptional;
|
|
74
133
|
}
|
|
75
134
|
%>
|
|
76
135
|
@Field(<% if (fieldDecoratorTypeArg) { %><%- fieldDecoratorTypeArg %>, <% } %>{ nullable: <%= isOptional ? 'true' : 'false' %> })
|
|
@@ -80,8 +139,7 @@ export class Create<%= model.modelName %>Input {
|
|
|
80
139
|
|
|
81
140
|
@InputType()
|
|
82
141
|
export class Update<%= model.modelName %>Input {
|
|
83
|
-
<% for (const field of
|
|
84
|
-
<% if (field.kind === 'object') { continue; } %>
|
|
142
|
+
<% for (const field of allFields) { %>
|
|
85
143
|
<%
|
|
86
144
|
let baseGqlType;
|
|
87
145
|
let tsType;
|
|
@@ -117,8 +175,7 @@ export class Update<%= model.modelName %>Input {
|
|
|
117
175
|
|
|
118
176
|
@InputType()
|
|
119
177
|
export class List<%= model.modelName %>Input extends CorePagingInput {
|
|
120
|
-
<% for (const field of
|
|
121
|
-
<% if (field.kind === 'object') { continue; } %>
|
|
178
|
+
<% for (const field of allFields) { %>
|
|
122
179
|
<%
|
|
123
180
|
let baseGqlType;
|
|
124
181
|
let tsType;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { formatFiles, generateFiles, installPackagesTask, joinPathFragments, names, Tree } from '@nx/devkit';
|
|
2
2
|
import { getDMMF } from '@prisma/internals';
|
|
3
|
-
import { apiLibraryGenerator, getPrismaSchemaPath, readPrismaSchema } from '@nestledjs/utils';
|
|
3
|
+
import { apiLibraryGenerator, getPrismaSchemaPath, readPrismaSchema, ModelType } from '@nestledjs/utils';
|
|
4
4
|
import { GenerateCrudGeneratorSchema } from './schema';
|
|
5
5
|
import { getNpmScope } from '@nx/js/src/utils/package-json/get-npm-scope';
|
|
6
|
-
import pluralize from 'pluralize';
|
|
7
6
|
interface CrudAuthConfig {
|
|
8
7
|
readOne?: string;
|
|
9
8
|
readMany?: string;
|
|
@@ -12,20 +11,6 @@ interface CrudAuthConfig {
|
|
|
12
11
|
update?: string;
|
|
13
12
|
delete?: string;
|
|
14
13
|
}
|
|
15
|
-
interface ModelType {
|
|
16
|
-
name: string;
|
|
17
|
-
pluralName: string;
|
|
18
|
-
fields: ReadonlyArray<Record<string, unknown> & {
|
|
19
|
-
name: string;
|
|
20
|
-
type: string;
|
|
21
|
-
}>;
|
|
22
|
-
primaryField: string;
|
|
23
|
-
modelName: string;
|
|
24
|
-
modelPropertyName: string;
|
|
25
|
-
pluralModelName: string;
|
|
26
|
-
pluralModelPropertyName: string;
|
|
27
|
-
auth?: CrudAuthConfig;
|
|
28
|
-
}
|
|
29
14
|
export interface GenerateCrudGeneratorDependencies {
|
|
30
15
|
formatFiles: typeof formatFiles;
|
|
31
16
|
generateFiles: typeof generateFiles;
|
|
@@ -37,7 +22,6 @@ export interface GenerateCrudGeneratorDependencies {
|
|
|
37
22
|
getPrismaSchemaPath: typeof getPrismaSchemaPath;
|
|
38
23
|
readPrismaSchema: typeof readPrismaSchema;
|
|
39
24
|
getNpmScope: typeof getNpmScope;
|
|
40
|
-
pluralize: typeof pluralize;
|
|
41
25
|
}
|
|
42
26
|
export declare function parseCrudAuth(comment: string): CrudAuthConfig | null;
|
|
43
27
|
export declare function getCrudAuthForModel(schema: string, modelName: string): CrudAuthConfig;
|
|
@@ -45,7 +29,6 @@ export declare function getGuardForAuthLevel(level: string): string | null;
|
|
|
45
29
|
export declare function generateResolverContent(model: ModelType, npmScope: string): string;
|
|
46
30
|
export declare function generateFeatureModuleContent(models: ModelType[], npmScope: string): string;
|
|
47
31
|
export declare function generateFeatureIndexContent(models: ModelType[]): string;
|
|
48
|
-
export declare function generateDatabaseModelContent(models: ModelType[]): string;
|
|
49
32
|
export declare function generateCrudLogic(tree: Tree, schema: GenerateCrudGeneratorSchema, dependencies: GenerateCrudGeneratorDependencies): Promise<() => void>;
|
|
50
33
|
export default function (tree: Tree, schema: GenerateCrudGeneratorSchema): Promise<() => void>;
|
|
51
34
|
export {};
|
|
@@ -6,7 +6,6 @@ exports.getGuardForAuthLevel = getGuardForAuthLevel;
|
|
|
6
6
|
exports.generateResolverContent = generateResolverContent;
|
|
7
7
|
exports.generateFeatureModuleContent = generateFeatureModuleContent;
|
|
8
8
|
exports.generateFeatureIndexContent = generateFeatureIndexContent;
|
|
9
|
-
exports.generateDatabaseModelContent = generateDatabaseModelContent;
|
|
10
9
|
exports.generateCrudLogic = generateCrudLogic;
|
|
11
10
|
exports.default = default_1;
|
|
12
11
|
const tslib_1 = require("tslib");
|
|
@@ -14,7 +13,6 @@ const devkit_1 = require("@nx/devkit");
|
|
|
14
13
|
const internals_1 = require("@prisma/internals");
|
|
15
14
|
const utils_1 = require("@nestledjs/utils");
|
|
16
15
|
const get_npm_scope_1 = require("@nx/js/src/utils/package-json/get-npm-scope");
|
|
17
|
-
const pluralize_1 = tslib_1.__importDefault(require("pluralize"));
|
|
18
16
|
// STEP 2: DEFINE PURE HELPER & CONTENT GENERATION FUNCTIONS
|
|
19
17
|
// These functions are side-effect free and can be tested independently.
|
|
20
18
|
function parseCrudAuth(comment) {
|
|
@@ -185,86 +183,10 @@ function generateFeatureIndexContent(models) {
|
|
|
185
183
|
.map((model) => `export * from './lib/${toKebabCase(model.modelName)}.resolver'`)
|
|
186
184
|
.join('\n')}\n`;
|
|
187
185
|
}
|
|
188
|
-
function generateDatabaseModelContent(models) {
|
|
189
|
-
return `// Auto-generated database model information
|
|
190
|
-
// This file is generated by the CRUD generator and should not be manually edited
|
|
191
|
-
|
|
192
|
-
export interface DatabaseField {
|
|
193
|
-
name: string
|
|
194
|
-
type: string
|
|
195
|
-
isOptional?: boolean
|
|
196
|
-
isId?: boolean
|
|
197
|
-
isUnique?: boolean
|
|
198
|
-
isList?: boolean
|
|
199
|
-
isReadOnly?: boolean
|
|
200
|
-
hasDefaultValue?: boolean
|
|
201
|
-
default?: unknown
|
|
202
|
-
relationName?: string
|
|
203
|
-
relationFromFields?: string[]
|
|
204
|
-
relationToFields?: string[]
|
|
205
|
-
relationOnDelete?: string
|
|
206
|
-
relationOnUpdate?: string
|
|
207
|
-
isGenerated?: boolean
|
|
208
|
-
isUpdatedAt?: boolean
|
|
209
|
-
documentation?: string
|
|
210
|
-
[key: string]: unknown
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
export interface DatabaseModel {
|
|
214
|
-
name: string
|
|
215
|
-
pluralName: string
|
|
216
|
-
fields: DatabaseField[]
|
|
217
|
-
primaryField: string
|
|
218
|
-
modelName: string
|
|
219
|
-
modelPropertyName: string
|
|
220
|
-
pluralModelName: string
|
|
221
|
-
pluralModelPropertyName: string
|
|
222
|
-
auth?: {
|
|
223
|
-
readOne?: string
|
|
224
|
-
readMany?: string
|
|
225
|
-
count?: string
|
|
226
|
-
create?: string
|
|
227
|
-
update?: string
|
|
228
|
-
delete?: string
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
export const DATABASE_MODELS: DatabaseModel[] = ${JSON.stringify(models, null, 2)}
|
|
233
|
-
|
|
234
|
-
export const DATABASE_MODELS_BY_NAME: Record<string, DatabaseModel> = {
|
|
235
|
-
${models.map(model => ` ${model.modelName}: DATABASE_MODELS.find(m => m.modelName === '${model.modelName}')!,`).join('\n')}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
export const DATABASE_MODEL_NAMES = [
|
|
239
|
-
${models.map(model => ` '${model.modelName}',`).join('\n')}
|
|
240
|
-
] as const
|
|
241
|
-
|
|
242
|
-
export type DatabaseModelName = typeof DATABASE_MODEL_NAMES[number]
|
|
243
|
-
|
|
244
|
-
// Helper functions
|
|
245
|
-
export function getDatabaseModel(modelName: string): DatabaseModel | undefined {
|
|
246
|
-
return DATABASE_MODELS_BY_NAME[modelName]
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
export function getDatabaseModelFields(modelName: string): DatabaseField[] {
|
|
250
|
-
const model = getDatabaseModel(modelName)
|
|
251
|
-
return model ? model.fields : []
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
export function getDatabaseModelField(modelName: string, fieldName: string): DatabaseField | undefined {
|
|
255
|
-
const fields = getDatabaseModelFields(modelName)
|
|
256
|
-
return fields.find(field => field.name === fieldName)
|
|
257
|
-
}
|
|
258
|
-
`;
|
|
259
|
-
}
|
|
260
186
|
// STEP 3: DEFINE THE CORE LOGIC FUNCTION
|
|
261
187
|
// This function contains all the generator's logic but uses injected dependencies, making it testable.
|
|
262
188
|
function generateCrudLogic(tree, schema, dependencies) {
|
|
263
189
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
264
|
-
const customPluralize = (str) => {
|
|
265
|
-
const plural = dependencies.pluralize(str);
|
|
266
|
-
return plural === str ? `${str}List` : plural;
|
|
267
|
-
};
|
|
268
190
|
// Helper functions that now use injected dependencies
|
|
269
191
|
function getAllPrismaModels(tree) {
|
|
270
192
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
@@ -279,16 +201,34 @@ function generateCrudLogic(tree, schema, dependencies) {
|
|
|
279
201
|
return dmmf.datamodel.models.map((model) => {
|
|
280
202
|
var _a;
|
|
281
203
|
const singularPropertyName = model.name.charAt(0).toLowerCase() + model.name.slice(1);
|
|
282
|
-
const pluralPropertyName =
|
|
204
|
+
const pluralPropertyName = (0, utils_1.getPluralName)(singularPropertyName);
|
|
283
205
|
const authConfig = getCrudAuthForModel(prismaSchema, model.name);
|
|
284
206
|
return {
|
|
285
207
|
name: model.name,
|
|
286
|
-
pluralName:
|
|
287
|
-
fields: model.fields.map((field) => (
|
|
208
|
+
pluralName: (0, utils_1.getPluralName)(model.name),
|
|
209
|
+
fields: model.fields.map((field) => ({
|
|
210
|
+
name: field.name,
|
|
211
|
+
type: field.type,
|
|
212
|
+
isOptional: !field.isRequired,
|
|
213
|
+
isId: field.isId,
|
|
214
|
+
isUnique: field.isUnique,
|
|
215
|
+
isList: field.isList,
|
|
216
|
+
isReadOnly: field.isReadOnly,
|
|
217
|
+
hasDefaultValue: field.hasDefaultValue,
|
|
218
|
+
default: field.default,
|
|
219
|
+
relationName: field.relationName,
|
|
220
|
+
relationFromFields: field.relationFromFields ? [...field.relationFromFields] : undefined,
|
|
221
|
+
relationToFields: field.relationToFields ? [...field.relationToFields] : undefined,
|
|
222
|
+
relationOnDelete: field.relationOnDelete,
|
|
223
|
+
relationOnUpdate: field.relationOnUpdate,
|
|
224
|
+
isGenerated: field.isGenerated,
|
|
225
|
+
isUpdatedAt: field.isUpdatedAt,
|
|
226
|
+
documentation: field.documentation,
|
|
227
|
+
})),
|
|
288
228
|
primaryField: ((_a = model.fields.find((f) => !f.isId && f.type === 'String')) === null || _a === void 0 ? void 0 : _a.name) || 'name',
|
|
289
229
|
modelName: model.name,
|
|
290
230
|
modelPropertyName: singularPropertyName,
|
|
291
|
-
pluralModelName:
|
|
231
|
+
pluralModelName: (0, utils_1.getPluralName)(model.name),
|
|
292
232
|
pluralModelPropertyName: pluralPropertyName,
|
|
293
233
|
auth: authConfig,
|
|
294
234
|
};
|
|
@@ -319,7 +259,7 @@ function generateCrudLogic(tree, schema, dependencies) {
|
|
|
319
259
|
const featureIndexContent = generateFeatureIndexContent(models);
|
|
320
260
|
tree.write(dependencies.joinPathFragments(featureLibraryRoot, 'src/index.ts'), featureIndexContent);
|
|
321
261
|
// Generate database models file for frontend consumption
|
|
322
|
-
const databaseModelContent = generateDatabaseModelContent(models);
|
|
262
|
+
const databaseModelContent = (0, utils_1.generateDatabaseModelContent)(models);
|
|
323
263
|
tree.write(dependencies.joinPathFragments(dataAccessLibraryRoot, 'src/lib/database-models.ts'), databaseModelContent);
|
|
324
264
|
// Generate resolvers
|
|
325
265
|
for (const model of models) {
|
|
@@ -359,7 +299,6 @@ function default_1(tree, schema) {
|
|
|
359
299
|
getPrismaSchemaPath: utils_1.getPrismaSchemaPath,
|
|
360
300
|
readPrismaSchema: utils_1.readPrismaSchema,
|
|
361
301
|
getNpmScope: get_npm_scope_1.getNpmScope,
|
|
362
|
-
pluralize: pluralize_1.default,
|
|
363
302
|
};
|
|
364
303
|
try {
|
|
365
304
|
return yield generateCrudLogic(tree, schema, dependencies);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/generate-crud/generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../generators/api/src/generate-crud/generator.ts"],"names":[],"mappings":"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"}
|