@postxl/generator 0.34.0 → 0.35.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 +40 -22
- package/dist/generators/indices/businesslogic-actiontypes.generator.d.ts +9 -0
- package/dist/generators/indices/businesslogic-actiontypes.generator.js +39 -0
- package/dist/generators/indices/businesslogic-update-index.generator.d.ts +9 -0
- package/dist/generators/indices/businesslogic-update-index.generator.js +20 -0
- package/dist/generators/indices/businesslogic-update-module.generator.d.ts +9 -0
- package/dist/generators/indices/businesslogic-update-module.generator.js +69 -0
- package/dist/generators/indices/businesslogic-update-service.generator.d.ts +9 -0
- package/dist/generators/indices/businesslogic-update-service.generator.js +34 -0
- package/dist/generators/indices/businesslogic-view-index.generator.d.ts +9 -0
- package/dist/generators/indices/businesslogic-view-index.generator.js +19 -0
- package/dist/generators/indices/{businesslogicindex.generator.d.ts → businesslogic-view-module.generator.d.ts} +2 -2
- package/dist/generators/indices/{businesslogicmodule.generator.js → businesslogic-view-module.generator.js} +22 -26
- package/dist/generators/indices/{businesslogicservice.generator.d.ts → businesslogic-view-service.generator.d.ts} +1 -1
- package/dist/generators/indices/{businesslogicservice.generator.js → businesslogic-view-service.generator.js} +9 -10
- package/dist/generators/indices/{datamockmodule.generator.js → datamock-module.generator.js} +8 -16
- package/dist/generators/indices/datamocker.generator.js +3 -7
- package/dist/generators/indices/datamodule.generator.js +7 -13
- package/dist/generators/indices/{businesslogicmodule.generator.d.ts → dispatcher-service.generator.d.ts} +2 -2
- package/dist/generators/indices/dispatcher-service.generator.js +81 -0
- package/dist/generators/indices/seed-migration.generator.d.ts +9 -0
- package/dist/generators/indices/seed-migration.generator.js +35 -0
- package/dist/generators/indices/seed-service.generator.d.ts +1 -1
- package/dist/generators/indices/seed-service.generator.js +327 -123
- package/dist/generators/indices/seed-template-decoder.generator.js +22 -6
- package/dist/generators/indices/{seed.generator.d.ts → seeddata-type.generator.d.ts} +2 -2
- package/dist/generators/indices/seeddata-type.generator.js +42 -0
- package/dist/generators/indices/types.generator.d.ts +1 -1
- package/dist/generators/indices/types.generator.js +8 -6
- package/dist/generators/models/businesslogic-update.generator.d.ts +10 -0
- package/dist/generators/models/businesslogic-update.generator.js +243 -0
- package/dist/generators/models/businesslogic-view.generator.d.ts +10 -0
- package/dist/generators/models/{businesslogic.generator.js → businesslogic-view.generator.js} +23 -72
- package/dist/generators/models/react.generator/modals.generator.js +2 -2
- package/dist/generators/models/repository.generator.d.ts +9 -0
- package/dist/generators/models/repository.generator.js +420 -131
- package/dist/generators/models/route.generator.js +45 -55
- package/dist/generators/models/seed.generator.js +6 -2
- package/dist/generators/models/types.generator.js +60 -13
- package/dist/lib/attributes.d.ts +5 -0
- package/dist/lib/imports.d.ts +23 -2
- package/dist/lib/imports.js +19 -1
- package/dist/lib/meta.d.ts +287 -34
- package/dist/lib/meta.js +87 -16
- package/dist/lib/schema/schema.d.ts +24 -6
- package/dist/lib/schema/types.d.ts +4 -0
- package/dist/lib/utils/jsdoc.d.ts +1 -1
- package/dist/lib/utils/jsdoc.js +8 -6
- package/dist/lib/utils/string.js +2 -1
- package/dist/prisma/attributes.js +7 -3
- package/dist/prisma/parse.js +25 -5
- package/package.json +1 -1
- package/dist/generators/indices/businesslogicindex.generator.js +0 -19
- package/dist/generators/indices/seed.generator.js +0 -17
- package/dist/generators/indices/testdataservice.generator.d.ts +0 -9
- package/dist/generators/indices/testdataservice.generator.js +0 -78
- package/dist/generators/models/businesslogic.generator.d.ts +0 -9
- /package/dist/generators/indices/{datamockmodule.generator.d.ts → datamock-module.generator.d.ts} +0 -0
package/dist/generator.js
CHANGED
|
@@ -34,7 +34,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
34
34
|
};
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.generate = void 0;
|
|
37
|
-
const faker_1 = require("@faker-js/faker");
|
|
38
37
|
const lock_1 = require("@postxl/lock");
|
|
39
38
|
const generator_helper_1 = require("@prisma/generator-helper");
|
|
40
39
|
const internals_1 = require("@prisma/internals");
|
|
@@ -42,19 +41,17 @@ const prettier = __importStar(require("prettier"));
|
|
|
42
41
|
const zod_1 = require("zod");
|
|
43
42
|
const react_generator_1 = require("./generators/enums/react.generator");
|
|
44
43
|
const types_generator_1 = require("./generators/enums/types.generator");
|
|
45
|
-
const
|
|
44
|
+
const datamock_module_generator_1 = require("./generators/indices/datamock-module.generator");
|
|
46
45
|
const datamodule_generator_1 = require("./generators/indices/datamodule.generator");
|
|
47
46
|
const dataservice_generator_1 = require("./generators/indices/dataservice.generator");
|
|
48
47
|
const emptydatabasemigration_generator_1 = require("./generators/indices/emptydatabasemigration.generator");
|
|
49
48
|
const repositories_generator_1 = require("./generators/indices/repositories.generator");
|
|
50
|
-
const seed_generator_1 = require("./generators/indices/seed.generator");
|
|
51
49
|
const stubs_generator_1 = require("./generators/indices/stubs.generator");
|
|
52
|
-
const testdataservice_generator_1 = require("./generators/indices/testdataservice.generator");
|
|
53
50
|
const types_generator_2 = require("./generators/indices/types.generator");
|
|
54
51
|
const react_generator_2 = require("./generators/models/react.generator");
|
|
55
52
|
const repository_generator_1 = require("./generators/models/repository.generator");
|
|
56
53
|
const route_generator_1 = require("./generators/models/route.generator");
|
|
57
|
-
const
|
|
54
|
+
const seed_generator_1 = require("./generators/models/seed.generator");
|
|
58
55
|
const stub_generator_1 = require("./generators/models/stub.generator");
|
|
59
56
|
const types_generator_3 = require("./generators/models/types.generator");
|
|
60
57
|
const meta_1 = require("./lib/meta");
|
|
@@ -62,21 +59,31 @@ const types_1 = require("./lib/schema/types");
|
|
|
62
59
|
const client_path_1 = require("./prisma/client-path");
|
|
63
60
|
const parse_1 = require("./prisma/parse");
|
|
64
61
|
const datamocker_generator_1 = require("./generators/indices/datamocker.generator");
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const businesslogic_generator_1 = require("./generators/models/businesslogic.generator");
|
|
62
|
+
const businesslogic_update_service_generator_1 = require("./generators/indices/businesslogic-update-service.generator");
|
|
63
|
+
const businesslogic_update_index_generator_1 = require("./generators/indices/businesslogic-update-index.generator");
|
|
64
|
+
const businesslogic_update_module_generator_1 = require("./generators/indices/businesslogic-update-module.generator");
|
|
69
65
|
const seed_template_decoder_generator_1 = require("./generators/indices/seed-template-decoder.generator");
|
|
70
66
|
const seed_template_generator_1 = require("./generators/indices/seed-template.generator");
|
|
71
67
|
const seed_service_generator_1 = require("./generators/indices/seed-service.generator");
|
|
68
|
+
const dispatcher_service_generator_1 = require("./generators/indices/dispatcher-service.generator");
|
|
69
|
+
const businesslogic_actiontypes_generator_1 = require("./generators/indices/businesslogic-actiontypes.generator");
|
|
70
|
+
const seeddata_type_generator_1 = require("./generators/indices/seeddata-type.generator");
|
|
71
|
+
const seed_migration_generator_1 = require("./generators/indices/seed-migration.generator");
|
|
72
|
+
const businesslogic_view_generator_1 = require("./generators/models/businesslogic-view.generator");
|
|
73
|
+
const businesslogic_update_generator_1 = require("./generators/models/businesslogic-update.generator");
|
|
74
|
+
const businesslogic_view_service_generator_1 = require("./generators/indices/businesslogic-view-service.generator");
|
|
75
|
+
const businesslogic_view_module_generator_1 = require("./generators/indices/businesslogic-view-module.generator");
|
|
76
|
+
const businesslogic_view_index_generator_1 = require("./generators/indices/businesslogic-view-index.generator");
|
|
72
77
|
const CONFIG_SCHEMA = zod_1.z
|
|
73
78
|
.object({
|
|
74
79
|
project: zod_1.z.string(),
|
|
75
80
|
pathToTypes: zod_1.z.string().optional(),
|
|
76
81
|
pathToDataLib: zod_1.z.string().optional(),
|
|
77
82
|
pathToCypress: zod_1.z.string().optional(),
|
|
83
|
+
pathToActions: zod_1.z.string().optional(),
|
|
78
84
|
pathToBusinessLogic: zod_1.z.string().optional(),
|
|
79
85
|
pathToSeedLib: zod_1.z.string().optional(),
|
|
86
|
+
pathToSeedData: zod_1.z.string().optional(),
|
|
80
87
|
trpcRoutesFolder: zod_1.z.string().optional(),
|
|
81
88
|
reactFolderOutput: zod_1.z.string().optional(),
|
|
82
89
|
migrationsFolder: zod_1.z.string().optional(),
|
|
@@ -95,10 +102,12 @@ const CONFIG_SCHEMA = zod_1.z
|
|
|
95
102
|
paths: {
|
|
96
103
|
dataLibPath: (0, types_1.toPath)(s.pathToDataLib || 'repos'),
|
|
97
104
|
cypressPath: (0, types_1.toPath)(s.pathToCypress || './e2e/cypress/'),
|
|
98
|
-
|
|
105
|
+
actionsPath: (0, types_1.toPath)(s.pathToActions || 'actions'),
|
|
106
|
+
businessLogicPath: (0, types_1.toPath)(s.pathToBusinessLogic || 'business-logic'),
|
|
99
107
|
reactFolderPath: (0, types_1.toPath)(s.reactFolderOutput || 'react'),
|
|
100
108
|
modelTypeDefinitionsPath: (0, types_1.toPath)(s.pathToTypes || 'types'),
|
|
101
|
-
|
|
109
|
+
seedLibPath: (0, types_1.toPath)(s.pathToSeedLib || 'seed'),
|
|
110
|
+
seedDataPath: (0, types_1.toPath)(s.pathToSeedData || 'seed-data'),
|
|
102
111
|
trpcRoutesFolderPath: (0, types_1.toPath)(s.trpcRoutesFolder || 'trpc'),
|
|
103
112
|
migrationsFolderPath: (0, types_1.toPath)(s.migrationsFolder || 'migrations'),
|
|
104
113
|
},
|
|
@@ -107,11 +116,13 @@ const CONFIG_SCHEMA = zod_1.z
|
|
|
107
116
|
disableGenerators: {
|
|
108
117
|
types: s.pathToTypes === undefined,
|
|
109
118
|
data: s.pathToDataLib === undefined,
|
|
119
|
+
actions: s.pathToActions === undefined,
|
|
110
120
|
businessLogic: s.pathToBusinessLogic === undefined,
|
|
111
121
|
seed: s.pathToSeedLib === undefined,
|
|
112
122
|
trpc: s.trpcRoutesFolder === undefined,
|
|
113
123
|
react: s.reactFolderOutput === undefined,
|
|
114
124
|
},
|
|
125
|
+
userType: (0, types_1.toTypeName)(`User`),
|
|
115
126
|
};
|
|
116
127
|
});
|
|
117
128
|
(0, generator_helper_1.generatorHandler)({
|
|
@@ -147,7 +158,6 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
147
158
|
if (root == undefined) {
|
|
148
159
|
throw new Error(`Could not find lock file. Make sure you are running the generator in a project folder.`);
|
|
149
160
|
}
|
|
150
|
-
faker_1.faker.seed(config.randomSeed);
|
|
151
161
|
const vfs = yield lock_1.VirtualFS.fromLockFile(root);
|
|
152
162
|
const generated = new lock_1.VirtualFS();
|
|
153
163
|
// Generate Models
|
|
@@ -159,7 +169,7 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
159
169
|
}
|
|
160
170
|
// Seed
|
|
161
171
|
if (!config.disableGenerators.seed) {
|
|
162
|
-
generated.write(`/${meta.seed.filePath}.ts`, (0,
|
|
172
|
+
generated.write(`/${meta.seed.filePath}.ts`, (0, seed_generator_1.generateSeedModel)({ model, itemCount: 5, meta }));
|
|
163
173
|
}
|
|
164
174
|
// Generate Repositories
|
|
165
175
|
if (!config.disableGenerators.data) {
|
|
@@ -170,7 +180,8 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
170
180
|
}
|
|
171
181
|
// Business Logic
|
|
172
182
|
if (!config.disableGenerators.businessLogic) {
|
|
173
|
-
generated.write(`/${meta.businessLogic.serviceFilePath}.ts`, (0,
|
|
183
|
+
generated.write(`/${meta.businessLogic.view.serviceFilePath}.ts`, (0, businesslogic_view_generator_1.generateModelBusinessLogicView)({ model, meta }));
|
|
184
|
+
generated.write(`/${meta.businessLogic.update.serviceFilePath}.ts`, (0, businesslogic_update_generator_1.generateModelBusinessLogicUpdate)({ model, meta }));
|
|
174
185
|
}
|
|
175
186
|
// Routes
|
|
176
187
|
if (!config.disableGenerators.trpc) {
|
|
@@ -195,12 +206,11 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
195
206
|
// Generate Index Files and Services
|
|
196
207
|
const meta = (0, meta_1.getSchemaMetadata)({ config });
|
|
197
208
|
if (!config.disableGenerators.data) {
|
|
198
|
-
generated.write(`/${meta.data.dataMockModuleFilePath}.ts`, (0,
|
|
209
|
+
generated.write(`/${meta.data.dataMockModuleFilePath}.ts`, (0, datamock_module_generator_1.generateDataMockModule)({ models, meta }));
|
|
199
210
|
generated.write(`/${meta.data.dataModuleFilePath}.ts`, (0, datamodule_generator_1.generateDataModule)({ models, meta }));
|
|
200
211
|
generated.write(`/${meta.data.dataServiceFilePath}.ts`, (0, dataservice_generator_1.generateDataService)({ models, meta }));
|
|
201
212
|
generated.write(`/${meta.data.dataMockerFilePath}.ts`, (0, datamocker_generator_1.generateDataMocker)({ models, meta }));
|
|
202
213
|
generated.write(`/${meta.data.dataMockerStubIndexFilePath}.ts`, (0, stubs_generator_1.generateDataMockerStubsIndex)({ models, meta }));
|
|
203
|
-
generated.write(`/${meta.data.testDataServiceFilePath}.ts`, (0, testdataservice_generator_1.generateTestDataService)({ models, meta }));
|
|
204
214
|
generated.write(`/${meta.data.repositoriesConstFilePath}.ts`, (0, repositories_generator_1.generateRepositoriesArray)({ models, meta }));
|
|
205
215
|
generated.write(`/${meta.data.repositoriesIndexFilePath}.ts`, (0, repositories_generator_1.generateRepositoriesIndex)({ models, meta }));
|
|
206
216
|
generated.write(`/${meta.data.stubIndexFilePath}.ts`, (0, stubs_generator_1.generateStubsIndex)({ models, meta }));
|
|
@@ -211,16 +221,24 @@ function generate({ models, enums, config, prismaClientPath, logger, }) {
|
|
|
211
221
|
generated.write((0, emptydatabasemigration_generator_1.deriveEmptyDatabaseMigrationFilePath)(meta), (0, emptydatabasemigration_generator_1.generateEmptyDatabaseStoredProcedure)({ models, meta }));
|
|
212
222
|
}
|
|
213
223
|
}
|
|
224
|
+
if (!config.disableGenerators.actions) {
|
|
225
|
+
generated.write(`/${meta.actions.dispatcherServiceFilePath}.ts`, (0, dispatcher_service_generator_1.generateActionsDispatcherService)({ models, meta }));
|
|
226
|
+
}
|
|
214
227
|
if (!config.disableGenerators.businessLogic) {
|
|
215
|
-
generated.write(`/${meta.businessLogic.indexFilePath}.ts`, (0,
|
|
216
|
-
generated.write(`/${meta.businessLogic.moduleFilePath}.ts`, (0,
|
|
217
|
-
generated.write(`/${meta.businessLogic.serviceFilePath}.ts`, (0,
|
|
228
|
+
generated.write(`/${meta.businessLogic.view.indexFilePath}.ts`, (0, businesslogic_view_index_generator_1.generateBusinessLogicViewIndex)({ models, meta }));
|
|
229
|
+
generated.write(`/${meta.businessLogic.view.moduleFilePath}.ts`, (0, businesslogic_view_module_generator_1.generateBusinessLogicViewModule)({ models, meta }));
|
|
230
|
+
generated.write(`/${meta.businessLogic.view.serviceFilePath}.ts`, (0, businesslogic_view_service_generator_1.generateBusinessLogicViewService)({ models, meta }));
|
|
231
|
+
generated.write(`/${meta.businessLogic.update.indexFilePath}.ts`, (0, businesslogic_update_index_generator_1.generateBusinessLogicUpdateIndex)({ models, meta }));
|
|
232
|
+
generated.write(`/${meta.businessLogic.update.moduleFilePath}.ts`, (0, businesslogic_update_module_generator_1.generateBusinessLogicUpdateModule)({ models, meta }));
|
|
233
|
+
generated.write(`/${meta.businessLogic.update.serviceFilePath}.ts`, (0, businesslogic_update_service_generator_1.generateBusinessLogicUpdateService)({ models, meta }));
|
|
234
|
+
generated.write(`/${meta.businessLogic.update.actionTypesFilePath}.ts`, (0, businesslogic_actiontypes_generator_1.generateBusinessLogicActionTypes)({ models, meta }));
|
|
218
235
|
}
|
|
219
236
|
if (!config.disableGenerators.seed) {
|
|
220
|
-
generated.write(`/${meta.seed.
|
|
237
|
+
generated.write(`/${meta.seed.seedDataTypeFilePath}.ts`, (0, seeddata_type_generator_1.generateSeedDataType)({ models, meta }));
|
|
221
238
|
generated.write(`/${meta.seed.serviceFilePath}.ts`, (0, seed_service_generator_1.generateSeedService)({ models, meta }));
|
|
222
|
-
generated.write(`/${meta.
|
|
223
|
-
generated.write(`/${meta.
|
|
239
|
+
generated.write(`/${meta.seedData.initialMigrationFilePath}.ts`, (0, seed_migration_generator_1.generateSeedMigration)({ models, meta }));
|
|
240
|
+
generated.write(`/${meta.seedData.templateExcelFilePath}`, yield (0, seed_template_generator_1.generateSeedExcelTemplate)({ models }));
|
|
241
|
+
generated.write(`/${meta.seedData.templateDecoderFilePath}.ts`, (0, seed_template_decoder_generator_1.generateSeedTemplateDecoder)({ models, meta }));
|
|
224
242
|
}
|
|
225
243
|
if (!config.disableGenerators.trpc) {
|
|
226
244
|
generated.write(`/${meta.trpc.routesFilePath}.ts`, (0, route_generator_1.generateRoutesIndex)({ models, meta }));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaMetaData } from '../../lib/meta';
|
|
2
|
+
import { Model } from '../../lib/schema/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Generates the action types for the BusinessLogicModule.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateBusinessLogicActionTypes({ models, meta }: {
|
|
7
|
+
models: Model[];
|
|
8
|
+
meta: SchemaMetaData;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBusinessLogicActionTypes = void 0;
|
|
4
|
+
const imports_1 = require("../../lib/imports");
|
|
5
|
+
const meta_1 = require("../../lib/meta");
|
|
6
|
+
/**
|
|
7
|
+
* Generates the action types for the BusinessLogicModule.
|
|
8
|
+
*/
|
|
9
|
+
function generateBusinessLogicActionTypes({ models, meta }) {
|
|
10
|
+
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.update.actionTypesFilePath);
|
|
11
|
+
const modelNameTypeElements = [];
|
|
12
|
+
const actionsTypeElements = [];
|
|
13
|
+
const actionResultTypeElements = [];
|
|
14
|
+
for (const model of models) {
|
|
15
|
+
const modelMeta = (0, meta_1.getModelMetadata)({ model });
|
|
16
|
+
imports.addImport({
|
|
17
|
+
items: [modelMeta.businessLogic.update.actionName, modelMeta.businessLogic.update.actionResultName],
|
|
18
|
+
from: modelMeta.businessLogic.update.serviceFilePath,
|
|
19
|
+
});
|
|
20
|
+
modelNameTypeElements.push(`'${modelMeta.businessLogic.update.actionModelDiscriminantName}'`);
|
|
21
|
+
actionsTypeElements.push(modelMeta.businessLogic.update.actionName);
|
|
22
|
+
actionResultTypeElements.push(`${modelMeta.businessLogic.update.actionModelDiscriminantName}: ${modelMeta.businessLogic.update.actionResultName}`);
|
|
23
|
+
}
|
|
24
|
+
return `
|
|
25
|
+
${imports.generate()}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Used by any of the default actions (create, update, delete) to identify the model.
|
|
29
|
+
*/
|
|
30
|
+
export type ModelName = ${modelNameTypeElements.join(' | ')}
|
|
31
|
+
|
|
32
|
+
export type Action_BusinessLogic = ${actionsTypeElements.join(' | ')}
|
|
33
|
+
|
|
34
|
+
export type ActionResult_BusinessLogic = {
|
|
35
|
+
${actionResultTypeElements.join('\n')}
|
|
36
|
+
}
|
|
37
|
+
`;
|
|
38
|
+
}
|
|
39
|
+
exports.generateBusinessLogicActionTypes = generateBusinessLogicActionTypes;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaMetaData } from '../../lib/meta';
|
|
2
|
+
import { Model } from '../../lib/schema/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Generates index file for all businessLogic update files.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateBusinessLogicUpdateIndex({ models, meta }: {
|
|
7
|
+
models: Model[];
|
|
8
|
+
meta: SchemaMetaData;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBusinessLogicUpdateIndex = void 0;
|
|
4
|
+
const exports_1 = require("../../lib/exports");
|
|
5
|
+
const meta_1 = require("../../lib/meta");
|
|
6
|
+
/**
|
|
7
|
+
* Generates index file for all businessLogic update files.
|
|
8
|
+
*/
|
|
9
|
+
function generateBusinessLogicUpdateIndex({ models, meta }) {
|
|
10
|
+
const exports = exports_1.ExportsGenerator.from(meta.businessLogic.update.indexFilePath);
|
|
11
|
+
exports.exportEverythingFromPath(meta.businessLogic.update.serviceFilePath);
|
|
12
|
+
exports.exportEverythingFromPath(meta.businessLogic.update.moduleFilePath);
|
|
13
|
+
exports.exportEverythingFromPath(meta.businessLogic.update.actionTypesFilePath);
|
|
14
|
+
for (const model of models) {
|
|
15
|
+
const meta = (0, meta_1.getModelMetadata)({ model });
|
|
16
|
+
exports.exportEverythingFromPath(meta.businessLogic.update.serviceFilePath);
|
|
17
|
+
}
|
|
18
|
+
return exports.generate();
|
|
19
|
+
}
|
|
20
|
+
exports.generateBusinessLogicUpdateIndex = generateBusinessLogicUpdateIndex;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaMetaData } from '../../lib/meta';
|
|
2
|
+
import { Model } from '../../lib/schema/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a BusinessLogic update module class.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateBusinessLogicUpdateModule({ models, meta }: {
|
|
7
|
+
models: Model[];
|
|
8
|
+
meta: SchemaMetaData;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBusinessLogicUpdateModule = void 0;
|
|
4
|
+
const imports_1 = require("../../lib/imports");
|
|
5
|
+
const meta_1 = require("../../lib/meta");
|
|
6
|
+
/**
|
|
7
|
+
* Generates a BusinessLogic update module class.
|
|
8
|
+
*/
|
|
9
|
+
function generateBusinessLogicUpdateModule({ models, meta }) {
|
|
10
|
+
const mm = models
|
|
11
|
+
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
+
.sort((a, b) => a.meta.businessLogic.update.serviceClassName.localeCompare(b.meta.businessLogic.update.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.update.moduleFilePath).addImports({
|
|
14
|
+
[meta.data.importPath]: meta.data.moduleName,
|
|
15
|
+
[meta.businessLogic.update.serviceFilePath]: meta.businessLogic.update.serviceClassName,
|
|
16
|
+
[meta.businessLogic.view.importPath]: meta.businessLogic.view.moduleName,
|
|
17
|
+
});
|
|
18
|
+
const providers = [meta.businessLogic.update.serviceClassName];
|
|
19
|
+
for (const { meta } of mm) {
|
|
20
|
+
imports.addImport({
|
|
21
|
+
items: [meta.businessLogic.update.serviceClassName],
|
|
22
|
+
from: meta.businessLogic.update.serviceFilePath,
|
|
23
|
+
});
|
|
24
|
+
providers.push(meta.businessLogic.update.serviceClassName);
|
|
25
|
+
}
|
|
26
|
+
const moduleName = meta.businessLogic.update.moduleName;
|
|
27
|
+
return `
|
|
28
|
+
import { DynamicModule } from '@${meta.config.project}/common'
|
|
29
|
+
|
|
30
|
+
${imports.generate()}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
export class ${moduleName} {
|
|
34
|
+
/**
|
|
35
|
+
* Internal cache for the module instance.
|
|
36
|
+
*/
|
|
37
|
+
private static cachedModule: DynamicModule | undefined = undefined
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The getInstance method should be called by any module that needs the module.
|
|
41
|
+
*/
|
|
42
|
+
static getInstance(): DynamicModule {
|
|
43
|
+
if (!${moduleName}.cachedModule) {
|
|
44
|
+
throw new Error('${moduleName} must be called via .provide first!')
|
|
45
|
+
}
|
|
46
|
+
return ${moduleName}.cachedModule
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* The forRoot method should only be called once by the root module.
|
|
51
|
+
*/
|
|
52
|
+
static forRoot(): DynamicModule {
|
|
53
|
+
if (${moduleName}.cachedModule) {
|
|
54
|
+
throw new Error('${moduleName} is already instantiated, please call .forRoot only once from root...')
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const providers = [${providers.join(', ')}]
|
|
58
|
+
${moduleName}.cachedModule = {
|
|
59
|
+
module: ${moduleName},
|
|
60
|
+
providers,
|
|
61
|
+
imports: [${meta.data.moduleName}.getInstance(), ${meta.businessLogic.view.moduleName}.getInstance()],
|
|
62
|
+
exports: providers,
|
|
63
|
+
}
|
|
64
|
+
return ${moduleName}.cachedModule
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
`;
|
|
68
|
+
}
|
|
69
|
+
exports.generateBusinessLogicUpdateModule = generateBusinessLogicUpdateModule;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaMetaData } from '../../lib/meta';
|
|
2
|
+
import { Model } from '../../lib/schema/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Generates the business logic service class.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateBusinessLogicUpdateService({ models, meta, }: {
|
|
7
|
+
models: Model[];
|
|
8
|
+
meta: SchemaMetaData;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBusinessLogicUpdateService = void 0;
|
|
4
|
+
const imports_1 = require("../../lib/imports");
|
|
5
|
+
const meta_1 = require("../../lib/meta");
|
|
6
|
+
/**
|
|
7
|
+
* Generates the business logic service class.
|
|
8
|
+
*/
|
|
9
|
+
function generateBusinessLogicUpdateService({ models, meta, }) {
|
|
10
|
+
const mm = models
|
|
11
|
+
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
12
|
+
.sort((a, b) => a.meta.businessLogic.update.serviceClassName.localeCompare(b.meta.businessLogic.update.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.update.serviceFilePath);
|
|
14
|
+
for (const { meta } of mm) {
|
|
15
|
+
imports.addImport({
|
|
16
|
+
items: [meta.businessLogic.update.serviceClassName],
|
|
17
|
+
from: meta.businessLogic.update.serviceFilePath,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
const constructor = mm
|
|
21
|
+
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.businessLogic.update.serviceClassName})) public readonly ${meta.businessLogic.update.serviceVariableName} :${meta.businessLogic.update.serviceClassName}`)
|
|
22
|
+
.join(',\n');
|
|
23
|
+
return `
|
|
24
|
+
import { Inject, Injectable, forwardRef } from '@nestjs/common'
|
|
25
|
+
|
|
26
|
+
${imports.generate()}
|
|
27
|
+
|
|
28
|
+
@Injectable()
|
|
29
|
+
export class ${meta.businessLogic.update.serviceClassName} {
|
|
30
|
+
constructor(${constructor}) {}
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
exports.generateBusinessLogicUpdateService = generateBusinessLogicUpdateService;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaMetaData } from '../../lib/meta';
|
|
2
|
+
import { Model } from '../../lib/schema/schema';
|
|
3
|
+
/**
|
|
4
|
+
* Generates index file for all businessLogic view files.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateBusinessLogicViewIndex({ models, meta }: {
|
|
7
|
+
models: Model[];
|
|
8
|
+
meta: SchemaMetaData;
|
|
9
|
+
}): string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateBusinessLogicViewIndex = void 0;
|
|
4
|
+
const exports_1 = require("../../lib/exports");
|
|
5
|
+
const meta_1 = require("../../lib/meta");
|
|
6
|
+
/**
|
|
7
|
+
* Generates index file for all businessLogic view files.
|
|
8
|
+
*/
|
|
9
|
+
function generateBusinessLogicViewIndex({ models, meta }) {
|
|
10
|
+
const exports = exports_1.ExportsGenerator.from(meta.businessLogic.view.indexFilePath);
|
|
11
|
+
exports.exportEverythingFromPath(meta.businessLogic.view.serviceFilePath);
|
|
12
|
+
exports.exportEverythingFromPath(meta.businessLogic.view.moduleFilePath);
|
|
13
|
+
for (const model of models) {
|
|
14
|
+
const meta = (0, meta_1.getModelMetadata)({ model });
|
|
15
|
+
exports.exportEverythingFromPath(meta.businessLogic.view.serviceFilePath);
|
|
16
|
+
}
|
|
17
|
+
return exports.generate();
|
|
18
|
+
}
|
|
19
|
+
exports.generateBusinessLogicViewIndex = generateBusinessLogicViewIndex;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { SchemaMetaData } from '../../lib/meta';
|
|
2
2
|
import { Model } from '../../lib/schema/schema';
|
|
3
3
|
/**
|
|
4
|
-
* Generates
|
|
4
|
+
* Generates a BusinessLogic view module class.
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function generateBusinessLogicViewModule({ models, meta }: {
|
|
7
7
|
models: Model[];
|
|
8
8
|
meta: SchemaMetaData;
|
|
9
9
|
}): string;
|
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateBusinessLogicViewModule = void 0;
|
|
4
4
|
const imports_1 = require("../../lib/imports");
|
|
5
5
|
const meta_1 = require("../../lib/meta");
|
|
6
6
|
/**
|
|
7
|
-
* Generates a
|
|
7
|
+
* Generates a BusinessLogic view module class.
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
function generateBusinessLogicModule({ models, meta }) {
|
|
9
|
+
function generateBusinessLogicViewModule({ models, meta }) {
|
|
11
10
|
const mm = models
|
|
12
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
13
|
-
.sort((a, b) => a.meta.businessLogic.serviceClassName.localeCompare(b.meta.businessLogic.serviceClassName));
|
|
14
|
-
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.moduleFilePath)
|
|
15
|
-
.
|
|
16
|
-
|
|
17
|
-
from: meta.data.importPath,
|
|
18
|
-
})
|
|
19
|
-
.addImport({
|
|
20
|
-
items: [meta.businessLogic.serviceClassName],
|
|
21
|
-
from: meta.businessLogic.serviceFilePath,
|
|
12
|
+
.sort((a, b) => a.meta.businessLogic.view.serviceClassName.localeCompare(b.meta.businessLogic.view.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.view.moduleFilePath).addImports({
|
|
14
|
+
[meta.data.importPath]: meta.data.moduleName,
|
|
15
|
+
[meta.businessLogic.view.serviceFilePath]: meta.businessLogic.view.serviceClassName,
|
|
22
16
|
});
|
|
23
|
-
const providers = [meta.businessLogic.serviceClassName];
|
|
17
|
+
const providers = [meta.businessLogic.view.serviceClassName];
|
|
24
18
|
for (const { meta } of mm) {
|
|
25
19
|
imports.addImport({
|
|
26
|
-
items: [meta.businessLogic.serviceClassName],
|
|
27
|
-
from: meta.businessLogic.serviceFilePath,
|
|
20
|
+
items: [meta.businessLogic.view.serviceClassName],
|
|
21
|
+
from: meta.businessLogic.view.serviceFilePath,
|
|
28
22
|
});
|
|
29
|
-
providers.push(meta.businessLogic.serviceClassName);
|
|
23
|
+
providers.push(meta.businessLogic.view.serviceClassName);
|
|
30
24
|
}
|
|
31
|
-
const moduleName = meta.businessLogic.moduleName;
|
|
25
|
+
const moduleName = meta.businessLogic.view.moduleName;
|
|
32
26
|
return `
|
|
33
27
|
import { DynamicModule } from '@${meta.config.project}/common'
|
|
34
28
|
|
|
@@ -38,20 +32,22 @@ ${imports.generate()}
|
|
|
38
32
|
export class ${moduleName} {
|
|
39
33
|
/**
|
|
40
34
|
* Internal cache for the module instance.
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
*/
|
|
36
|
+
private static cachedModule: DynamicModule | undefined = undefined
|
|
43
37
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
/**
|
|
39
|
+
* The getInstance method should be called by any module that needs the module.
|
|
40
|
+
*/
|
|
47
41
|
static getInstance(): DynamicModule {
|
|
48
|
-
if (!${moduleName}.cachedModule)
|
|
42
|
+
if (!${moduleName}.cachedModule) {
|
|
43
|
+
throw new Error('${moduleName} must be called via .provide first!')
|
|
44
|
+
}
|
|
49
45
|
return ${moduleName}.cachedModule
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
/**
|
|
53
49
|
* The forRoot method should only be called once by the root module.
|
|
54
|
-
|
|
50
|
+
*/
|
|
55
51
|
static forRoot(): DynamicModule {
|
|
56
52
|
if (${moduleName}.cachedModule) {
|
|
57
53
|
throw new Error('${moduleName} is already instantiated, please call .forRoot only once from root...')
|
|
@@ -69,4 +65,4 @@ export class ${moduleName} {
|
|
|
69
65
|
}
|
|
70
66
|
`;
|
|
71
67
|
}
|
|
72
|
-
exports.
|
|
68
|
+
exports.generateBusinessLogicViewModule = generateBusinessLogicViewModule;
|
|
@@ -3,7 +3,7 @@ import { Model } from '../../lib/schema/schema';
|
|
|
3
3
|
/**
|
|
4
4
|
* Generates the business logic service class.
|
|
5
5
|
*/
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function generateBusinessLogicViewService({ models, meta }: {
|
|
7
7
|
models: Model[];
|
|
8
8
|
meta: SchemaMetaData;
|
|
9
9
|
}): string;
|
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateBusinessLogicViewService = void 0;
|
|
4
4
|
const imports_1 = require("../../lib/imports");
|
|
5
5
|
const meta_1 = require("../../lib/meta");
|
|
6
6
|
/**
|
|
7
7
|
* Generates the business logic service class.
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
function generateBusinessLogicService({ models, meta }) {
|
|
9
|
+
function generateBusinessLogicViewService({ models, meta }) {
|
|
11
10
|
const mm = models
|
|
12
11
|
.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }))
|
|
13
|
-
.sort((a, b) => a.meta.businessLogic.serviceClassName.localeCompare(b.meta.businessLogic.serviceClassName));
|
|
14
|
-
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.serviceFilePath);
|
|
12
|
+
.sort((a, b) => a.meta.businessLogic.view.serviceClassName.localeCompare(b.meta.businessLogic.view.serviceClassName));
|
|
13
|
+
const imports = imports_1.ImportsGenerator.from(meta.businessLogic.view.serviceFilePath);
|
|
15
14
|
for (const { meta } of mm) {
|
|
16
15
|
imports.addImport({
|
|
17
|
-
items: [meta.businessLogic.serviceClassName],
|
|
18
|
-
from: meta.businessLogic.serviceFilePath,
|
|
16
|
+
items: [meta.businessLogic.view.serviceClassName],
|
|
17
|
+
from: meta.businessLogic.view.serviceFilePath,
|
|
19
18
|
});
|
|
20
19
|
}
|
|
21
20
|
const constructor = mm
|
|
22
|
-
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.businessLogic.serviceClassName})) public ${meta.businessLogic.serviceVariableName} :${meta.businessLogic.serviceClassName}`)
|
|
21
|
+
.map(({ meta }) => `@Inject(forwardRef(() => ${meta.businessLogic.view.serviceClassName})) public readonly ${meta.businessLogic.view.serviceVariableName} :${meta.businessLogic.view.serviceClassName}`)
|
|
23
22
|
.join(',\n');
|
|
24
23
|
return `
|
|
25
24
|
import { Inject, Injectable, forwardRef } from '@nestjs/common'
|
|
@@ -27,9 +26,9 @@ function generateBusinessLogicService({ models, meta }) {
|
|
|
27
26
|
${imports.generate()}
|
|
28
27
|
|
|
29
28
|
@Injectable()
|
|
30
|
-
export class ${meta.businessLogic.serviceClassName} {
|
|
29
|
+
export class ${meta.businessLogic.view.serviceClassName} {
|
|
31
30
|
constructor(${constructor}) {}
|
|
32
31
|
}
|
|
33
32
|
`;
|
|
34
33
|
}
|
|
35
|
-
exports.
|
|
34
|
+
exports.generateBusinessLogicViewService = generateBusinessLogicViewService;
|
package/dist/generators/indices/{datamockmodule.generator.js → datamock-module.generator.js}
RENAMED
|
@@ -30,21 +30,13 @@ const Types = __importStar(require("../../lib/schema/types"));
|
|
|
30
30
|
/**
|
|
31
31
|
* Generates a mocking class
|
|
32
32
|
*/
|
|
33
|
-
// TODO: https://github.com/PostXL/PostXL/issues/347
|
|
34
33
|
function generateDataMockModule({ models, meta }) {
|
|
35
34
|
const mm = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
36
|
-
const imports = imports_1.ImportsGenerator.from(meta.data.dataMockModuleFilePath)
|
|
37
|
-
.
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.addImport({
|
|
42
|
-
items: [Types.toVariableName('DataService')],
|
|
43
|
-
from: meta.data.dataServiceFilePath,
|
|
44
|
-
})
|
|
45
|
-
.addImport({
|
|
46
|
-
items: [Types.toVariableName('TestDataService')],
|
|
47
|
-
from: meta.data.testDataServiceFilePath,
|
|
35
|
+
const imports = imports_1.ImportsGenerator.from(meta.data.dataMockModuleFilePath).addImports({
|
|
36
|
+
[meta.data.dataModuleFilePath]: [Types.toVariableName('DataModule')],
|
|
37
|
+
[meta.data.dataServiceFilePath]: [Types.toVariableName('DataService')],
|
|
38
|
+
// we need to import the file directly instead via the normal index file as this would cause a circular dependency else
|
|
39
|
+
[meta.actions.actionExecutionInterfaceFilePath]: [meta.actions.actionExecutionMock],
|
|
48
40
|
});
|
|
49
41
|
for (const { model, meta } of mm) {
|
|
50
42
|
imports.addImport({ items: [model.typeName], from: meta.types.importPath });
|
|
@@ -57,7 +49,7 @@ function generateDataMockModule({ models, meta }) {
|
|
|
57
49
|
useFactory: async () => {
|
|
58
50
|
const repository = new ${meta.data.mockRepositoryClassName}()
|
|
59
51
|
if (!!seed && !!seed.${meta.seed.constantName}) {
|
|
60
|
-
await repository.reInit(seed.${meta.seed.constantName})
|
|
52
|
+
await repository.reInit({items: seed.${meta.seed.constantName}, execution })
|
|
61
53
|
}
|
|
62
54
|
return repository
|
|
63
55
|
}
|
|
@@ -70,11 +62,11 @@ import { DbModule } from '@${meta.config.project}/db'
|
|
|
70
62
|
${imports.generate()}
|
|
71
63
|
|
|
72
64
|
export class DataMockModule {
|
|
73
|
-
|
|
74
65
|
static mock(seed?: MockData): DynamicModule {
|
|
66
|
+
const execution = new MockActionExecution()
|
|
67
|
+
|
|
75
68
|
const providers = [
|
|
76
69
|
DataService,
|
|
77
|
-
TestDataService,
|
|
78
70
|
${providers}
|
|
79
71
|
]
|
|
80
72
|
|
|
@@ -11,13 +11,9 @@ function generateDataMocker({ models, meta: schemaMeta }) {
|
|
|
11
11
|
const modelMetas = models.map((model) => ({ model, meta: (0, meta_1.getModelMetadata)({ model }) }));
|
|
12
12
|
const imports = imports_1.ImportsGenerator.from(schemaMeta.data.dataMockerFilePath);
|
|
13
13
|
for (const { model, meta } of modelMetas) {
|
|
14
|
-
imports.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
});
|
|
18
|
-
imports.addImport({
|
|
19
|
-
items: [meta.data.stubGenerationFnName],
|
|
20
|
-
from: schemaMeta.data.dataMockerStubImportPath,
|
|
14
|
+
imports.addImports({
|
|
15
|
+
[meta.types.importPath]: [model.typeName],
|
|
16
|
+
[schemaMeta.data.dataMockerStubImportPath]: [meta.data.stubGenerationFnName],
|
|
21
17
|
});
|
|
22
18
|
}
|
|
23
19
|
const publicVariables = modelMetas
|