@nestledjs/api 0.1.10 → 0.1.12
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
CHANGED
|
@@ -1,86 +1,86 @@
|
|
|
1
1
|
<%# EJS template for generating DTOs %>
|
|
2
2
|
<%
|
|
3
|
-
let gqlImports = new Set(['Field', 'InputType'])
|
|
4
|
-
let usesGraphQLJSON = false
|
|
5
|
-
let usesInt = false
|
|
6
|
-
let usesFloat = false
|
|
7
|
-
let usesID = false
|
|
8
|
-
let enumNames = new Set()
|
|
9
|
-
let usesPartialType = false
|
|
10
|
-
const alwaysOptionalFields = ['id', 'createdAt', 'updatedAt']
|
|
3
|
+
let gqlImports = new Set(['Field', 'InputType'])
|
|
4
|
+
let usesGraphQLJSON = false
|
|
5
|
+
let usesInt = false
|
|
6
|
+
let usesFloat = false
|
|
7
|
+
let usesID = false
|
|
8
|
+
let enumNames = new Set()
|
|
9
|
+
let usesPartialType = false
|
|
10
|
+
const alwaysOptionalFields = ['id', 'createdAt', 'updatedAt']
|
|
11
11
|
|
|
12
12
|
// Helper function to get relation fields for a model
|
|
13
13
|
function getRelationFields(model) {
|
|
14
|
-
|
|
14
|
+
return model.fields.filter(field => field.relationName && field.relationName.length > 0)
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// Helper function to get virtual relation fields for a model
|
|
18
18
|
function getVirtualRelationFields(model) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
+
}
|
|
58
60
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return virtualFields;
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
return virtualFields
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// First pass to determine necessary imports and enums
|
|
67
67
|
for (const model of models) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
68
|
+
for (const field of model.fields) {
|
|
69
|
+
if (field.relationName && field.relationName.length > 0) continue // Skip relation object fields
|
|
70
|
+
if (field.type === 'Int') usesInt = true
|
|
71
|
+
if (field.type === 'Float' || field.type === 'Decimal') usesFloat = true
|
|
72
|
+
if (field.type === 'Json') usesGraphQLJSON = true
|
|
73
|
+
if (field.type === 'ID') usesID = true
|
|
74
|
+
if (field.kind === 'enum') {
|
|
75
|
+
enumNames.add(field.type)
|
|
76
|
+
}
|
|
76
77
|
}
|
|
77
|
-
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
if (usesInt) gqlImports.add('Int')
|
|
81
|
-
if (usesFloat) gqlImports.add('Float')
|
|
82
|
-
if (usesID) gqlImports.add('ID')
|
|
83
|
-
usesPartialType = models.length > 0
|
|
80
|
+
if (usesInt) gqlImports.add('Int')
|
|
81
|
+
if (usesFloat) gqlImports.add('Float')
|
|
82
|
+
if (usesID) gqlImports.add('ID')
|
|
83
|
+
usesPartialType = models.length > 0 // If we generate any Update input, we need PartialType
|
|
84
84
|
%>
|
|
85
85
|
import { <%= Array.from(gqlImports).join(', ') %> } from '@nestjs/graphql'
|
|
86
86
|
<% if (enumNames.size > 0) { %>import { <%= Array.from(enumNames).join(', ') %> } from '@<%= npmScope %>/api/core/models'
|
|
@@ -125,7 +125,7 @@ export class Create<%= model.modelName %>Input {
|
|
|
125
125
|
fieldDecoratorTypeArg = `() => ${baseGqlType}`;
|
|
126
126
|
}
|
|
127
127
|
}
|
|
128
|
-
// Always optional for id, createdAt, updatedAt, virtual fields, and
|
|
128
|
+
// Always optional for id, createdAt, updatedAt, virtual fields, and relational fields
|
|
129
129
|
if (alwaysOptionalFields.includes(field.name) || field.isVirtual || field.relationName) {
|
|
130
130
|
isOptional = true;
|
|
131
131
|
} else {
|
|
@@ -55,7 +55,7 @@ function ensureDockerIsRunning() {
|
|
|
55
55
|
}
|
|
56
56
|
function isDockerComposeRunning() {
|
|
57
57
|
try {
|
|
58
|
-
const res = (0, child_process_1.execSync)('
|
|
58
|
+
const res = (0, child_process_1.execSync)('docker compose ps', { stdio: ['inherit', 'inherit'], cwd: devkit_1.workspaceRoot });
|
|
59
59
|
if (res) {
|
|
60
60
|
log('Docker Compose is Running');
|
|
61
61
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../generators/api/src/workspace-setup/lib/helpers.ts"],"names":[],"mappings":";;;AAWA,kBAEC;AAED,8CAIC;AAED,gCAQC;AAED,sDAQC;AAED,wDAWC;AAED,oEAqBC;AAED,oCAWC;AAED,wCASC;AAED,sCASC;AAED,4DASC;;AAzHD,iDAAwC;AACxC,2BAA4D;AAC5D,+BAA+B;AAC/B,2BAA2B;AAC3B,uCAA0C;AAE7B,QAAA,WAAW,GAAG,EAAE,CAAA;AAChB,QAAA,cAAc,GAAG,IAAA,eAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;AACxC,QAAA,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;AACvC,QAAA,mBAAmB,GAAG,yBAAyB,CAAA;AAE5D,SAAgB,GAAG,CAAC,GAAG,GAAG;IACxB,OAAO,CAAC,GAAG,CAAC,IAAI,sBAAc,GAAG,EAAE,GAAG,GAAG,CAAC,CAAA;AAC5C,CAAC;AAED,SAAsB,iBAAiB,CAAC,GAAW;;QACjD,MAAM,MAAM,GAAG,IAAI,WAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACtB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAsB,UAAU,CAAC,GAAW;;QAC1C,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;YAC5B,GAAG,CAAC,uBAAuB,CAAC,CAAA;YAC5B,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;CAAA;AAED,SAAgB,qBAAqB;IACnC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC1C,GAAG,CAAC,cAAc,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../../../generators/api/src/workspace-setup/lib/helpers.ts"],"names":[],"mappings":"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"}
|