@postxl/generator 0.60.7 → 0.62.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/dist/generator.js +29 -36
- package/dist/generators/indices/businesslogic-actiontypes.generator.js +6 -6
- package/dist/generators/indices/businesslogic-update-clonecontext.generator.js +3 -3
- package/dist/generators/indices/businesslogic-update-module.generator.js +9 -9
- package/dist/generators/indices/businesslogic-update-service.generator.js +6 -6
- package/dist/generators/indices/businesslogic-view-module.generator.js +8 -8
- package/dist/generators/indices/businesslogic-view-service.generator.js +6 -6
- package/dist/generators/indices/data-types.generator.js +1 -1
- package/dist/generators/indices/datamock-module.generator.js +8 -32
- package/dist/generators/indices/datamocker.generator.js +3 -3
- package/dist/generators/indices/datamodule.generator.js +5 -4
- package/dist/generators/indices/dataservice.generator.js +4 -4
- package/dist/generators/indices/dispatcher-service.generator.js +11 -10
- package/dist/generators/indices/importexport-convert-import-functions.generator.js +7 -7
- package/dist/generators/indices/importexport-exporter-class.generator.js +6 -6
- package/dist/generators/indices/importexport-import-service.generator.js +14 -12
- package/dist/generators/indices/importexport-types.generator.js +2 -2
- package/dist/generators/indices/repositories.generator.d.ts +0 -7
- package/dist/generators/indices/repositories.generator.js +2 -16
- package/dist/generators/indices/seed-migration.generator.js +6 -4
- package/dist/generators/indices/testdata-service.generator.js +7 -7
- package/dist/generators/models/businesslogic-update.generator.js +24 -23
- package/dist/generators/models/businesslogic-view.generator.js +8 -9
- package/dist/generators/models/importexport-decoder.generator.d.ts +0 -7
- package/dist/generators/models/importexport-decoder.generator.js +2 -16
- package/dist/generators/models/repository.generator.js +5 -7
- package/dist/generators/models/route.generator.js +3 -3
- package/dist/generators/models/seed.generator.js +2 -2
- package/dist/generators/models/stub.generator.js +1 -1
- package/dist/lib/meta.d.ts +189 -231
- package/dist/lib/meta.js +78 -91
- package/dist/lib/schema/schema.d.ts +10 -3
- package/dist/lib/schema/types.d.ts +27 -0
- package/dist/lib/schema/types.js +28 -1
- package/package.json +2 -2
- package/dist/generators/indices/businesslogic-update-index.generator.d.ts +0 -9
- package/dist/generators/indices/businesslogic-update-index.generator.js +0 -23
- package/dist/generators/indices/businesslogic-view-index.generator.d.ts +0 -9
- package/dist/generators/indices/businesslogic-view-index.generator.js +0 -19
- package/dist/generators/indices/stubs.generator.d.ts +0 -16
- package/dist/generators/indices/stubs.generator.js +0 -29
package/dist/generator.js
CHANGED
|
@@ -43,10 +43,8 @@ const react_generator_1 = require("./generators/enums/react.generator");
|
|
|
43
43
|
const types_generator_1 = require("./generators/enums/types.generator");
|
|
44
44
|
const businesslogic_actiontypes_generator_1 = require("./generators/indices/businesslogic-actiontypes.generator");
|
|
45
45
|
const businesslogic_update_clonecontext_generator_1 = require("./generators/indices/businesslogic-update-clonecontext.generator");
|
|
46
|
-
const businesslogic_update_index_generator_1 = require("./generators/indices/businesslogic-update-index.generator");
|
|
47
46
|
const businesslogic_update_module_generator_1 = require("./generators/indices/businesslogic-update-module.generator");
|
|
48
47
|
const businesslogic_update_service_generator_1 = require("./generators/indices/businesslogic-update-service.generator");
|
|
49
|
-
const businesslogic_view_index_generator_1 = require("./generators/indices/businesslogic-view-index.generator");
|
|
50
48
|
const businesslogic_view_module_generator_1 = require("./generators/indices/businesslogic-view-module.generator");
|
|
51
49
|
const businesslogic_view_service_generator_1 = require("./generators/indices/businesslogic-view-service.generator");
|
|
52
50
|
const data_types_generator_1 = require("./generators/indices/data-types.generator");
|
|
@@ -65,7 +63,6 @@ const routes_index_generator_1 = require("./generators/indices/routes-index.gene
|
|
|
65
63
|
const seed_migration_generator_1 = require("./generators/indices/seed-migration.generator");
|
|
66
64
|
const seed_template_generator_1 = require("./generators/indices/seed-template.generator");
|
|
67
65
|
const selectors_generator_1 = require("./generators/indices/selectors.generator");
|
|
68
|
-
const stubs_generator_1 = require("./generators/indices/stubs.generator");
|
|
69
66
|
const testdata_service_generator_1 = require("./generators/indices/testdata-service.generator");
|
|
70
67
|
const types_generator_2 = require("./generators/indices/types.generator");
|
|
71
68
|
const admin_page_generator_1 = require("./generators/models/admin.page.generator");
|
|
@@ -93,7 +90,8 @@ const CONFIG_SCHEMA = zod_1.z
|
|
|
93
90
|
pathToE2ELib: zod_1.z.string().optional(),
|
|
94
91
|
pathToImportExport: zod_1.z.string().optional(),
|
|
95
92
|
pathToActions: zod_1.z.string().optional(),
|
|
96
|
-
|
|
93
|
+
pathToBusinessViewLogic: zod_1.z.string().optional(),
|
|
94
|
+
pathToBusinessUpdateLogic: zod_1.z.string().optional(),
|
|
97
95
|
pathToSeedData: zod_1.z.string().optional(),
|
|
98
96
|
pathToSeedLib: zod_1.z.string().optional(),
|
|
99
97
|
pathToTypes: zod_1.z.string().optional(),
|
|
@@ -119,7 +117,8 @@ const CONFIG_SCHEMA = zod_1.z
|
|
|
119
117
|
e2eLibPath: (0, types_1.toPath)(s.pathToE2ELib || './backend/libs/e2e/src/'),
|
|
120
118
|
importExportPath: (0, types_1.toPath)(s.pathToImportExport || './backend/libs/import-export/src/'),
|
|
121
119
|
actionsPath: (0, types_1.toPath)(s.pathToActions || './backend/libs/actions/src/'),
|
|
122
|
-
|
|
120
|
+
businessViewLogicPath: (0, types_1.toPath)(s.pathToBusinessViewLogic || './backend/libs/view/src/'),
|
|
121
|
+
businessUpdateLogicPath: (0, types_1.toPath)(s.pathToBusinessUpdateLogic || './backend/libs/update/src/'),
|
|
123
122
|
prismaMigrationsFolderPath: (0, types_1.toPath)(s.prismaMigrationsFolder || './migrations'),
|
|
124
123
|
modelTypeDefinitionsPath: (0, types_1.toPath)(s.pathToTypes || './backend/libs/types/src/'),
|
|
125
124
|
reactFolderPath: (0, types_1.toPath)(s.reactFolderOutput || './web/src/components/'),
|
|
@@ -181,17 +180,17 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
181
180
|
// Types
|
|
182
181
|
generated.write(`/${meta.types.filePath}.ts`, (0, types_generator_3.generateModelTypes)({ model, meta }));
|
|
183
182
|
// Seed
|
|
184
|
-
generated.write(`/${meta.seed.
|
|
183
|
+
generated.write(`/${meta.seed.location.path}.ts`, (0, seed_generator_1.generateSeedModel)({ model, itemCount: 5, meta, models }));
|
|
185
184
|
// Data
|
|
186
|
-
generated.write(`/${meta.data.
|
|
187
|
-
generated.write(`/${meta.data.repository.
|
|
188
|
-
generated.write(`/${meta.data.mockRepository.
|
|
189
|
-
generated.write(`/${meta.e2e.
|
|
185
|
+
generated.write(`/${meta.data.stubLocation.path}.ts`, (0, stub_generator_1.generateStub)({ model, meta }));
|
|
186
|
+
generated.write(`/${meta.data.repository.location.path}.ts`, (0, repository_generator_1.generateRepository)({ model, meta }));
|
|
187
|
+
generated.write(`/${meta.data.mockRepository.location.path}.ts`, (0, repository_generator_1.generateMockRepository)({ model, meta }));
|
|
188
|
+
generated.write(`/${meta.e2e.stubLocation.path}.ts`, (0, stub_generator_1.generateStub)({ model, meta }));
|
|
190
189
|
// Import-Export
|
|
191
190
|
generated.write(`/${meta.importExport.decoder.filePath}.ts`, (0, importexport_decoder_generator_1.generateModelImportExportDecoder)({ model, meta, schemaMeta: (0, meta_1.getSchemaMetadata)({ config }) }));
|
|
192
191
|
// Business Logic
|
|
193
|
-
generated.write(`/${meta.
|
|
194
|
-
generated.write(`/${meta.
|
|
192
|
+
generated.write(`/${meta.view.serviceLocation.path}.ts`, (0, businesslogic_view_generator_1.generateModelBusinessLogicView)({ model, meta }));
|
|
193
|
+
generated.write(`/${meta.update.serviceClassLocation.path}.ts`, (0, businesslogic_update_generator_1.generateModelBusinessLogicUpdate)({ model, meta }));
|
|
195
194
|
// Routes
|
|
196
195
|
generated.write(`/${meta.trpc.routerFilePath}.ts`, (0, route_generator_1.generateRoute)({ model, meta }));
|
|
197
196
|
// React
|
|
@@ -209,38 +208,32 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
209
208
|
// Generate Index Files and Services
|
|
210
209
|
const meta = (0, meta_1.getSchemaMetadata)({ config });
|
|
211
210
|
// Data
|
|
212
|
-
generated.write(`/${meta.data.
|
|
213
|
-
generated.write(`/${meta.data.
|
|
211
|
+
generated.write(`/${meta.data.mockModule.location.path}.ts`, (0, datamock_module_generator_1.generateDataMockModule)({ models, meta }));
|
|
212
|
+
generated.write(`/${meta.data.moduleLocation.path}.ts`, (0, datamodule_generator_1.generateDataModule)({ models, meta }));
|
|
214
213
|
generated.write(`/${meta.data.emptyDbCommandFilePath}.ts`, (0, emptydatabasemigration_generator_1.generateEmptyDatabaseCommand)({ models, meta }));
|
|
215
|
-
generated.write(`/${meta.data.dataService.
|
|
214
|
+
generated.write(`/${meta.data.dataService.location.path}.ts`, (0, dataservice_generator_1.generateDataService)({ models, meta }));
|
|
216
215
|
generated.write(`/${meta.data.testDataServiceFilePath}.ts`, (0, testdata_service_generator_1.generateTestDataService)({ models, meta }));
|
|
217
|
-
generated.write(`/${meta.e2e.
|
|
216
|
+
generated.write(`/${meta.e2e.dataMockerLocation.path}.ts`, (0, datamocker_generator_1.generateDataMocker)({ models, meta }));
|
|
218
217
|
generated.write(`/${meta.e2e.selectorsFilePath}.ts`, (0, selectors_generator_1.generateSelectors)());
|
|
219
|
-
generated.write(`/${meta.e2e.dataMocker.stubIndexFilePath}.ts`, (0, stubs_generator_1.generateDataMockerStubsIndex)({ models, meta }));
|
|
220
218
|
generated.write(`/${meta.data.repository.constFilePath}.ts`, (0, repositories_generator_1.generateRepositoriesArray)({ models, meta }));
|
|
221
|
-
generated.write(`/${meta.data.
|
|
222
|
-
generated.write(`/${meta.data.stubIndexFilePath}.ts`, (0, stubs_generator_1.generateStubsIndex)({ models, meta }));
|
|
223
|
-
generated.write(`/${meta.data.types.filePath}.ts`, (0, data_types_generator_1.generateDataTypes)({ models, meta }));
|
|
219
|
+
generated.write(`/${meta.data.types.location.path}.ts`, (0, data_types_generator_1.generateDataTypes)({ models, meta }));
|
|
224
220
|
// Import-Export
|
|
225
|
-
generated.write(`/${meta.importExport.types.
|
|
226
|
-
generated.write(`/${meta.importExport.exporterClass.
|
|
227
|
-
generated.write(`/${meta.importExport.importService.
|
|
228
|
-
generated.write(`/${meta.importExport.decoder.
|
|
229
|
-
generated.write(`/${meta.importExport.
|
|
230
|
-
generated.write(`/${meta.importExport.converterFunctions.filePath}.ts`, (0, importexport_convert_import_functions_generator_1.generateImportExportConvertImportFunctions)({ models, meta }));
|
|
221
|
+
generated.write(`/${meta.importExport.types.location.path}.ts`, (0, importexport_types_generator_1.generateImportExportTypes)({ models, meta }));
|
|
222
|
+
generated.write(`/${meta.importExport.exporterClass.location.path}.ts`, (0, importexport_exporter_class_generator_1.generateImportExportExporterClass)({ models, meta }));
|
|
223
|
+
generated.write(`/${meta.importExport.importService.location.path}.ts`, (0, importexport_import_service_generator_1.generateImportExportImportService)({ models, meta }));
|
|
224
|
+
generated.write(`/${meta.importExport.decoder.location.path}.ts`, (0, importexport_decoder_generator_1.generateImportExportDecoder)({ models, meta }));
|
|
225
|
+
generated.write(`/${meta.importExport.converterFunctions.location.path}.ts`, (0, importexport_convert_import_functions_generator_1.generateImportExportConvertImportFunctions)({ models, meta }));
|
|
231
226
|
// Actions
|
|
232
|
-
generated.write(`/${meta.actions.dispatcher.
|
|
227
|
+
generated.write(`/${meta.actions.dispatcher.classLocation.path}.ts`, (0, dispatcher_service_generator_1.generateActionsDispatcherService)({ models, meta }));
|
|
233
228
|
// Business Logic
|
|
234
|
-
generated.write(`/${meta.
|
|
235
|
-
generated.write(`/${meta.
|
|
236
|
-
generated.write(`/${meta.
|
|
237
|
-
generated.write(`/${meta.
|
|
238
|
-
generated.write(`/${meta.
|
|
239
|
-
generated.write(`/${meta.
|
|
240
|
-
generated.write(`/${meta.businessLogic.update.serviceFilePath}.ts`, (0, businesslogic_update_service_generator_1.generateBusinessLogicUpdateService)({ models, meta }));
|
|
241
|
-
generated.write(`/${meta.businessLogic.update.actionTypesFilePath}.ts`, (0, businesslogic_actiontypes_generator_1.generateBusinessLogicActionTypes)({ models, meta }));
|
|
229
|
+
generated.write(`/${meta.view.moduleLocation.path}.ts`, (0, businesslogic_view_module_generator_1.generateBusinessLogicViewModule)({ models, meta }));
|
|
230
|
+
generated.write(`/${meta.view.serviceLocation.path}.ts`, (0, businesslogic_view_service_generator_1.generateBusinessLogicViewService)({ models, meta }));
|
|
231
|
+
generated.write(`/${meta.update.cloneContextFilePath}.ts`, (0, businesslogic_update_clonecontext_generator_1.generateBusinessLogicCloneContext)({ models, meta }));
|
|
232
|
+
generated.write(`/${meta.update.moduleLocation.path}.ts`, (0, businesslogic_update_module_generator_1.generateBusinessLogicUpdateModule)({ models, meta }));
|
|
233
|
+
generated.write(`/${meta.update.serviceLocation.path}.ts`, (0, businesslogic_update_service_generator_1.generateBusinessLogicUpdateService)({ models, meta }));
|
|
234
|
+
generated.write(`/${meta.update.actionTypesFilePath}.ts`, (0, businesslogic_actiontypes_generator_1.generateBusinessLogicActionTypes)({ models, meta }));
|
|
242
235
|
// Seed
|
|
243
|
-
generated.write(`/${meta.seedData.
|
|
236
|
+
generated.write(`/${meta.seedData.initialMigrationLocation.path}.ts`, (0, seed_migration_generator_1.generateSeedMigration)({ models, meta }));
|
|
244
237
|
generated.write(`/${meta.seedData.templateExcelFilePath}`, yield (0, seed_template_generator_1.generateSeedExcelTemplate)({ models }));
|
|
245
238
|
// Routes
|
|
246
239
|
generated.write(`/${meta.trpc.routesFilePath}.ts`, (0, routes_index_generator_1.generateRoutesIndex)({ models, meta }));
|
|
@@ -8,8 +8,8 @@ const file_1 = require("../../lib/utils/file");
|
|
|
8
8
|
* Generates the action types for the BusinessLogicModule.
|
|
9
9
|
*/
|
|
10
10
|
function generateBusinessLogicActionTypes({ models, meta }) {
|
|
11
|
-
const imports = imports_1.ImportsGenerator.from(meta.
|
|
12
|
-
from: meta.actions.importPath,
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(meta.update.actionTypesFilePath).addImport({
|
|
12
|
+
from: meta.actions.definition.importPath,
|
|
13
13
|
items: [meta.actions.definition.payload, meta.actions.definition.resultDict],
|
|
14
14
|
});
|
|
15
15
|
const updateServiceImports = [];
|
|
@@ -18,12 +18,12 @@ function generateBusinessLogicActionTypes({ models, meta }) {
|
|
|
18
18
|
const actionResultTypeElements = [];
|
|
19
19
|
for (const model of models) {
|
|
20
20
|
const modelMeta = (0, meta_1.getModelMetadata)({ model });
|
|
21
|
-
const className = modelMeta.
|
|
22
|
-
const scope = modelMeta.
|
|
21
|
+
const className = modelMeta.update.serviceClassName;
|
|
22
|
+
const scope = modelMeta.update.actionModelDiscriminantName;
|
|
23
23
|
modelNameTypeElements.push(`'${scope}'`);
|
|
24
24
|
const relativeImportPath = (0, file_1.getRelativePath)({
|
|
25
|
-
from: meta.
|
|
26
|
-
to: modelMeta.
|
|
25
|
+
from: meta.update.actionTypesFilePath,
|
|
26
|
+
to: modelMeta.update.serviceClassLocation.path,
|
|
27
27
|
});
|
|
28
28
|
updateServiceImports.push(`import type * as ${className} from '${relativeImportPath}'`);
|
|
29
29
|
actionsTypeElements.push(`${meta.actions.definition.payload}<${className}.Scope, ${className}.Actions>`);
|
|
@@ -7,7 +7,7 @@ const meta_1 = require("../../lib/meta");
|
|
|
7
7
|
* Generates the clone context for the business logic update service.
|
|
8
8
|
*/
|
|
9
9
|
function generateBusinessLogicCloneContext({ models, meta: schemaMeta, }) {
|
|
10
|
-
const imports = imports_1.ImportsGenerator.from(schemaMeta.
|
|
10
|
+
const imports = imports_1.ImportsGenerator.from(schemaMeta.update.cloneContextFilePath);
|
|
11
11
|
const typeDefinitions = [];
|
|
12
12
|
const mapAssignments = [];
|
|
13
13
|
for (const model of models) {
|
|
@@ -15,8 +15,8 @@ function generateBusinessLogicCloneContext({ models, meta: schemaMeta, }) {
|
|
|
15
15
|
imports.addImports({
|
|
16
16
|
[schemaMeta.types.importPath]: [modelMeta.types.brandedIdType, modelMeta.types.typeName],
|
|
17
17
|
});
|
|
18
|
-
typeDefinitions.push(`${modelMeta.
|
|
19
|
-
mapAssignments.push(`${modelMeta.
|
|
18
|
+
typeDefinitions.push(`${modelMeta.update.cloneContextMap}: Map<${modelMeta.types.brandedIdType}, ${modelMeta.types.typeName}>`);
|
|
19
|
+
mapAssignments.push(`${modelMeta.update.cloneContextMap}: new Map()`);
|
|
20
20
|
}
|
|
21
21
|
return /* ts */ `
|
|
22
22
|
${imports.generate()}
|
|
@@ -9,20 +9,20 @@ const meta_1 = require("../../lib/meta");
|
|
|
9
9
|
function generateBusinessLogicUpdateModule({ models, meta }) {
|
|
10
10
|
const mm = models
|
|
11
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
-
.sort((a, b) => a.meta.
|
|
13
|
-
const imports = imports_1.ImportsGenerator.from(meta.
|
|
14
|
-
[meta.
|
|
15
|
-
[meta.
|
|
12
|
+
.sort((a, b) => a.meta.update.serviceClassName.localeCompare(b.meta.update.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.update.moduleLocation.path).addImports({
|
|
14
|
+
[meta.update.serviceLocation.path]: meta.update.serviceClassName,
|
|
15
|
+
[meta.view.moduleLocation.import]: meta.view.moduleName,
|
|
16
16
|
});
|
|
17
|
-
const providers = [meta.
|
|
17
|
+
const providers = [meta.update.serviceClassName];
|
|
18
18
|
for (const { meta } of mm) {
|
|
19
19
|
imports.addImport({
|
|
20
|
-
items: [meta.
|
|
21
|
-
from: meta.
|
|
20
|
+
items: [meta.update.serviceClassName],
|
|
21
|
+
from: meta.update.serviceClassLocation.path,
|
|
22
22
|
});
|
|
23
|
-
providers.push(meta.
|
|
23
|
+
providers.push(meta.update.serviceClassName);
|
|
24
24
|
}
|
|
25
|
-
const moduleName = meta.
|
|
25
|
+
const moduleName = meta.update.moduleName;
|
|
26
26
|
return /* ts */ `
|
|
27
27
|
import { Module } from '@nestjs/common'
|
|
28
28
|
|
|
@@ -9,16 +9,16 @@ const meta_1 = require("../../lib/meta");
|
|
|
9
9
|
function generateBusinessLogicUpdateService({ models, meta, }) {
|
|
10
10
|
const mm = models
|
|
11
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
-
.sort((a, b) => a.meta.
|
|
13
|
-
const imports = imports_1.ImportsGenerator.from(meta.
|
|
12
|
+
.sort((a, b) => a.meta.update.serviceClassName.localeCompare(b.meta.update.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.update.serviceLocation.path);
|
|
14
14
|
for (const { meta } of mm) {
|
|
15
15
|
imports.addImport({
|
|
16
|
-
items: [meta.
|
|
17
|
-
from: meta.
|
|
16
|
+
items: [meta.update.serviceClassName],
|
|
17
|
+
from: meta.update.serviceClassLocation.path,
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
const constructor = mm
|
|
21
|
-
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.
|
|
21
|
+
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.update.serviceClassName})) public readonly ${meta.update.serviceVariableName} :${meta.update.serviceClassName}`)
|
|
22
22
|
.join(',\n');
|
|
23
23
|
return /* ts */ `
|
|
24
24
|
import { Inject, Injectable, forwardRef } from '@nestjs/common'
|
|
@@ -26,7 +26,7 @@ function generateBusinessLogicUpdateService({ models, meta, }) {
|
|
|
26
26
|
${imports.generate()}
|
|
27
27
|
|
|
28
28
|
@Injectable()
|
|
29
|
-
export class ${meta.
|
|
29
|
+
export class ${meta.update.serviceClassName} {
|
|
30
30
|
constructor(${constructor}) {}
|
|
31
31
|
}
|
|
32
32
|
`;
|
|
@@ -9,19 +9,19 @@ const meta_1 = require("../../lib/meta");
|
|
|
9
9
|
function generateBusinessLogicViewModule({ models, meta }) {
|
|
10
10
|
const mm = models
|
|
11
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
-
.sort((a, b) => a.meta.
|
|
13
|
-
const imports = imports_1.ImportsGenerator.from(meta.
|
|
14
|
-
[meta.
|
|
12
|
+
.sort((a, b) => a.meta.view.serviceClassName.localeCompare(b.meta.view.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.view.moduleLocation.path).addImports({
|
|
14
|
+
[meta.view.serviceLocation.path]: meta.view.serviceClassName,
|
|
15
15
|
});
|
|
16
|
-
const providers = [meta.
|
|
16
|
+
const providers = [meta.view.serviceClassName];
|
|
17
17
|
for (const { meta } of mm) {
|
|
18
18
|
imports.addImport({
|
|
19
|
-
items: [meta.
|
|
20
|
-
from: meta.
|
|
19
|
+
items: [meta.view.serviceClassName],
|
|
20
|
+
from: meta.view.serviceLocation.path,
|
|
21
21
|
});
|
|
22
|
-
providers.push(meta.
|
|
22
|
+
providers.push(meta.view.serviceClassName);
|
|
23
23
|
}
|
|
24
|
-
const moduleName = meta.
|
|
24
|
+
const moduleName = meta.view.moduleName;
|
|
25
25
|
return /* ts */ `
|
|
26
26
|
import { Module } from '@nestjs/common'
|
|
27
27
|
|
|
@@ -9,16 +9,16 @@ const meta_1 = require("../../lib/meta");
|
|
|
9
9
|
function generateBusinessLogicViewService({ models, meta }) {
|
|
10
10
|
const mm = models
|
|
11
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
-
.sort((a, b) => a.meta.
|
|
13
|
-
const imports = imports_1.ImportsGenerator.from(meta.
|
|
12
|
+
.sort((a, b) => a.meta.view.serviceClassName.localeCompare(b.meta.view.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.view.serviceLocation.path);
|
|
14
14
|
for (const { meta } of mm) {
|
|
15
15
|
imports.addImport({
|
|
16
|
-
items: [meta.
|
|
17
|
-
from: meta.
|
|
16
|
+
items: [meta.view.serviceClassName],
|
|
17
|
+
from: meta.view.serviceLocation.path,
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
const constructor = mm
|
|
21
|
-
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.
|
|
21
|
+
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.view.serviceClassName})) public readonly ${meta.view.serviceVariableName} :${meta.view.serviceClassName}`)
|
|
22
22
|
.join(',\n');
|
|
23
23
|
return /* ts */ `
|
|
24
24
|
import { Inject, Injectable, forwardRef } from '@nestjs/common'
|
|
@@ -26,7 +26,7 @@ import { Inject, Injectable, forwardRef } from '@nestjs/common'
|
|
|
26
26
|
${imports.generate()}
|
|
27
27
|
|
|
28
28
|
@Injectable()
|
|
29
|
-
export class ${meta.
|
|
29
|
+
export class ${meta.view.serviceClassName} {
|
|
30
30
|
constructor(${constructor}) {}
|
|
31
31
|
}
|
|
32
32
|
`;
|
|
@@ -8,7 +8,7 @@ const meta_1 = require("../../lib/meta");
|
|
|
8
8
|
*/
|
|
9
9
|
function generateDataTypes({ models, meta }) {
|
|
10
10
|
const { types } = meta.data;
|
|
11
|
-
const imports = imports_1.ImportsGenerator.from(types.
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(types.location.path);
|
|
12
12
|
const dto = meta.types.dto;
|
|
13
13
|
imports.addTypeImport({
|
|
14
14
|
from: meta.types.importPath,
|
|
@@ -1,47 +1,24 @@
|
|
|
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.generateDataMockModule = void 0;
|
|
27
4
|
const imports_1 = require("../../lib/imports");
|
|
28
5
|
const meta_1 = require("../../lib/meta");
|
|
29
|
-
const Types = __importStar(require("../../lib/schema/types"));
|
|
30
6
|
/**
|
|
31
7
|
* Generates a mocking class
|
|
32
8
|
*/
|
|
33
9
|
function generateDataMockModule({ models, meta }) {
|
|
34
10
|
const mm = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
35
|
-
const imports = imports_1.ImportsGenerator.from(meta.data.
|
|
36
|
-
[meta.data.
|
|
37
|
-
[meta.data.dataService.
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(meta.data.mockModule.location.path).addImports({
|
|
12
|
+
[meta.data.moduleLocation.path]: [meta.data.moduleName],
|
|
13
|
+
[meta.data.dataService.location.path]: [meta.data.dataService.class],
|
|
14
|
+
[meta.backendModules.db.moduleLocation.import]: [meta.backendModules.db.moduleName],
|
|
38
15
|
// we need to import the file directly instead via the normal index file as this would cause a circular dependency else
|
|
39
|
-
[meta.actions.
|
|
16
|
+
[meta.actions.execution.mockLocation.import]: [meta.actions.execution.mock],
|
|
40
17
|
});
|
|
41
18
|
for (const { model, meta } of mm) {
|
|
42
19
|
imports.addTypeImport({ items: [model.typeName], from: meta.types.importPath });
|
|
43
|
-
imports.addImport({ items: [meta.data.repository.className], from: meta.data.repository.
|
|
44
|
-
imports.addImport({ items: [meta.data.mockRepository.className], from: meta.data.mockRepository.
|
|
20
|
+
imports.addImport({ items: [meta.data.repository.className], from: meta.data.repository.location.path });
|
|
21
|
+
imports.addImport({ items: [meta.data.mockRepository.className], from: meta.data.mockRepository.location.path });
|
|
45
22
|
}
|
|
46
23
|
const providers = mm
|
|
47
24
|
.map(({ meta }) => `{
|
|
@@ -57,11 +34,10 @@ function generateDataMockModule({ models, meta }) {
|
|
|
57
34
|
.join(', ');
|
|
58
35
|
return /* ts */ `
|
|
59
36
|
import { DynamicModule } from '@nestjs/common'
|
|
60
|
-
import { DatabaseModule } from '@backend/db'
|
|
61
37
|
|
|
62
38
|
${imports.generate()}
|
|
63
39
|
|
|
64
|
-
export class ${meta.data.
|
|
40
|
+
export class ${meta.data.mockModule.name} {
|
|
65
41
|
static mock(seed?: MockData): DynamicModule {
|
|
66
42
|
const execution = new MockActionExecution()
|
|
67
43
|
|
|
@@ -10,11 +10,11 @@ const types_1 = require("../../lib/schema/types");
|
|
|
10
10
|
*/
|
|
11
11
|
function generateDataMocker({ models, meta: schemaMeta }) {
|
|
12
12
|
const modelMetas = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
13
|
-
const imports = imports_1.ImportsGenerator.from(schemaMeta.e2e.
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(schemaMeta.e2e.dataMockerLocation.path);
|
|
14
14
|
for (const { model, meta } of modelMetas) {
|
|
15
15
|
imports.addImports({
|
|
16
16
|
[meta.types.importPath]: [(0, types_1.toAnnotatedTypeName)(model.typeName)],
|
|
17
|
-
[
|
|
17
|
+
[meta.e2e.stubLocation.path]: [meta.e2e.stubGenerationFnName],
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
const publicVariables = modelMetas
|
|
@@ -26,7 +26,7 @@ function generateDataMocker({ models, meta: schemaMeta }) {
|
|
|
26
26
|
const addDataFunctions = modelMetas.map(({ model, meta }) => generateAddDataFunction(model, meta)).join('\n');
|
|
27
27
|
return `
|
|
28
28
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
29
|
-
import type { MockData } from '@backend/data'
|
|
29
|
+
import type { MockData } from '@backend/data/data.mock.module'
|
|
30
30
|
|
|
31
31
|
${imports.generate()}
|
|
32
32
|
|
|
@@ -8,19 +8,20 @@ const meta_1 = require("../../lib/meta");
|
|
|
8
8
|
*/
|
|
9
9
|
function generateDataModule({ models, meta }) {
|
|
10
10
|
const mm = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
11
|
-
const imports = imports_1.ImportsGenerator.from(meta.data.
|
|
12
|
-
[meta.data.dataService.
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(meta.data.moduleLocation.path).addImports({
|
|
12
|
+
[meta.data.dataService.location.path]: [meta.data.dataService.class],
|
|
13
|
+
[meta.backendModules.db.databaseService.location.import]: [meta.backendModules.db.databaseService.name],
|
|
14
|
+
[meta.backendModules.db.moduleLocation.import]: [meta.backendModules.db.moduleName],
|
|
13
15
|
});
|
|
14
16
|
for (const { meta } of mm) {
|
|
15
17
|
imports.addImport({
|
|
16
18
|
items: [meta.data.repository.className],
|
|
17
|
-
from: meta.data.repository.
|
|
19
|
+
from: meta.data.repository.location.path,
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
const moduleName = meta.data.moduleName;
|
|
21
23
|
return /* ts */ `
|
|
22
24
|
import { DynamicModule, FactoryProvider } from '@nestjs/common'
|
|
23
|
-
import { DatabaseModule, DatabaseService } from '@backend/db'
|
|
24
25
|
|
|
25
26
|
${imports.generate()}
|
|
26
27
|
|
|
@@ -9,11 +9,11 @@ const types_1 = require("../../lib/schema/types");
|
|
|
9
9
|
*/
|
|
10
10
|
function generateDataService({ models, meta }) {
|
|
11
11
|
const mm = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
12
|
-
const imports = imports_1.ImportsGenerator.from(meta.data.dataService.
|
|
12
|
+
const imports = imports_1.ImportsGenerator.from(meta.data.dataService.location.path);
|
|
13
13
|
for (const { meta } of mm) {
|
|
14
14
|
imports.addImport({
|
|
15
15
|
items: [meta.data.repository.className],
|
|
16
|
-
from: meta.data.repository.
|
|
16
|
+
from: meta.data.repository.location.path,
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
const constructor = mm
|
|
@@ -28,8 +28,8 @@ function generateDataService({ models, meta }) {
|
|
|
28
28
|
imports.addImports({
|
|
29
29
|
[meta.types.importPath]: [(0, types_1.toAnnotatedTypeName)(meta.types.dto.create), (0, types_1.toAnnotatedTypeName)(meta.types.dto.update)],
|
|
30
30
|
[meta.data.repository.typeFilePath]: [(0, types_1.toAnnotatedTypeName)(meta.data.repository.typeName)],
|
|
31
|
-
[meta.data.types.
|
|
32
|
-
[meta.actions.
|
|
31
|
+
[meta.data.types.location.import]: [(0, types_1.toAnnotatedTypeName)(meta.data.types.bulkMutation)],
|
|
32
|
+
[meta.actions.execution.interfaceLocation.import]: [meta.actions.execution.interface],
|
|
33
33
|
});
|
|
34
34
|
const creates = [];
|
|
35
35
|
const updates = [];
|
|
@@ -8,11 +8,13 @@ const types_1 = require("../../lib/schema/types");
|
|
|
8
8
|
* Generates the action dispatcher service.
|
|
9
9
|
*/
|
|
10
10
|
function generateActionsDispatcherService({ models, meta }) {
|
|
11
|
-
const imports = imports_1.ImportsGenerator.from(meta.actions.dispatcher.
|
|
12
|
-
[meta.seed.
|
|
13
|
-
[meta.importExport.
|
|
14
|
-
[meta.
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(meta.actions.dispatcher.classLocation.path).addImports({
|
|
12
|
+
[meta.seed.serviceLocation.import]: [meta.seed.serviceClassName],
|
|
13
|
+
[meta.importExport.importService.location.import]: [meta.importExport.importService.name],
|
|
14
|
+
[meta.update.serviceLocation.import]: [meta.update.serviceClassName],
|
|
15
15
|
[meta.types.importPath]: (0, types_1.toAnnotatedTypeName)(meta.config.userType),
|
|
16
|
+
[meta.backendModules.db.databaseService.location.import]: [meta.backendModules.db.databaseService.name],
|
|
17
|
+
[meta.actions.execution.interfaceLocation.path]: [meta.actions.execution.interface],
|
|
16
18
|
});
|
|
17
19
|
const dataLoader = [];
|
|
18
20
|
for (const model of models) {
|
|
@@ -23,11 +25,10 @@ function generateActionsDispatcherService({ models, meta }) {
|
|
|
23
25
|
import { Injectable } from '@nestjs/common'
|
|
24
26
|
|
|
25
27
|
import { ExhaustiveSwitchCheck } from '@backend/common'
|
|
26
|
-
import { DatabaseService } from '@backend/db'
|
|
27
28
|
|
|
28
29
|
${imports.generate()}
|
|
29
30
|
|
|
30
|
-
import { ActionExecutionFactory
|
|
31
|
+
import { ActionExecutionFactory } from './execution/action'
|
|
31
32
|
import { Action, ResultOfAction } from './actions.types'
|
|
32
33
|
|
|
33
34
|
|
|
@@ -42,7 +43,7 @@ export class ${meta.actions.dispatcher.class} {
|
|
|
42
43
|
public ${meta.importExport.importService.sharedName}: ImportService = {} as unknown as any
|
|
43
44
|
|
|
44
45
|
constructor(
|
|
45
|
-
private readonly updateService: ${meta.
|
|
46
|
+
private readonly updateService: ${meta.update.serviceClassName},
|
|
46
47
|
private readonly databaseService: DatabaseService,
|
|
47
48
|
private readonly actionExecutionFactory: ActionExecutionFactory,
|
|
48
49
|
) {}
|
|
@@ -77,14 +78,14 @@ export class ${meta.actions.dispatcher.class} {
|
|
|
77
78
|
.map((model) => {
|
|
78
79
|
const modelMeta = (0, meta_1.getModelMetadata)({ model });
|
|
79
80
|
return `
|
|
80
|
-
case '${modelMeta.
|
|
81
|
-
const method = this.updateService.${modelMeta.
|
|
81
|
+
case '${modelMeta.update.scopeName}': {
|
|
82
|
+
const method = this.updateService.${modelMeta.update.serviceVariableName}[action.type] as (params: {
|
|
82
83
|
data: A['payload']
|
|
83
84
|
execution: IActionExecution
|
|
84
85
|
}) => Promise<ResultOfAction<A>>
|
|
85
86
|
|
|
86
87
|
// NOTE: We need to bind the method to the service instance, as it is a method of the service and not a standalone function.
|
|
87
|
-
return method.bind(this.updateService.${modelMeta.
|
|
88
|
+
return method.bind(this.updateService.${modelMeta.update.serviceVariableName})({ data: action.payload, execution })
|
|
88
89
|
}
|
|
89
90
|
`;
|
|
90
91
|
})
|
|
@@ -13,18 +13,18 @@ function generateImportExportConvertImportFunctions({ models, meta, }) {
|
|
|
13
13
|
const { importedDataToBulkMutations, deltaToBulkMutations } = meta.importExport.converterFunctions;
|
|
14
14
|
const { types } = meta.importExport;
|
|
15
15
|
const { delta } = types;
|
|
16
|
-
const imports = imports_1.ImportsGenerator.from(meta.importExport.converterFunctions.
|
|
16
|
+
const imports = imports_1.ImportsGenerator.from(meta.importExport.converterFunctions.location.path);
|
|
17
17
|
imports.addImports({
|
|
18
|
-
[meta.importExport.decoder.
|
|
18
|
+
[meta.importExport.decoder.location.path]: [
|
|
19
19
|
(0, types_1.toAnnotatedTypeName)(meta.importExport.decoder.decodedPXLModelDataTypeName),
|
|
20
20
|
],
|
|
21
|
-
[meta.data.
|
|
22
|
-
(0, types_1.toAnnotatedTypeName)(meta.data.dataMockDataType),
|
|
21
|
+
[meta.data.types.location.import]: [
|
|
23
22
|
(0, types_1.toAnnotatedTypeName)(meta.data.types.bulkMutation),
|
|
24
23
|
(0, types_1.toAnnotatedTypeName)(meta.data.types.bulkMutationForModel),
|
|
25
24
|
],
|
|
25
|
+
[meta.data.mockModule.location.import]: [(0, types_1.toAnnotatedTypeName)(meta.data.dataMockDataType)],
|
|
26
26
|
[meta.types.importPath]: [(0, types_1.toAnnotatedTypeName)(dto.genericModel), (0, types_1.toAnnotatedTypeName)(dto.idType)],
|
|
27
|
-
[types.
|
|
27
|
+
[types.location.path]: [(0, types_1.toAnnotatedTypeName)(types.delta), (0, types_1.toAnnotatedTypeName)(types.delta_Model.type)],
|
|
28
28
|
});
|
|
29
29
|
const importConverterBlocks = [];
|
|
30
30
|
const deltaConverterBlocks = [];
|
|
@@ -379,11 +379,11 @@ function generateDeltaBlock({ fieldsGrouped, modelMeta, schemaMeta, imports, })
|
|
|
379
379
|
items: [modelMeta.types.typeName, modelMeta.types.brandedIdType],
|
|
380
380
|
});
|
|
381
381
|
imports.addTypeImport({
|
|
382
|
-
from: schemaMeta.importExport.types.
|
|
382
|
+
from: schemaMeta.importExport.types.location.path,
|
|
383
383
|
items: [type, create.type, update.type],
|
|
384
384
|
});
|
|
385
385
|
imports.addImport({
|
|
386
|
-
from: schemaMeta.importExport.types.
|
|
386
|
+
from: schemaMeta.importExport.types.location.path,
|
|
387
387
|
items: [create.typeGuard, update.typeGuard],
|
|
388
388
|
});
|
|
389
389
|
return /* ts */ `
|
|
@@ -8,10 +8,10 @@ const types_1 = require("../../lib/schema/types");
|
|
|
8
8
|
* Generates the Exporter class for the Import-Export module
|
|
9
9
|
*/
|
|
10
10
|
function generateImportExportExporterClass({ models, meta }) {
|
|
11
|
-
const imports = imports_1.ImportsGenerator.from(meta.importExport.exporterClass.
|
|
11
|
+
const imports = imports_1.ImportsGenerator.from(meta.importExport.exporterClass.location.path);
|
|
12
12
|
imports.addImports({
|
|
13
|
-
[meta.
|
|
14
|
-
[meta.importExport.decoder.
|
|
13
|
+
[meta.view.serviceLocation.import]: [meta.view.serviceClassName],
|
|
14
|
+
[meta.importExport.decoder.location.path]: [
|
|
15
15
|
meta.importExport.decoder.fullEncoderFunctionName,
|
|
16
16
|
(0, types_1.toAnnotatedTypeName)(meta.importExport.decoder.encodedExcelDataTypeName),
|
|
17
17
|
],
|
|
@@ -54,7 +54,7 @@ function generateImportExportExporterClass({ models, meta }) {
|
|
|
54
54
|
const linkedFieldMeta = (0, meta_1.getFieldMetadata)({ field: referencingField });
|
|
55
55
|
childItemCalls.push(`
|
|
56
56
|
// Add all ${linkedModelMeta.userFriendlyNamePlural} that are related to the ${modelMeta.userFriendlyName} via ${referencingField.name}
|
|
57
|
-
for (const ${referencingField.name} of await this.viewService.${linkedModelMeta.
|
|
57
|
+
for (const ${referencingField.name} of await this.viewService.${linkedModelMeta.view.serviceVariableName}.data.${linkedFieldMeta.getByForeignKeyIdsMethodFnName}(id)) {
|
|
58
58
|
await this.${linkedModelMeta.importExport.exportAddFunctionName}({id: ${referencingField.name}, includeChildren})
|
|
59
59
|
}
|
|
60
60
|
`);
|
|
@@ -74,7 +74,7 @@ function generateImportExportExporterClass({ models, meta }) {
|
|
|
74
74
|
if (this.${modelMeta.internalPluralName}.has(id)) {
|
|
75
75
|
return
|
|
76
76
|
}
|
|
77
|
-
const item = await this.viewService.${modelMeta.
|
|
77
|
+
const item = await this.viewService.${modelMeta.view.serviceVariableName}.get(id)
|
|
78
78
|
if (!item) {
|
|
79
79
|
this.logger.error(\`Cannot find ${modelMeta.userFriendlyName} \${id}\`)
|
|
80
80
|
return
|
|
@@ -86,7 +86,7 @@ function generateImportExportExporterClass({ models, meta }) {
|
|
|
86
86
|
${childItems}
|
|
87
87
|
}
|
|
88
88
|
`);
|
|
89
|
-
addAllCalls.push(`this.${modelMeta.internalPluralName} = await this.viewService.${modelMeta.
|
|
89
|
+
addAllCalls.push(`this.${modelMeta.internalPluralName} = await this.viewService.${modelMeta.view.serviceVariableName}.getAll()`);
|
|
90
90
|
}
|
|
91
91
|
return /* ts */ `
|
|
92
92
|
// For consistency, we include \`{ includeChildren = true }\` in the signature of every add function.
|