@memberjunction/codegen-lib 2.0.0 → 2.1.1
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/Config/db-connection.d.ts +3 -0
- package/dist/Config/db-connection.d.ts.map +1 -1
- package/dist/Config/db-connection.js +46 -1
- package/dist/Config/db-connection.js.map +1 -1
- package/dist/Database/manage-metadata.d.ts +1 -1
- package/dist/Database/manage-metadata.d.ts.map +1 -1
- package/dist/Database/manage-metadata.js +13 -10
- package/dist/Database/manage-metadata.js.map +1 -1
- package/dist/Database/sql.d.ts +6 -1
- package/dist/Database/sql.d.ts.map +1 -1
- package/dist/Database/sql.js +126 -36
- package/dist/Database/sql.js.map +1 -1
- package/dist/Database/sql_codegen.d.ts +12 -4
- package/dist/Database/sql_codegen.d.ts.map +1 -1
- package/dist/Database/sql_codegen.js +150 -84
- package/dist/Database/sql_codegen.js.map +1 -1
- package/dist/Misc/util.d.ts +1 -0
- package/dist/Misc/util.d.ts.map +1 -1
- package/dist/Misc/util.js +24 -2
- package/dist/Misc/util.js.map +1 -1
- package/dist/action_subclasses_codegen.js +1 -1
- package/dist/action_subclasses_codegen.js.map +1 -1
- package/dist/entity_types_codegen.d.ts +15 -0
- package/dist/entity_types_codegen.d.ts.map +1 -0
- package/dist/entity_types_codegen.js +106 -0
- package/dist/entity_types_codegen.js.map +1 -0
- package/dist/runCodeGen.d.ts.map +1 -1
- package/dist/runCodeGen.js +27 -4
- package/dist/runCodeGen.js.map +1 -1
- package/package.json +8 -7
package/dist/Database/sql.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
8
31
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
32
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
33
|
};
|
|
34
|
+
var SQLUtilityBase_1;
|
|
11
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
36
|
exports.SQLUtilityBase = void 0;
|
|
13
37
|
const logging_1 = require("../Misc/logging");
|
|
@@ -17,10 +41,17 @@ const core_1 = require("@memberjunction/core");
|
|
|
17
41
|
const config_1 = require("../Config/config");
|
|
18
42
|
const manage_metadata_1 = require("../Database/manage-metadata");
|
|
19
43
|
const global_1 = require("@memberjunction/global");
|
|
44
|
+
const db_connection_1 = require("../Config/db-connection");
|
|
45
|
+
const child_process_1 = require("child_process");
|
|
46
|
+
const util_1 = require("util");
|
|
47
|
+
const crypto = __importStar(require("crypto"));
|
|
48
|
+
const fs_extra_1 = require("fs-extra");
|
|
49
|
+
const util_2 = require("../Misc/util");
|
|
50
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
20
51
|
/**
|
|
21
52
|
* Base class for SQL Utility functions, you can sub-class this class to create your own SQL Utility functions/override existing functionality.
|
|
22
53
|
*/
|
|
23
|
-
let SQLUtilityBase = class SQLUtilityBase {
|
|
54
|
+
let SQLUtilityBase = SQLUtilityBase_1 = class SQLUtilityBase {
|
|
24
55
|
/**
|
|
25
56
|
* Returns a file name for a given DB Object given a type, schema and object name.
|
|
26
57
|
* The basic format is to have a directory for each schema, and within each directory
|
|
@@ -77,8 +108,8 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
77
108
|
for (const [entityName, dependencies] of dependencyMap.entries()) {
|
|
78
109
|
circularDeps.push(`${entityName} depends on ${Array.from(dependencies).join(', ')}`);
|
|
79
110
|
}
|
|
80
|
-
console.warn(`
|
|
81
|
-
circularDeps.forEach(dep => console.warn(`
|
|
111
|
+
console.warn(` > Cyclical Dependency Detected (non-fatal), including remaining entities in final level. Details:`);
|
|
112
|
+
circularDeps.forEach(dep => console.warn(` * ${dep}`));
|
|
82
113
|
for (const item of dependencyMap) {
|
|
83
114
|
const entityName = item[0];
|
|
84
115
|
currentLevel.push(entityMap.get(entityName));
|
|
@@ -101,8 +132,6 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
101
132
|
async recompileAllBaseViews(ds, excludeSchemas, applyPermissions) {
|
|
102
133
|
let bSuccess = true; // start off true
|
|
103
134
|
const md = new core_1.Metadata();
|
|
104
|
-
const tasks = [];
|
|
105
|
-
const concurrencyLimit = 3;
|
|
106
135
|
// Build the dependency order tree, provide ALL entities for this process
|
|
107
136
|
const entityLevelTree = this.buildEntityLevelsTree(md.Entities);
|
|
108
137
|
// Process each level sequentially, but entities within a level in parallel
|
|
@@ -113,17 +142,13 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
113
142
|
e.IncludeInAPI &&
|
|
114
143
|
!e.VirtualEntity &&
|
|
115
144
|
!manage_metadata_1.ManageMetadataBase.newEntityList.includes(e.Name));
|
|
145
|
+
const levelFiles = [];
|
|
116
146
|
for (const entity of l) {
|
|
117
|
-
|
|
118
|
-
if (tasks.length === concurrencyLimit) {
|
|
119
|
-
bSuccess = (await Promise.all(tasks)).every(result => result) && bSuccess;
|
|
120
|
-
tasks.length = 0; // clear the array
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
if (tasks.length > 0) {
|
|
124
|
-
bSuccess = (await Promise.all(tasks)).every(result => result) && bSuccess;
|
|
125
|
-
tasks.length = 0; // clear the array for the next level
|
|
147
|
+
levelFiles.push(...this.getBaseViewFiles(entity));
|
|
126
148
|
}
|
|
149
|
+
// all files for this level are now in levelFiles, let's combine them and execute them
|
|
150
|
+
const combinedSQL = this.combineMultipleSQLFiles(levelFiles);
|
|
151
|
+
bSuccess = await this.executeBatchSQLScript(combinedSQL) && bSuccess;
|
|
127
152
|
}
|
|
128
153
|
if (!bSuccess) {
|
|
129
154
|
// temp thing for debug, let's dump the new entity list to see what's up
|
|
@@ -132,17 +157,44 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
132
157
|
}
|
|
133
158
|
return bSuccess;
|
|
134
159
|
}
|
|
160
|
+
getBaseViewFiles(entity) {
|
|
161
|
+
const files = [];
|
|
162
|
+
const baseViewFile = this.getDBObjectFileName('view', entity.SchemaName, entity.BaseView, false, entity.BaseViewGenerated);
|
|
163
|
+
const baseViewPermissionsFile = this.getDBObjectFileName('view', entity.SchemaName, entity.BaseView, true, entity.BaseViewGenerated);
|
|
164
|
+
const baseViewFilePath = path_1.default.join((0, config_1.outputDir)('SQL', true), baseViewFile);
|
|
165
|
+
const baseViewPermissionsFilePath = path_1.default.join((0, config_1.outputDir)('SQL', true), baseViewPermissionsFile);
|
|
166
|
+
if (fs_1.default.existsSync(baseViewFilePath)) {
|
|
167
|
+
files.push(baseViewFile);
|
|
168
|
+
}
|
|
169
|
+
if (fs_1.default.existsSync(baseViewPermissionsFilePath)) {
|
|
170
|
+
files.push(baseViewPermissionsFile);
|
|
171
|
+
}
|
|
172
|
+
return files;
|
|
173
|
+
}
|
|
174
|
+
combineMultipleSQLFiles(files) {
|
|
175
|
+
let combinedSQL = "";
|
|
176
|
+
for (const file of files) {
|
|
177
|
+
const filePath = path_1.default.join((0, config_1.outputDir)('SQL', true), file);
|
|
178
|
+
if (fs_1.default.existsSync(filePath)) {
|
|
179
|
+
combinedSQL += (combinedSQL.length === 0 ? "" : "\n\nGO\n\n") + fs_1.default.readFileSync(filePath, 'utf-8');
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
(0, logging_1.logError)(` Error Combining SQL Files: File ${filePath} does not exist`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return combinedSQL;
|
|
186
|
+
}
|
|
135
187
|
async recompileSingleBaseView(ds, entity, applyPermissions) {
|
|
136
188
|
const file = this.getDBObjectFileName('view', entity.SchemaName, entity.BaseView, false, entity.BaseViewGenerated);
|
|
137
189
|
const filePath = path_1.default.join((0, config_1.outputDir)('SQL', true), file);
|
|
138
190
|
if (fs_1.default.existsSync(filePath)) {
|
|
139
|
-
const recompileResult = await this.executeSQLFile(
|
|
191
|
+
const recompileResult = await this.executeSQLFile(filePath);
|
|
140
192
|
if (applyPermissions) {
|
|
141
193
|
// now apply permissions
|
|
142
194
|
const permissionsFile = this.getDBObjectFileName('view', entity.SchemaName, entity.BaseView, true, entity.BaseViewGenerated);
|
|
143
195
|
const permissionsFilePath = path_1.default.join((0, config_1.outputDir)('SQL', true), permissionsFile);
|
|
144
196
|
if (fs_1.default.existsSync(permissionsFilePath)) {
|
|
145
|
-
return await this.executeSQLFile(
|
|
197
|
+
return await this.executeSQLFile(permissionsFilePath) && recompileResult;
|
|
146
198
|
}
|
|
147
199
|
}
|
|
148
200
|
else
|
|
@@ -153,30 +205,67 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
153
205
|
return false;
|
|
154
206
|
}
|
|
155
207
|
}
|
|
156
|
-
async
|
|
157
|
-
const
|
|
158
|
-
|
|
208
|
+
async executeSQLFiles(filePaths, outputMessages) {
|
|
209
|
+
for (const filePath of filePaths) {
|
|
210
|
+
const startTime = Date.now();
|
|
211
|
+
if (!await this.executeSQLFile(filePath))
|
|
212
|
+
return false;
|
|
213
|
+
const endTime = Date.now();
|
|
214
|
+
if (outputMessages)
|
|
215
|
+
console.log(` Executed ${filePath} in ${endTime - startTime}ms`);
|
|
216
|
+
}
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
async executeSQLFile(filePath) {
|
|
220
|
+
try {
|
|
221
|
+
// Construct the sqlcmd command with optional port and instance
|
|
222
|
+
let command = `sqlcmd -S ${db_connection_1.sqlConfig.server}`;
|
|
223
|
+
if (db_connection_1.sqlConfig.port) {
|
|
224
|
+
command += `,${db_connection_1.sqlConfig.port}`;
|
|
225
|
+
}
|
|
226
|
+
if (db_connection_1.sqlConfig.options?.instanceName) {
|
|
227
|
+
command += `\\${db_connection_1.sqlConfig.options.instanceName}`;
|
|
228
|
+
}
|
|
229
|
+
const cwd = path_1.default.resolve(process.cwd());
|
|
230
|
+
const absoluteFilePath = path_1.default.resolve(cwd, filePath);
|
|
231
|
+
command += ` -U ${db_connection_1.sqlConfig.user} -P ${db_connection_1.sqlConfig.password} -d ${db_connection_1.sqlConfig.database} -i "${absoluteFilePath}"`;
|
|
232
|
+
// Execute the command
|
|
233
|
+
const { stdout, stderr } = await execAsync(command);
|
|
234
|
+
if (stderr) {
|
|
235
|
+
throw new Error(stderr);
|
|
236
|
+
}
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
(0, logging_1.logError)("Error executing batch SQL file: " + e.message);
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
async executeBatchSQLScript(scriptText) {
|
|
245
|
+
try {
|
|
246
|
+
if (!scriptText || scriptText.length === 0)
|
|
247
|
+
return true; // nothing to do
|
|
248
|
+
// Write the scriptText to a temporary file
|
|
249
|
+
const uniqueFileName = `temp_script_${SQLUtilityBase_1._batchScriptCounter++}_${Date.now()}_${crypto.randomBytes(6).toString('hex')}.sql`;
|
|
250
|
+
const tempDir = path_1.default.join(process.cwd(), 'temp_sql_scripts');
|
|
251
|
+
(0, fs_extra_1.mkdirSync)(tempDir, { recursive: true });
|
|
252
|
+
const scriptFilePath = path_1.default.join(tempDir, uniqueFileName);
|
|
253
|
+
fs_1.default.writeFileSync(scriptFilePath, scriptText);
|
|
254
|
+
await this.executeSQLFile(scriptFilePath);
|
|
255
|
+
// Remove the temporary file
|
|
256
|
+
(0, util_2.attemptDeleteFile)(scriptFilePath, 3, 2000); // don't await this, just fire and forget
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error(error);
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
159
263
|
}
|
|
160
264
|
async executeSQLScript(ds, scriptText, inChunks) {
|
|
161
265
|
try {
|
|
162
266
|
if (!scriptText || scriptText.length == 0)
|
|
163
267
|
return true; // nothing to do
|
|
164
|
-
|
|
165
|
-
let bSuccess = true;
|
|
166
|
-
if (inChunks)
|
|
167
|
-
scriptChunks = scriptText.split('GO');
|
|
168
|
-
await ds.transaction(async () => {
|
|
169
|
-
for (let i = 0; i < scriptChunks.length; ++i) {
|
|
170
|
-
try {
|
|
171
|
-
await ds.query(scriptChunks[i]); // + '\n GO \n');
|
|
172
|
-
}
|
|
173
|
-
catch (innerE) {
|
|
174
|
-
(0, logging_1.logError)(innerE);
|
|
175
|
-
bSuccess = false;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
return bSuccess;
|
|
268
|
+
return this.executeBatchSQLScript(scriptText);
|
|
180
269
|
}
|
|
181
270
|
catch (e) {
|
|
182
271
|
(0, logging_1.logError)(e);
|
|
@@ -185,7 +274,8 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
185
274
|
}
|
|
186
275
|
};
|
|
187
276
|
exports.SQLUtilityBase = SQLUtilityBase;
|
|
188
|
-
|
|
277
|
+
SQLUtilityBase._batchScriptCounter = 0;
|
|
278
|
+
exports.SQLUtilityBase = SQLUtilityBase = SQLUtilityBase_1 = __decorate([
|
|
189
279
|
(0, global_1.RegisterClass)(SQLUtilityBase)
|
|
190
280
|
], SQLUtilityBase);
|
|
191
281
|
//# sourceMappingURL=sql.js.map
|
package/dist/Database/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/Database/sql.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/Database/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,12 +25,20 @@ export declare class SQLCodeGenBase {
|
|
|
25
25
|
* @param directory The directory to save the generated SQL files to
|
|
26
26
|
* @param onlyPermissions If true, only the permissions files will be generated and executed, not the actual SQL files. Use this if you are simply setting permission changes but no actual changes to the entities have occured.
|
|
27
27
|
*/
|
|
28
|
-
generateAndExecuteEntitySQLToSeparateFiles(ds: DataSource, entities: EntityInfo[], directory: string, onlyPermissions: boolean, writeFiles?: boolean, batchSize?: number): Promise<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
generateAndExecuteEntitySQLToSeparateFiles(ds: DataSource, entities: EntityInfo[], directory: string, onlyPermissions: boolean, skipExecution?: boolean, writeFiles?: boolean, batchSize?: number): Promise<{
|
|
29
|
+
Success: boolean;
|
|
30
|
+
Files: string[];
|
|
31
|
+
}>;
|
|
32
|
+
deleteGeneratedEntityFiles(directory: string, entities: EntityInfo[]): void;
|
|
33
|
+
createCombinedEntitySQLFiles(directory: string, entities: EntityInfo[]): string[];
|
|
34
|
+
generateAndExecuteSingleEntitySQLToSeparateFiles(ds: DataSource, entity: EntityInfo, directory: string, onlyPermissions: boolean, skipExecution?: boolean, writeFiles?: boolean): Promise<{
|
|
35
|
+
Success: boolean;
|
|
36
|
+
Files: string[];
|
|
37
|
+
}>;
|
|
38
|
+
generateSingleEntitySQLToSeparateFiles(ds: DataSource, entity: EntityInfo, directory: string, onlyPermissions: boolean, skipExecution?: boolean, writeFiles?: boolean): Promise<{
|
|
32
39
|
sql: string;
|
|
33
40
|
permissionsSQL: string;
|
|
41
|
+
files: string[];
|
|
34
42
|
}>;
|
|
35
43
|
getSPName(entity: EntityInfo, type: SPType): string;
|
|
36
44
|
getEntityPermissionFileNames(entity: EntityInfo): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql_codegen.d.ts","sourceRoot":"","sources":["../../src/Database/sql_codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAkC,MAAM,sBAAsB,CAAC;AAKnG,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAUrC,eAAO,MAAM,MAAM;;;;CAIP,CAAC;AAEb,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,CAAC;AAGxD;;;;GAIG;AACH,qBACa,cAAc;IACvB,SAAS,CAAC,iBAAiB,EAAE,cAAc,CAAiF;IAC5H,IAAW,gBAAgB,IAAI,cAAc,CAE5C;IAEY,4BAA4B,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"sql_codegen.d.ts","sourceRoot":"","sources":["../../src/Database/sql_codegen.ts"],"names":[],"mappings":"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"}
|