@memberjunction/codegen-lib 1.7.1 → 1.8.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/Angular/angular-codegen.d.ts +63 -0
- package/dist/Angular/angular-codegen.d.ts.map +1 -0
- package/dist/{angular_client_codegen.js → Angular/angular-codegen.js} +153 -46
- package/dist/Angular/angular-codegen.js.map +1 -0
- package/dist/Angular/join-grid-related-entity-component.d.ts +24 -0
- package/dist/Angular/join-grid-related-entity-component.d.ts.map +1 -0
- package/dist/Angular/join-grid-related-entity-component.js +86 -0
- package/dist/Angular/join-grid-related-entity-component.js.map +1 -0
- package/dist/Angular/related-entity-components.d.ts +111 -0
- package/dist/Angular/related-entity-components.d.ts.map +1 -0
- package/dist/Angular/related-entity-components.js +82 -0
- package/dist/Angular/related-entity-components.js.map +1 -0
- package/dist/Angular/user-view-grid-related-entity-component.d.ts +11 -0
- package/dist/Angular/user-view-grid-related-entity-component.d.ts.map +1 -0
- package/dist/Angular/user-view-grid-related-entity-component.js +51 -0
- package/dist/Angular/user-view-grid-related-entity-component.js.map +1 -0
- package/dist/Config/config.d.ts.map +1 -0
- package/dist/{config.js → Config/config.js} +1 -1
- package/dist/Config/config.js.map +1 -0
- package/dist/{db.d.ts → Config/db-connection.d.ts} +1 -1
- package/dist/Config/db-connection.d.ts.map +1 -0
- package/dist/{db.js → Config/db-connection.js} +1 -1
- package/dist/Config/db-connection.js.map +1 -0
- package/dist/Database/dbSchema.d.ts.map +1 -0
- package/dist/{dbSchema.js → Database/dbSchema.js} +2 -2
- package/dist/Database/dbSchema.js.map +1 -0
- package/dist/{manageMetadata.d.ts → Database/manage-metadata.d.ts} +36 -3
- package/dist/Database/manage-metadata.d.ts.map +1 -0
- package/dist/{manageMetadata.js → Database/manage-metadata.js} +171 -18
- package/dist/Database/manage-metadata.js.map +1 -0
- package/dist/Database/sql.d.ts.map +1 -0
- package/dist/{sql.js → Database/sql.js} +5 -5
- package/dist/Database/sql.js.map +1 -0
- package/dist/Database/sql_codegen.d.ts.map +1 -0
- package/dist/{sql_codegen.js → Database/sql_codegen.js} +20 -30
- package/dist/Database/sql_codegen.js.map +1 -0
- package/dist/{advanced_generation.d.ts → Misc/advanced_generation.d.ts} +1 -1
- package/dist/Misc/advanced_generation.d.ts.map +1 -0
- package/dist/{advanced_generation.js → Misc/advanced_generation.js} +1 -1
- package/dist/Misc/advanced_generation.js.map +1 -0
- package/dist/Misc/createNewUser.d.ts +12 -0
- package/dist/Misc/createNewUser.d.ts.map +1 -0
- package/dist/Misc/createNewUser.js +113 -0
- package/dist/Misc/createNewUser.js.map +1 -0
- package/dist/Misc/logging.d.ts.map +1 -0
- package/dist/{logging.js → Misc/logging.js} +1 -1
- package/dist/Misc/logging.js.map +1 -0
- package/dist/{runCommand.d.ts → Misc/runCommand.d.ts} +1 -1
- package/dist/Misc/runCommand.d.ts.map +1 -0
- package/dist/Misc/runCommand.js.map +1 -0
- package/dist/Misc/util.d.ts.map +1 -0
- package/dist/Misc/util.js.map +1 -0
- package/dist/action_subclasses_codegen.js +1 -1
- package/dist/action_subclasses_codegen.js.map +1 -1
- package/dist/createNewUser.d.ts +1 -1
- package/dist/createNewUser.d.ts.map +1 -1
- package/dist/createNewUser.js +2 -2
- package/dist/createNewUser.js.map +1 -1
- package/dist/entity_subclasses_codegen.js +1 -1
- package/dist/entity_subclasses_codegen.js.map +1 -1
- package/dist/graphql_server_codegen.d.ts.map +1 -1
- package/dist/graphql_server_codegen.js +10 -6
- package/dist/graphql_server_codegen.js.map +1 -1
- package/dist/index.d.ts +14 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -11
- package/dist/index.js.map +1 -1
- package/dist/runCodeGen.js +21 -21
- package/dist/runCodeGen.js.map +1 -1
- package/package.json +7 -7
- package/dist/advanced_generation.d.ts.map +0 -1
- package/dist/advanced_generation.js.map +0 -1
- package/dist/angular_client_codegen.d.ts +0 -43
- package/dist/angular_client_codegen.d.ts.map +0 -1
- package/dist/angular_client_codegen.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/db.d.ts.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/dbSchema.d.ts.map +0 -1
- package/dist/dbSchema.js.map +0 -1
- package/dist/logging.d.ts.map +0 -1
- package/dist/logging.js.map +0 -1
- package/dist/manageMetadata.d.ts.map +0 -1
- package/dist/manageMetadata.js.map +0 -1
- package/dist/runCommand.d.ts.map +0 -1
- package/dist/runCommand.js.map +0 -1
- package/dist/sql.d.ts.map +0 -1
- package/dist/sql.js.map +0 -1
- package/dist/sql_codegen.d.ts.map +0 -1
- package/dist/sql_codegen.js.map +0 -1
- package/dist/util.d.ts.map +0 -1
- package/dist/util.js.map +0 -1
- /package/dist/{config.d.ts → Config/config.d.ts} +0 -0
- /package/dist/{dbSchema.d.ts → Database/dbSchema.d.ts} +0 -0
- /package/dist/{sql.d.ts → Database/sql.d.ts} +0 -0
- /package/dist/{sql_codegen.d.ts → Database/sql_codegen.d.ts} +0 -0
- /package/dist/{logging.d.ts → Misc/logging.d.ts} +0 -0
- /package/dist/{runCommand.js → Misc/runCommand.js} +0 -0
- /package/dist/{util.d.ts → Misc/util.d.ts} +0 -0
- /package/dist/{util.js → Misc/util.js} +0 -0
|
@@ -8,11 +8,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var ManageMetadataBase_1;
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.ManageMetadataBase = void 0;
|
|
11
|
-
const config_1 = require("
|
|
11
|
+
const config_1 = require("../Config/config");
|
|
12
12
|
const core_1 = require("@memberjunction/core");
|
|
13
|
-
const logging_1 = require("
|
|
13
|
+
const logging_1 = require("../Misc/logging");
|
|
14
14
|
const sql_1 = require("./sql");
|
|
15
|
-
const advanced_generation_1 = require("
|
|
15
|
+
const advanced_generation_1 = require("../Misc/advanced_generation");
|
|
16
16
|
const global_1 = require("@memberjunction/global");
|
|
17
17
|
/**
|
|
18
18
|
* Base class for managing metadata within the CodeGen system. This class can be sub-classed to extend/override base class functionality. Make sure to use the RegisterClass decorator from the @memberjunction/global package
|
|
@@ -45,7 +45,7 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
45
45
|
// many times the former versions of base views will NOT succesfully recompile, so don't consider that scenario to be a
|
|
46
46
|
// failure for this entire function
|
|
47
47
|
}
|
|
48
|
-
if (!await this.manageEntityFields(ds, excludeSchemas)) {
|
|
48
|
+
if (!await this.manageEntityFields(ds, excludeSchemas, false)) {
|
|
49
49
|
(0, logging_1.logError)('Error managing entity fields');
|
|
50
50
|
bSuccess = false;
|
|
51
51
|
}
|
|
@@ -187,6 +187,13 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
187
187
|
EntityID NOT IN (SELECT ID FROM ${(0, config_1.mj_core_schema)()}.Entity WHERE SchemaName IN (${excludeSchemas.map(s => `'${s}'`).join(',')}))
|
|
188
188
|
ORDER BY RelatedEntityID`;
|
|
189
189
|
const entityFields = await ds.query(sSQL);
|
|
190
|
+
// Get the relationship counts for each entity
|
|
191
|
+
const sSQLRelationshipCount = `SELECT EntityID, COUNT(*) AS Count FROM ${(0, config_1.mj_core_schema)()}.EntityRelationship GROUP BY EntityID`;
|
|
192
|
+
const relationshipCounts = await ds.query(sSQLRelationshipCount);
|
|
193
|
+
const relationshipCountMap = new Map();
|
|
194
|
+
for (const rc of relationshipCounts) {
|
|
195
|
+
relationshipCountMap.set(rc.EntityID, rc.Count);
|
|
196
|
+
}
|
|
190
197
|
// now loop through all of our fkey fields
|
|
191
198
|
for (const f of entityFields) {
|
|
192
199
|
// for each field determine if an existing relationship exists, if not, create it
|
|
@@ -195,8 +202,13 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
195
202
|
if (relationships && relationships.length === 0) {
|
|
196
203
|
// no relationship exists, so create it
|
|
197
204
|
const e = md.Entities.find(e => e.ID === f.EntityID);
|
|
198
|
-
|
|
199
|
-
|
|
205
|
+
// calculate the sequence by getting the count of existing relationships for the entity and adding 1 and then increment the count for future inserts in this loop
|
|
206
|
+
const relCount = relationshipCountMap.get(f.EntityID) ? relationshipCountMap.get(f.EntityID) : 0;
|
|
207
|
+
const sequence = relCount + 1;
|
|
208
|
+
const sSQLInsert = `INSERT INTO ${(0, config_1.mj_core_schema)()}.EntityRelationship (EntityID, RelatedEntityID, RelatedEntityJoinField, Type, BundleInAPI, DisplayInForm, DisplayName, Sequence)
|
|
209
|
+
VALUES (${f.RelatedEntityID}, ${f.EntityID}, '${f.Name}', 'One To Many', 1, 1, '${e.Name}', ${sequence})`;
|
|
210
|
+
// now update the map for the relationship count
|
|
211
|
+
relationshipCountMap.set(f.EntityID, sequence);
|
|
200
212
|
await ds.query(sSQLInsert);
|
|
201
213
|
}
|
|
202
214
|
}
|
|
@@ -216,7 +228,7 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
216
228
|
* @returns
|
|
217
229
|
*/
|
|
218
230
|
async manageManyToManyEntityRelationships(ds, excludeSchemas) {
|
|
219
|
-
return true; // not implemented for now
|
|
231
|
+
return true; // not implemented for now, require the admin to manually create these relationships
|
|
220
232
|
}
|
|
221
233
|
/**
|
|
222
234
|
* Manages the creation, updating and deletion of entity field records in the metadata based on the database schema.
|
|
@@ -224,14 +236,20 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
224
236
|
* @param excludeSchemas
|
|
225
237
|
* @returns
|
|
226
238
|
*/
|
|
227
|
-
async manageEntityFields(ds, excludeSchemas) {
|
|
239
|
+
async manageEntityFields(ds, excludeSchemas, skipCreatedAtUpdatedAtFieldValidation) {
|
|
228
240
|
let bSuccess = true;
|
|
229
241
|
const startTime = new Date();
|
|
242
|
+
if (!skipCreatedAtUpdatedAtFieldValidation && !await this.ensureCreatedAtUpdatedAtFieldsExist(ds, excludeSchemas)) {
|
|
243
|
+
(0, logging_1.logError)(`Error ensuring ${core_1.EntityInfo.CreatedAtFieldName} and ${core_1.EntityInfo.UpdatedAtFieldName} fields exist`);
|
|
244
|
+
bSuccess = false;
|
|
245
|
+
}
|
|
246
|
+
(0, logging_1.logStatus)(` Ensured ${core_1.EntityInfo.CreatedAtFieldName}/${core_1.EntityInfo.UpdatedAtFieldName} fields exist in ${(new Date().getTime() - startTime.getTime()) / 1000} seconds`);
|
|
247
|
+
const step1StartTime = new Date();
|
|
230
248
|
if (!await this.deleteUnneededEntityFields(ds, excludeSchemas)) {
|
|
231
249
|
(0, logging_1.logError)('Error deleting unneeded entity fields');
|
|
232
250
|
bSuccess = false;
|
|
233
251
|
}
|
|
234
|
-
(0, logging_1.logStatus)(` Deleted unneeded entity fields in ${(new Date().getTime() -
|
|
252
|
+
(0, logging_1.logStatus)(` Deleted unneeded entity fields in ${(new Date().getTime() - step1StartTime.getTime()) / 1000} seconds`);
|
|
235
253
|
const step2StartTime = new Date();
|
|
236
254
|
if (!await this.updateExistingEntityFieldsFromSchema(ds, excludeSchemas)) {
|
|
237
255
|
(0, logging_1.logError)('Error updating existing entity fields from schema');
|
|
@@ -265,6 +283,126 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
265
283
|
(0, logging_1.logStatus)(` Total time to manage entity fields: ${(new Date().getTime() - startTime.getTime()) / 1000} seconds`);
|
|
266
284
|
return bSuccess;
|
|
267
285
|
}
|
|
286
|
+
/**
|
|
287
|
+
* This method ensures that the __mj_CreatedAt and __mj_UpdatedAt fields exist in each entity that has TrackRecordChanges set to true. If the fields do not exist, they are created.
|
|
288
|
+
* If the fields exist but have incorrect default values, the default values are updated. The default value that is to be used for these special fields is GETUTCDATE() which is the
|
|
289
|
+
* UTC date and time. This method is called as part of the manageEntityFields method and is not intended to be called directly.
|
|
290
|
+
* @param ds
|
|
291
|
+
*/
|
|
292
|
+
async ensureCreatedAtUpdatedAtFieldsExist(ds, excludeSchemas) {
|
|
293
|
+
try {
|
|
294
|
+
const sqlEntities = `SELECT * FROM [${(0, config_1.mj_core_schema)()}].vwEntities WHERE TrackRecordChanges = 1 AND SchemaName NOT IN (${excludeSchemas.map(s => `'${s}'`).join(',')})`;
|
|
295
|
+
const entities = await ds.query(sqlEntities);
|
|
296
|
+
let overallResult = true;
|
|
297
|
+
if (entities.length > 0) {
|
|
298
|
+
// we have 1+ entities that need the special fields, so loop through them and ensure the fields exist
|
|
299
|
+
// validate that each entity has two specific fields, the first one is __mj_CreatedAt and the second one is __mj_UpdatedAt
|
|
300
|
+
// both are DATETIME fields, NOT NULL and both are fields that have a DEFAULT value of GETUTCDATE().
|
|
301
|
+
for (const e of entities) {
|
|
302
|
+
const sqlCreatedUpdated = `SELECT *
|
|
303
|
+
FROM INFORMATION_SCHEMA.COLUMNS
|
|
304
|
+
WHERE
|
|
305
|
+
TABLE_SCHEMA='${e.SchemaName}'
|
|
306
|
+
AND TABLE_NAME = '${e.BaseTable}'
|
|
307
|
+
AND COLUMN_NAME IN ('${core_1.EntityInfo.CreatedAtFieldName}','${core_1.EntityInfo.UpdatedAtFieldName}')`;
|
|
308
|
+
const result = await ds.query(sqlCreatedUpdated);
|
|
309
|
+
// result has both created at and updated at fields, so filter on the result for each and do what we need to based on that
|
|
310
|
+
const createdAt = result.find(r => r.COLUMN_NAME.trim().toLowerCase() === core_1.EntityInfo.CreatedAtFieldName.trim().toLowerCase());
|
|
311
|
+
const updatedAt = result.find(r => r.COLUMN_NAME.trim().toLowerCase() === core_1.EntityInfo.UpdatedAtFieldName.trim().toLowerCase());
|
|
312
|
+
// now, if we have the fields, we need to check the default value and update if necessary
|
|
313
|
+
const fieldResult = await this.ensureSpecialDateFieldExistsAndHasCorrectDefaultValue(ds, e, core_1.EntityInfo.CreatedAtFieldName, createdAt) &&
|
|
314
|
+
await this.ensureSpecialDateFieldExistsAndHasCorrectDefaultValue(ds, e, core_1.EntityInfo.UpdatedAtFieldName, updatedAt);
|
|
315
|
+
overallResult = overallResult && fieldResult;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
return overallResult;
|
|
319
|
+
}
|
|
320
|
+
catch (e) {
|
|
321
|
+
(0, logging_1.logError)(e);
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* This method handles the validation of the existence of the specified special date field and if it does exist it makes sure the default value is set correctly, if it doesn't exist
|
|
327
|
+
* it makes sure that it is created. This method is called as part of the ensureCreatedAtUpdatedAtFieldsExist method and is not intended to be called directly.
|
|
328
|
+
* @param entity
|
|
329
|
+
* @param fieldName
|
|
330
|
+
* @param currentFieldData
|
|
331
|
+
*/
|
|
332
|
+
async ensureSpecialDateFieldExistsAndHasCorrectDefaultValue(ds, entity, fieldName, currentFieldData) {
|
|
333
|
+
if (!currentFieldData) {
|
|
334
|
+
// field doesn't exist, let's create it
|
|
335
|
+
const sql = `ALTER TABLE [${entity.SchemaName}].[${entity.BaseTable}] ADD ${fieldName} DATETIMEOFFSET NOT NULL DEFAULT GETUTCDATE()`;
|
|
336
|
+
await ds.query(sql);
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// field does exist, let's first check the data type/nullability
|
|
340
|
+
if (currentFieldData.DATA_TYPE.trim().toLowerCase() !== 'datetimeoffset' || currentFieldData.IS_NULLABLE.trim().toLowerCase() !== 'no') {
|
|
341
|
+
// the column is the wrong type, so let's update it, first removing the default constraint, then
|
|
342
|
+
// modifying the column, and finally adding the default constraint back in.
|
|
343
|
+
await this.dropExistingDefaultConstraint(ds, entity, fieldName);
|
|
344
|
+
const sql = `ALTER TABLE [${entity.SchemaName}].[${entity.BaseTable}] ALTER COLUMN ${fieldName} DATETIMEOFFSET NOT NULL`;
|
|
345
|
+
await ds.query(sql);
|
|
346
|
+
await this.createDefaultConstraintForSpecialDateField(ds, entity, fieldName);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
// if we get here that means the column is the correct type and nullability, so now let's check the default value
|
|
350
|
+
const defaultValue = currentFieldData.COLUMN_DEFAULT;
|
|
351
|
+
const realDefaultValue = (0, core_1.ExtractActualDefaultValue)(defaultValue);
|
|
352
|
+
if (realDefaultValue.trim().toLowerCase() !== 'getutcdate()') {
|
|
353
|
+
await this.dropAndCreateDefaultConstraintForSpecialDateField(ds, entity, fieldName);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// if we get here, we're good
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Creates the default constraint for a special date field. This method is called as part of the ensureSpecialDateFieldExistsAndHasCorrectDefaultValue method and is not intended to be called directly.
|
|
362
|
+
*/
|
|
363
|
+
async createDefaultConstraintForSpecialDateField(ds, entity, fieldName) {
|
|
364
|
+
const sqlAddDefaultConstraint = `ALTER TABLE [${entity.SchemaName}].[${entity.BaseTable}] ADD CONSTRAINT DF_${entity.SchemaName}_${(0, core_1.CodeNameFromString)(entity.BaseTable)}_${fieldName} DEFAULT GETUTCDATE() FOR [${fieldName}]`;
|
|
365
|
+
await ds.query(sqlAddDefaultConstraint);
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Drops and recreates the default constraint for a special date field. This method is called as part of the ensureSpecialDateFieldExistsAndHasCorrectDefaultValue method and is not intended to be called directly.
|
|
369
|
+
* @param ds
|
|
370
|
+
* @param entity
|
|
371
|
+
* @param fieldName
|
|
372
|
+
*/
|
|
373
|
+
async dropAndCreateDefaultConstraintForSpecialDateField(ds, entity, fieldName) {
|
|
374
|
+
// default value is not correct, so let's update it
|
|
375
|
+
await this.dropExistingDefaultConstraint(ds, entity, fieldName);
|
|
376
|
+
await this.createDefaultConstraintForSpecialDateField(ds, entity, fieldName);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Drops an existing default constraint from a given column within a given entity, if it exists
|
|
380
|
+
* @param ds
|
|
381
|
+
* @param entity
|
|
382
|
+
* @param fieldName
|
|
383
|
+
*/
|
|
384
|
+
async dropExistingDefaultConstraint(ds, entity, fieldName) {
|
|
385
|
+
const sqlDropDefaultConstraint = `
|
|
386
|
+
DECLARE @constraintName NVARCHAR(255);
|
|
387
|
+
|
|
388
|
+
-- Get the default constraint name
|
|
389
|
+
SELECT @constraintName = d.name
|
|
390
|
+
FROM sys.tables t
|
|
391
|
+
JOIN sys.schemas s ON t.schema_id = s.schema_id
|
|
392
|
+
JOIN sys.columns c ON t.object_id = c.object_id
|
|
393
|
+
JOIN sys.default_constraints d ON c.default_object_id = d.object_id
|
|
394
|
+
WHERE s.name = '${entity.SchemaName}'
|
|
395
|
+
AND t.name = '${entity.BaseTable}'
|
|
396
|
+
AND c.name = '${fieldName}';
|
|
397
|
+
|
|
398
|
+
-- Drop the default constraint if it exists
|
|
399
|
+
IF @constraintName IS NOT NULL
|
|
400
|
+
BEGIN
|
|
401
|
+
EXEC('ALTER TABLE [${entity.SchemaName}].[${entity.BaseTable}] DROP CONSTRAINT ' + @constraintName);
|
|
402
|
+
END
|
|
403
|
+
`;
|
|
404
|
+
await ds.query(sqlDropDefaultConstraint);
|
|
405
|
+
}
|
|
268
406
|
/**
|
|
269
407
|
* This method generates descriptions for entities in teh system where there is no existing description. This is an experimental feature and is done using AI. In order for it
|
|
270
408
|
* to be invoked, the EntityDescriptions feature must be enabled in the Advanced Generation configuration.
|
|
@@ -353,7 +491,7 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
353
491
|
for (const field of fields) {
|
|
354
492
|
const sDisplayName = this.stripTrailingChars(this.convertCamelCaseToHaveSpaces(field.Name), 'ID', true).trim();
|
|
355
493
|
if (sDisplayName.length > 0 && sDisplayName.toLowerCase().trim() !== field.Name.toLowerCase().trim()) {
|
|
356
|
-
const sSQL = `UPDATE [${(0, config_1.mj_core_schema)()}].EntityField SET
|
|
494
|
+
const sSQL = `UPDATE [${(0, config_1.mj_core_schema)()}].EntityField SET ${core_1.EntityInfo.UpdatedAtFieldName}=GETUTCDATE(), DisplayName = '${sDisplayName}' WHERE ID = ${field.ID}`;
|
|
357
495
|
await ds.query(sSQL);
|
|
358
496
|
}
|
|
359
497
|
}
|
|
@@ -400,8 +538,9 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
400
538
|
sf.AllowsNull,
|
|
401
539
|
sf.DefaultValue,
|
|
402
540
|
sf.AutoIncrement,
|
|
403
|
-
IIF(sf.IsVirtual = 1, 0, IIF(sf.FieldName = '
|
|
541
|
+
IIF(sf.IsVirtual = 1, 0, IIF(sf.FieldName = '${core_1.EntityInfo.CreatedAtFieldName}' OR sf.FieldName = '${core_1.EntityInfo.UpdatedAtFieldName}' OR sf.FieldName = 'ID', 0, 1)) AllowUpdateAPI,
|
|
404
542
|
sf.IsVirtual,
|
|
543
|
+
e.RelationshipDefaultDisplayType,
|
|
405
544
|
re.ID RelatedEntityID,
|
|
406
545
|
fk.referenced_column RelatedEntityFieldName,
|
|
407
546
|
IIF(sf.FieldName = 'Name', 1, 0) IsNameField,
|
|
@@ -468,6 +607,18 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
468
607
|
n.Sequence <= config_1.configInfo.newEntityDefaults?.IncludeFirstNFieldsAsDefaultInView ||
|
|
469
608
|
n.IsNameField ? true : false);
|
|
470
609
|
const escapedDescription = n.Description ? `'${n.Description.replace(/'/g, "''")}'` : 'NULL';
|
|
610
|
+
let fieldDisplayName;
|
|
611
|
+
switch (n.FieldName.trim().toLowerCase()) {
|
|
612
|
+
case "__mj_createdat":
|
|
613
|
+
fieldDisplayName = "Created At";
|
|
614
|
+
break;
|
|
615
|
+
case "__mj_updatedat":
|
|
616
|
+
fieldDisplayName = "Updated At";
|
|
617
|
+
break;
|
|
618
|
+
default:
|
|
619
|
+
fieldDisplayName = this.convertCamelCaseToHaveSpaces(n.FieldName).trim();
|
|
620
|
+
break;
|
|
621
|
+
}
|
|
471
622
|
return `
|
|
472
623
|
INSERT INTO [${(0, config_1.mj_core_schema)()}].EntityField
|
|
473
624
|
(
|
|
@@ -492,14 +643,15 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
492
643
|
IncludeRelatedEntityNameFieldInBaseView,
|
|
493
644
|
DefaultInView,
|
|
494
645
|
IsPrimaryKey,
|
|
495
|
-
IsUnique
|
|
646
|
+
IsUnique,
|
|
647
|
+
RelatedEntityDisplayType
|
|
496
648
|
)
|
|
497
649
|
VALUES
|
|
498
650
|
(
|
|
499
651
|
${n.EntityID},
|
|
500
652
|
${n.Sequence},
|
|
501
653
|
'${n.FieldName}',
|
|
502
|
-
'${
|
|
654
|
+
'${fieldDisplayName}',
|
|
503
655
|
${escapedDescription},
|
|
504
656
|
'${n.Type}',
|
|
505
657
|
${n.Length},
|
|
@@ -517,7 +669,8 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
517
669
|
${n.RelatedEntityID && n.RelatedEntityID > 0 && n.Type.trim().toLowerCase() === 'int' ? 1 : 0},
|
|
518
670
|
${bDefaultInView ? 1 : 0},
|
|
519
671
|
${n.IsPrimaryKey},
|
|
520
|
-
${n.IsUnique}
|
|
672
|
+
${n.IsUnique},
|
|
673
|
+
'${n.RelationshipDefaultDisplayType}'
|
|
521
674
|
)`;
|
|
522
675
|
}
|
|
523
676
|
/**
|
|
@@ -629,7 +782,7 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
629
782
|
// now, for each of the constraints we get back here, loop through and evaluate if they're simple and if they're simple, parse and sync with entity field values for that field
|
|
630
783
|
for (const r of result) {
|
|
631
784
|
if (r.ConstraintDefinition && r.ConstraintDefinition.length > 0) {
|
|
632
|
-
const parsedValues = this.parseCheckConstraintValues(r.ConstraintDefinition, r.ColumnName);
|
|
785
|
+
const parsedValues = this.parseCheckConstraintValues(r.ConstraintDefinition, r.ColumnName, r.EntityName);
|
|
633
786
|
if (parsedValues) {
|
|
634
787
|
// flip the order of parsedValues because they come out in reverse order from SQL Server
|
|
635
788
|
parsedValues.reverse();
|
|
@@ -696,14 +849,14 @@ let ManageMetadataBase = ManageMetadataBase_1 = class ManageMetadataBase {
|
|
|
696
849
|
return false;
|
|
697
850
|
}
|
|
698
851
|
}
|
|
699
|
-
parseCheckConstraintValues(constraintDefinition, fieldName) {
|
|
852
|
+
parseCheckConstraintValues(constraintDefinition, fieldName, entityName) {
|
|
700
853
|
// This regex checks for the overall structure including field name and 'OR' sequences
|
|
701
854
|
// an example of a valid constraint definition would be: ([FieldName]='Value1' OR [FieldName]='Value2' OR [FieldName]='Value3')
|
|
702
855
|
// like: ([AutoRunIntervalUnits]='Years' OR [AutoRunIntervalUnits]='Months' OR [AutoRunIntervalUnits]='Weeks' OR [AutoRunIntervalUnits]='Days' OR [AutoRunIntervalUnits]='Hours' OR [AutoRunIntervalUnits]='Minutes')
|
|
703
856
|
// Note: Assuming fieldName does not contain regex special characters; otherwise, it needs to be escaped as well.
|
|
704
857
|
const structureRegex = new RegExp(`^\\(\\[${fieldName}\\]='[^']+'(?: OR \\[${fieldName}\\]='[^']+?')+\\)$`);
|
|
705
858
|
if (!structureRegex.test(constraintDefinition)) {
|
|
706
|
-
|
|
859
|
+
(0, logging_1.logWarning)(` [${entityName}].[${fieldName}] constraint does not match the simple OR condition pattern or field name does not match: ${constraintDefinition}`);
|
|
707
860
|
return null;
|
|
708
861
|
}
|
|
709
862
|
// Regular expression to match the values within the single quotes specifically for the field
|
|
@@ -1045,4 +1198,4 @@ ManageMetadataBase._newEntityList = [];
|
|
|
1045
1198
|
exports.ManageMetadataBase = ManageMetadataBase = ManageMetadataBase_1 = __decorate([
|
|
1046
1199
|
(0, global_1.RegisterClass)(ManageMetadataBase)
|
|
1047
1200
|
], ManageMetadataBase);
|
|
1048
|
-
//# sourceMappingURL=
|
|
1201
|
+
//# sourceMappingURL=manage-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manage-metadata.js","sourceRoot":"","sources":["../../src/Database/manage-metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/Database/sql.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAY,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMrC;;GAEG;AACH,qBACa,cAAc;IAC3B;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,2BAA2B,EACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,OAAO,GAAG,MAAM;IAKpD,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B3G,uBAAuB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBxG,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtF,gBAAgB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CA6BvG"}
|
|
@@ -10,12 +10,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.SQLUtilityBase = void 0;
|
|
13
|
-
const logging_1 = require("
|
|
13
|
+
const logging_1 = require("../Misc/logging");
|
|
14
14
|
const fs_1 = __importDefault(require("fs"));
|
|
15
15
|
const path_1 = __importDefault(require("path"));
|
|
16
16
|
const core_1 = require("@memberjunction/core");
|
|
17
|
-
const config_1 = require("
|
|
18
|
-
const
|
|
17
|
+
const config_1 = require("../Config/config");
|
|
18
|
+
const manage_metadata_1 = require("../Database/manage-metadata");
|
|
19
19
|
const global_1 = require("@memberjunction/global");
|
|
20
20
|
/**
|
|
21
21
|
* Base class for SQL Utility functions, you can sub-class this class to create your own SQL Utility functions/override existing functionality.
|
|
@@ -47,7 +47,7 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
47
47
|
if (e.BaseViewGenerated && // only do this for entities that have a base view generated
|
|
48
48
|
e.IncludeInAPI && // only do this for entities that are included in the API
|
|
49
49
|
!e.VirtualEntity && // do not include virtual entities
|
|
50
|
-
!
|
|
50
|
+
!manage_metadata_1.ManageMetadataBase.newEntityList.includes(e.Name)) {
|
|
51
51
|
// only do this if base view generated and for NON-virtual entities,
|
|
52
52
|
// custom base views should be defined in the BEFORE SQL Scripts
|
|
53
53
|
// and NOT for newly created entities
|
|
@@ -58,7 +58,7 @@ let SQLUtilityBase = class SQLUtilityBase {
|
|
|
58
58
|
if (!bSuccess) {
|
|
59
59
|
// temp thing for debug, let's dump the new entity list to see what's up
|
|
60
60
|
console.warn('New Entity List:');
|
|
61
|
-
console.warn(' ' +
|
|
61
|
+
console.warn(' ' + manage_metadata_1.ManageMetadataBase.newEntityList.join('\n '));
|
|
62
62
|
}
|
|
63
63
|
return bSuccess;
|
|
64
64
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/Database/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql_codegen.d.ts","sourceRoot":"","sources":["../../src/Database/sql_codegen.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,14 +34,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
35
|
exports.SQLCodeGenBase = exports.SPType = void 0;
|
|
36
36
|
const core_1 = require("@memberjunction/core");
|
|
37
|
-
const logging_1 = require("
|
|
37
|
+
const logging_1 = require("../Misc/logging");
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const path_1 = __importDefault(require("path"));
|
|
40
40
|
const sql_1 = require("./sql");
|
|
41
|
-
const config_1 = require("
|
|
42
|
-
const
|
|
41
|
+
const config_1 = require("../Config/config");
|
|
42
|
+
const manage_metadata_1 = require("./manage-metadata");
|
|
43
43
|
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
44
|
-
const util_1 = require("
|
|
44
|
+
const util_1 = require("../Misc/util");
|
|
45
45
|
const global_1 = require("@memberjunction/global");
|
|
46
46
|
exports.SPType = {
|
|
47
47
|
Create: 'Create',
|
|
@@ -88,9 +88,9 @@ let SQLCodeGenBase = class SQLCodeGenBase {
|
|
|
88
88
|
(0, logging_1.logStatus)(` Time to Generate/Execute Entity SQL: ${(new Date().getTime() - step2StartTime.getTime()) / 1000} seconds`);
|
|
89
89
|
// now that we've generated the SQL, let's create a combined file in each schema sub-directory for convenience for a DBA
|
|
90
90
|
this.createCombinedEntitySQLFiles(directory, baselineEntities);
|
|
91
|
-
const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(
|
|
91
|
+
const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(manage_metadata_1.ManageMetadataBase);
|
|
92
92
|
// STEP 3 - re-run the process to manage entity fields since the Step 1 and 2 above might have resulted in differences in base view columns compared to what we had at first
|
|
93
|
-
if (!await manageMD.manageEntityFields(ds, config_1.configInfo.excludeSchemas)) {
|
|
93
|
+
if (!await manageMD.manageEntityFields(ds, config_1.configInfo.excludeSchemas, true)) {
|
|
94
94
|
(0, logging_1.logError)('Error managing entity fields');
|
|
95
95
|
return false;
|
|
96
96
|
}
|
|
@@ -596,7 +596,7 @@ GO${permissions}
|
|
|
596
596
|
async generateBaseViewRelatedFieldsString(ds, entityFields) {
|
|
597
597
|
let sOutput = '';
|
|
598
598
|
let fieldCount = 0;
|
|
599
|
-
const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(
|
|
599
|
+
const manageMD = global_1.MJGlobal.Instance.ClassFactory.CreateInstance(manage_metadata_1.ManageMetadataBase);
|
|
600
600
|
for (let i = 0; i < entityFields.length; i++) {
|
|
601
601
|
const ef = entityFields[i];
|
|
602
602
|
if (ef.RelatedEntityID && ef.IncludeRelatedEntityNameFieldInBaseView) {
|
|
@@ -727,14 +727,16 @@ GO${permissions}
|
|
|
727
727
|
`;
|
|
728
728
|
}
|
|
729
729
|
generateUpdatedAtTrigger(entity) {
|
|
730
|
-
const updatedAtField = entity.Fields.find(f => f.Name.toLowerCase().trim() ===
|
|
730
|
+
const updatedAtField = entity.Fields.find(f => f.Name.toLowerCase().trim() === core_1.EntityInfo.UpdatedAtFieldName.toLowerCase().trim());
|
|
731
731
|
if (!updatedAtField)
|
|
732
732
|
return '';
|
|
733
733
|
const triggerStatement = `
|
|
734
734
|
------------------------------------------------------------
|
|
735
|
-
----- TRIGGER FOR
|
|
735
|
+
----- TRIGGER FOR ${core_1.EntityInfo.UpdatedAtFieldName} field for the ${entity.BaseTable} table
|
|
736
736
|
------------------------------------------------------------
|
|
737
|
-
|
|
737
|
+
DROP TRIGGER IF EXISTS [${entity.SchemaName}].trgUpdate${entity.ClassName}
|
|
738
|
+
GO
|
|
739
|
+
CREATE TRIGGER [${entity.SchemaName}].trgUpdate${entity.ClassName}
|
|
738
740
|
ON [${entity.SchemaName}].[${entity.BaseTable}]
|
|
739
741
|
AFTER UPDATE
|
|
740
742
|
AS
|
|
@@ -743,7 +745,7 @@ BEGIN
|
|
|
743
745
|
UPDATE
|
|
744
746
|
[${entity.SchemaName}].[${entity.BaseTable}]
|
|
745
747
|
SET
|
|
746
|
-
|
|
748
|
+
${core_1.EntityInfo.UpdatedAtFieldName} = GETUTCDATE()
|
|
747
749
|
FROM
|
|
748
750
|
[${entity.SchemaName}].[${entity.BaseTable}] AS _organicTable
|
|
749
751
|
INNER JOIN
|
|
@@ -757,7 +759,7 @@ GO`;
|
|
|
757
759
|
const spName = entity.spUpdate ? entity.spUpdate : `spUpdate${entity.ClassName}`;
|
|
758
760
|
const efParamString = this.createEntityFieldsParamString(entity.Fields, true);
|
|
759
761
|
const permissions = this.generateSPPermissions(entity, spName, exports.SPType.Update);
|
|
760
|
-
const hasUpdatedAtField = entity.Fields.find(f => f.Name.toLowerCase().trim() ===
|
|
762
|
+
const hasUpdatedAtField = entity.Fields.find(f => f.Name.toLowerCase().trim() === core_1.EntityInfo.UpdatedAtFieldName.trim().toLowerCase()) !== undefined;
|
|
761
763
|
const updatedAtTrigger = hasUpdatedAtField ? this.generateUpdatedAtTrigger(entity) : '';
|
|
762
764
|
let selectInsertedRecord = `SELECT
|
|
763
765
|
*
|
|
@@ -802,8 +804,7 @@ ${updatedAtTrigger}
|
|
|
802
804
|
if ((ef.AllowUpdateAPI || (ef.IsPrimaryKey && isUpdate)) &&
|
|
803
805
|
!ef.IsVirtual &&
|
|
804
806
|
(!ef.IsPrimaryKey || !autoGeneratedPrimaryKey || isUpdate) &&
|
|
805
|
-
ef.
|
|
806
|
-
ef.Name.toLowerCase().trim() !== 'createdat') {
|
|
807
|
+
!ef.IsSpecialDateField) {
|
|
807
808
|
if (!isFirst)
|
|
808
809
|
sOutput += ',\n ';
|
|
809
810
|
else
|
|
@@ -827,9 +828,8 @@ ${updatedAtTrigger}
|
|
|
827
828
|
sOutput += ',\n ';
|
|
828
829
|
else
|
|
829
830
|
isFirst = false;
|
|
830
|
-
if (prefix !== '' &&
|
|
831
|
-
|
|
832
|
-
sOutput += `GETDATE()`;
|
|
831
|
+
if (prefix !== '' && ef.IsSpecialDateField)
|
|
832
|
+
sOutput += `GETUTCDATE()`;
|
|
833
833
|
else {
|
|
834
834
|
let sVal = prefix + (prefix !== '' ? ef.CodeName : ef.Name); // if we have a prefix, then we need to use the CodeName, otherwise we use the actual field name
|
|
835
835
|
if (!prefix || prefix.length === 0)
|
|
@@ -845,11 +845,10 @@ ${updatedAtTrigger}
|
|
|
845
845
|
for (let i = 0; i < entityFields.length; ++i) {
|
|
846
846
|
const ef = entityFields[i];
|
|
847
847
|
if (!ef.IsPrimaryKey &&
|
|
848
|
-
ef.IsVirtual
|
|
848
|
+
!ef.IsVirtual &&
|
|
849
849
|
ef.AllowUpdateAPI &&
|
|
850
|
-
ef.AutoIncrement
|
|
851
|
-
ef.
|
|
852
|
-
ef.Name.toLowerCase().trim() !== 'updatedat' &&
|
|
850
|
+
!ef.AutoIncrement &&
|
|
851
|
+
!ef.IsSpecialDateField &&
|
|
853
852
|
ef.Type.toLowerCase().trim() !== 'uniqueidentifier') {
|
|
854
853
|
if (!isFirst)
|
|
855
854
|
sOutput += ',\n ';
|
|
@@ -857,15 +856,6 @@ ${updatedAtTrigger}
|
|
|
857
856
|
isFirst = false;
|
|
858
857
|
sOutput += `[${ef.Name}] = @${ef.CodeName}`; // always put field names in brackets for field names that have spaces or use reserved words. Also, we use CodeName for the param name, which is the field name unless it has spaces
|
|
859
858
|
}
|
|
860
|
-
// AN - 11 JUNE 2024
|
|
861
|
-
// below is commented out because we now do this via TRIGGER - see calling code for this function for more info
|
|
862
|
-
// else if (ef.Name.trim().toLowerCase() === 'updatedat') {
|
|
863
|
-
// if (!isFirst)
|
|
864
|
-
// sOutput += ',\n '
|
|
865
|
-
// else
|
|
866
|
-
// isFirst = false;
|
|
867
|
-
// sOutput += `[${ef.Name}] = GETDATE()`;
|
|
868
|
-
// }
|
|
869
859
|
}
|
|
870
860
|
return sOutput;
|
|
871
861
|
}
|