@memberjunction/codegen-lib 6.1.0-edge.6 → 6.1.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.
Files changed (56) hide show
  1. package/dist/Config/config.d.ts +22 -37
  2. package/dist/Config/config.d.ts.map +1 -1
  3. package/dist/Config/config.js +35 -12
  4. package/dist/Config/config.js.map +1 -1
  5. package/dist/Database/codeGenDatabaseProvider.d.ts +45 -0
  6. package/dist/Database/codeGenDatabaseProvider.d.ts.map +1 -1
  7. package/dist/Database/codeGenDatabaseProvider.js +12 -0
  8. package/dist/Database/codeGenDatabaseProvider.js.map +1 -1
  9. package/dist/Database/manage-metadata.d.ts +34 -2
  10. package/dist/Database/manage-metadata.d.ts.map +1 -1
  11. package/dist/Database/manage-metadata.js +72 -61
  12. package/dist/Database/manage-metadata.js.map +1 -1
  13. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts +8 -0
  14. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.d.ts.map +1 -1
  15. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js +24 -2
  16. package/dist/Database/providers/postgresql/PostgreSQLCodeGenProvider.js.map +1 -1
  17. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts +46 -1
  18. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.d.ts.map +1 -1
  19. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js +128 -7
  20. package/dist/Database/providers/sqlserver/SQLServerCodeGenProvider.js.map +1 -1
  21. package/dist/Database/reconcileFieldLevelSecurity.d.ts +22 -0
  22. package/dist/Database/reconcileFieldLevelSecurity.d.ts.map +1 -0
  23. package/dist/Database/reconcileFieldLevelSecurity.js +47 -0
  24. package/dist/Database/reconcileFieldLevelSecurity.js.map +1 -0
  25. package/dist/Database/sql_codegen.d.ts +25 -0
  26. package/dist/Database/sql_codegen.d.ts.map +1 -1
  27. package/dist/Database/sql_codegen.js +99 -0
  28. package/dist/Database/sql_codegen.js.map +1 -1
  29. package/dist/Misc/advanced_generation.d.ts +10 -0
  30. package/dist/Misc/advanced_generation.d.ts.map +1 -1
  31. package/dist/Misc/advanced_generation.js +35 -0
  32. package/dist/Misc/advanced_generation.js.map +1 -1
  33. package/dist/Misc/graphql_server_codegen.d.ts +39 -0
  34. package/dist/Misc/graphql_server_codegen.d.ts.map +1 -1
  35. package/dist/Misc/graphql_server_codegen.js +51 -4
  36. package/dist/Misc/graphql_server_codegen.js.map +1 -1
  37. package/dist/Misc/remote_operations_codegen.d.ts +36 -1
  38. package/dist/Misc/remote_operations_codegen.d.ts.map +1 -1
  39. package/dist/Misc/remote_operations_codegen.js +174 -5
  40. package/dist/Misc/remote_operations_codegen.js.map +1 -1
  41. package/dist/index.d.ts +0 -2
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +0 -2
  44. package/dist/index.js.map +1 -1
  45. package/dist/runCodeGen.d.ts.map +1 -1
  46. package/dist/runCodeGen.js +94 -13
  47. package/dist/runCodeGen.js.map +1 -1
  48. package/package.json +29 -29
  49. package/dist/Database/decision-metadata-format.d.ts +0 -124
  50. package/dist/Database/decision-metadata-format.d.ts.map +0 -1
  51. package/dist/Database/decision-metadata-format.js +0 -279
  52. package/dist/Database/decision-metadata-format.js.map +0 -1
  53. package/dist/Database/decision-metadata-writer.d.ts +0 -48
  54. package/dist/Database/decision-metadata-writer.d.ts.map +0 -1
  55. package/dist/Database/decision-metadata-writer.js +0 -482
  56. package/dist/Database/decision-metadata-writer.js.map +0 -1
@@ -1,482 +0,0 @@
1
- import fs from 'fs-extra';
2
- import path from 'path';
3
- import { BaseSingleton, ordinalCompare } from '@memberjunction/global';
4
- import { configInfo, outputDir } from '../Config/config.js';
5
- import { CodeGenReporter } from '../Misc/codegen-reporter.js';
6
- import { ALLOWED_ENTITY_DECISION_COLUMNS, ALLOWED_FIELD_DECISION_COLUMNS, ALLOWED_SETTING_DECISION_NAMES, ALLOWED_APP_ENTITY_DECISION_COLUMNS, DISALLOWED_COLUMNS, buildDecisionComments, buildEntityLookup, buildFieldLookup, buildSettingLookup, buildAppEntityLookup, getDecisionFileName, formatDecisionRecordData, writeIfChanged } from './decision-metadata-format.js';
7
- import { canonicalJSONStringify } from '../Misc/util.js';
8
- /**
9
- * Singleton writer that collects CodeGen decision outputs (field categories,
10
- * display names, extended types, search flags, name fields, entity icons, etc.)
11
- * during a run and persists them as declarative JSON records under
12
- * metadata/entities/decisions/.
13
- */
14
- export class DecisionMetadataWriter extends BaseSingleton {
15
- constructor() {
16
- super();
17
- this._warnedMissingDir = false;
18
- this.droppedDisallowedColumnCount = 0;
19
- this.recordsRemovedCount = 0;
20
- this.recordsUnchangedCount = 0;
21
- this.recordsWrittenCount = 0;
22
- this.recordsSkippedCount = 0;
23
- // In-memory decision buffers keyed by normalized entity name
24
- this._entityDecisions = new Map();
25
- this._fieldDecisions = new Map();
26
- this._settingDecisions = new Map();
27
- this._appEntityDecisions = new Map();
28
- this._configOwnedEntityColumns = null;
29
- this._configOwnedFieldColumns = null;
30
- this._loggedConflicts = new Set();
31
- }
32
- static get Instance() {
33
- return super.getInstance();
34
- }
35
- clear() {
36
- this._warnedMissingDir = false;
37
- this.droppedDisallowedColumnCount = 0;
38
- this.recordsRemovedCount = 0;
39
- this.recordsUnchangedCount = 0;
40
- this.recordsWrittenCount = 0;
41
- this.recordsSkippedCount = 0;
42
- this._entityDecisions.clear();
43
- this._fieldDecisions.clear();
44
- this._settingDecisions.clear();
45
- this._appEntityDecisions.clear();
46
- this._configOwnedEntityColumns = null;
47
- this._configOwnedFieldColumns = null;
48
- this._loggedConflicts.clear();
49
- }
50
- ensureConfigOwnedColumnsLoaded() {
51
- if (this._configOwnedEntityColumns !== null)
52
- return;
53
- this._configOwnedEntityColumns = new Map();
54
- this._configOwnedFieldColumns = new Map();
55
- if (!configInfo.additionalSchemaInfo)
56
- return;
57
- const configPath = path.isAbsolute(configInfo.additionalSchemaInfo)
58
- ? configInfo.additionalSchemaInfo
59
- : path.join(process.cwd(), configInfo.additionalSchemaInfo);
60
- if (!fs.existsSync(configPath))
61
- return;
62
- try {
63
- const raw = fs.readFileSync(configPath, 'utf8');
64
- const config = JSON.parse(raw);
65
- this.loadConfigOwnedColumns(config);
66
- }
67
- catch {
68
- // ignore parse errors
69
- }
70
- }
71
- loadConfigOwnedColumns(config) {
72
- if (!this._configOwnedEntityColumns)
73
- this._configOwnedEntityColumns = new Map();
74
- if (!this._configOwnedFieldColumns)
75
- this._configOwnedFieldColumns = new Map();
76
- // 1. Entities[]
77
- const entities = Array.isArray(config.Entities) ? config.Entities : [];
78
- const reservedKeys = new Set(['basetable', 'schemaname', 'entityname', 'tablename']);
79
- for (const ec of entities) {
80
- if (typeof ec === 'object' && ec !== null) {
81
- const rec = ec;
82
- const entityKey = String(rec.EntityName ?? rec.BaseTable ?? '').trim().toLowerCase();
83
- if (entityKey) {
84
- let cols = this._configOwnedEntityColumns.get(entityKey);
85
- if (!cols) {
86
- cols = new Set();
87
- this._configOwnedEntityColumns.set(entityKey, cols);
88
- }
89
- for (const k of Object.keys(rec)) {
90
- if (!reservedKeys.has(k.toLowerCase())) {
91
- cols.add(k.toLowerCase());
92
- }
93
- }
94
- }
95
- }
96
- }
97
- // 2. PrimaryKey & ForeignKeys from Tables or Schema-as-key
98
- const tableConfigs = [];
99
- if (Array.isArray(config.Tables)) {
100
- tableConfigs.push(...config.Tables);
101
- }
102
- for (const [key, val] of Object.entries(config)) {
103
- if (key !== 'Tables' && key !== 'Entities' && key !== 'Schemas' && Array.isArray(val)) {
104
- tableConfigs.push(...val);
105
- }
106
- }
107
- for (const tc of tableConfigs) {
108
- const entityKey = String(tc.TableName ?? '').trim().toLowerCase();
109
- if (!entityKey)
110
- continue;
111
- let eMap = this._configOwnedFieldColumns.get(entityKey);
112
- if (!eMap) {
113
- eMap = new Map();
114
- this._configOwnedFieldColumns.set(entityKey, eMap);
115
- }
116
- if (Array.isArray(tc.PrimaryKey)) {
117
- for (const pk of tc.PrimaryKey) {
118
- const fKey = String(pk.FieldName ?? '').trim().toLowerCase();
119
- if (!fKey)
120
- continue;
121
- let cols = eMap.get(fKey);
122
- if (!cols) {
123
- cols = new Set();
124
- eMap.set(fKey, cols);
125
- }
126
- cols.add('isprimarykey');
127
- cols.add('issoftprimarykey');
128
- }
129
- }
130
- if (Array.isArray(tc.ForeignKeys)) {
131
- for (const fk of tc.ForeignKeys) {
132
- const fKey = String(fk.FieldName ?? '').trim().toLowerCase();
133
- if (!fKey)
134
- continue;
135
- let cols = eMap.get(fKey);
136
- if (!cols) {
137
- cols = new Set();
138
- eMap.set(fKey, cols);
139
- }
140
- cols.add('relatedentityid');
141
- cols.add('relatedentityfieldname');
142
- cols.add('issoftforeignkey');
143
- cols.add('autoupdaterelatedentityinfo');
144
- }
145
- }
146
- }
147
- }
148
- isEntityColumnOwnedByConfig(entityName, column) {
149
- this.ensureConfigOwnedColumnsLoaded();
150
- if (!this._configOwnedEntityColumns)
151
- return false;
152
- const nameLower = (entityName ?? '').trim().toLowerCase();
153
- const baseLower = nameLower.includes(':') ? nameLower.split(':').pop().trim() : nameLower;
154
- const cols = this._configOwnedEntityColumns.get(nameLower) ?? this._configOwnedEntityColumns.get(baseLower);
155
- return cols ? cols.has(column.toLowerCase()) : false;
156
- }
157
- isFieldColumnOwnedByConfig(entityName, fieldName, column) {
158
- this.ensureConfigOwnedColumnsLoaded();
159
- if (!this._configOwnedFieldColumns)
160
- return false;
161
- const nameLower = (entityName ?? '').trim().toLowerCase();
162
- const baseLower = nameLower.includes(':') ? nameLower.split(':').pop().trim() : nameLower;
163
- const eMap = this._configOwnedFieldColumns.get(nameLower) ?? this._configOwnedFieldColumns.get(baseLower);
164
- if (!eMap)
165
- return false;
166
- const cols = eMap.get((fieldName ?? '').trim().toLowerCase());
167
- return cols ? cols.has(column.toLowerCase()) : false;
168
- }
169
- logConfigConflictOnce(entityName, fieldName, column) {
170
- const key = `${entityName}:${fieldName ?? ''}:${column}`.toLowerCase();
171
- if (!this._loggedConflicts.has(key)) {
172
- this._loggedConflicts.add(key);
173
- const target = fieldName ? `${entityName}.${fieldName}.${column}` : `${entityName}.${column}`;
174
- console.warn(`[DecisionMetadataWriter] Skipping '${target}' owned by additionalSchemaInfo config.`);
175
- }
176
- }
177
- // ─── Recording API ──────────────────────────────────────────────────────────
178
- recordEntityDecision(entityName, column, value) {
179
- if (DISALLOWED_COLUMNS.has(column)) {
180
- this.droppedDisallowedColumnCount++;
181
- return;
182
- }
183
- if (!ALLOWED_ENTITY_DECISION_COLUMNS.has(column)) {
184
- return;
185
- }
186
- if (this.isEntityColumnOwnedByConfig(entityName, column)) {
187
- this.logConfigConflictOnce(entityName, undefined, column);
188
- this.recordsSkippedCount++;
189
- CodeGenReporter.Instance.counter('metadata.decisionRecordsSkipped', 1);
190
- return;
191
- }
192
- const key = (entityName ?? '').trim();
193
- if (!key)
194
- return;
195
- let map = this._entityDecisions.get(key);
196
- if (!map) {
197
- map = new Map();
198
- this._entityDecisions.set(key, map);
199
- }
200
- map.set(column, value);
201
- }
202
- recordFieldDecision(entityName, fieldName, column, value) {
203
- if (DISALLOWED_COLUMNS.has(column)) {
204
- this.droppedDisallowedColumnCount++;
205
- return;
206
- }
207
- if (!ALLOWED_FIELD_DECISION_COLUMNS.has(column)) {
208
- return;
209
- }
210
- if (this.isFieldColumnOwnedByConfig(entityName, fieldName, column)) {
211
- this.logConfigConflictOnce(entityName, fieldName, column);
212
- this.recordsSkippedCount++;
213
- CodeGenReporter.Instance.counter('metadata.decisionRecordsSkipped', 1);
214
- return;
215
- }
216
- const eKey = (entityName ?? '').trim();
217
- const fKey = (fieldName ?? '').trim();
218
- if (!eKey || !fKey)
219
- return;
220
- let eMap = this._fieldDecisions.get(eKey);
221
- if (!eMap) {
222
- eMap = new Map();
223
- this._fieldDecisions.set(eKey, eMap);
224
- }
225
- let fMap = eMap.get(fKey);
226
- if (!fMap) {
227
- fMap = new Map();
228
- eMap.set(fKey, fMap);
229
- }
230
- fMap.set(column, value);
231
- }
232
- recordEntitySetting(entityName, settingName, value) {
233
- if (!ALLOWED_SETTING_DECISION_NAMES.has(settingName)) {
234
- return;
235
- }
236
- const eKey = (entityName ?? '').trim();
237
- const sKey = (settingName ?? '').trim();
238
- if (!eKey || !sKey)
239
- return;
240
- let map = this._settingDecisions.get(eKey);
241
- if (!map) {
242
- map = new Map();
243
- this._settingDecisions.set(eKey, map);
244
- }
245
- map.set(sKey, value);
246
- }
247
- recordApplicationEntityDecision(entityName, appName, column, value) {
248
- if (!ALLOWED_APP_ENTITY_DECISION_COLUMNS.has(column)) {
249
- return;
250
- }
251
- const eKey = (entityName ?? '').trim();
252
- const aKey = (appName ?? '').trim();
253
- if (!eKey || !aKey)
254
- return;
255
- let eMap = this._appEntityDecisions.get(eKey);
256
- if (!eMap) {
257
- eMap = new Map();
258
- this._appEntityDecisions.set(eKey, eMap);
259
- }
260
- let aMap = eMap.get(aKey);
261
- if (!aMap) {
262
- aMap = new Map();
263
- eMap.set(aKey, aMap);
264
- }
265
- aMap.set(column, value);
266
- }
267
- // ─── Directory Resolution & Persistence ────────────────────────────────────
268
- resolveDecisionsDirectory() {
269
- const enabledSetting = configInfo.decisionMetadata?.enabled;
270
- if (enabledSetting === false) {
271
- return null;
272
- }
273
- const metaDir = outputDir('MetadataSync', false) ?? (configInfo.metadataDirectory ? path.resolve(process.cwd(), configInfo.metadataDirectory) : null);
274
- if (!metaDir) {
275
- if (!this._warnedMissingDir) {
276
- console.warn(`[DecisionMetadataWriter] No 'MetadataSync' output entry found in config. Decision metadata writes disabled.`);
277
- this._warnedMissingDir = true;
278
- }
279
- return null;
280
- }
281
- const resolvedMetaDir = path.resolve(metaDir);
282
- const entitiesDir = path.join(resolvedMetaDir, 'entities');
283
- const syncConfigPath = path.join(entitiesDir, '.mj-sync.json');
284
- if (!fs.existsSync(syncConfigPath)) {
285
- if (!this._warnedMissingDir) {
286
- console.warn(`[DecisionMetadataWriter] Metadata directory '${entitiesDir}' lacks .mj-sync.json. Decision metadata writes disabled.`);
287
- this._warnedMissingDir = true;
288
- }
289
- return null;
290
- }
291
- return path.join(entitiesDir, 'decisions');
292
- }
293
- /**
294
- * Flush pending decision metadata for an entity to disk.
295
- */
296
- async flushEntity(entity) {
297
- const entityName = (entity.Name ?? '').trim();
298
- const schemaName = (entity.SchemaName ?? 'dbo').trim();
299
- if (!entityName)
300
- return;
301
- const decisionsDir = this.resolveDecisionsDirectory();
302
- if (!decisionsDir) {
303
- // Record skipped decisions
304
- const fieldDecs = this._fieldDecisions.get(entityName);
305
- const entityDecs = this._entityDecisions.get(entityName);
306
- const settingDecs = this._settingDecisions.get(entityName);
307
- const appDecs = this._appEntityDecisions.get(entityName);
308
- const totalDecisions = (fieldDecs?.size ?? 0) + (entityDecs ? 1 : 0) + (settingDecs?.size ?? 0) + (appDecs?.size ?? 0);
309
- if (totalDecisions > 0) {
310
- this.recordsSkippedCount += totalDecisions;
311
- CodeGenReporter.Instance.counter('metadata.decisionRecordsSkipped', totalDecisions);
312
- }
313
- return;
314
- }
315
- const fileName = getDecisionFileName(schemaName, entityName);
316
- const filePath = path.join(decisionsDir, fileName);
317
- const fileExists = await fs.pathExists(filePath);
318
- const hasEntityDecs = this._entityDecisions.has(entityName);
319
- const hasFieldDecs = this._fieldDecisions.has(entityName);
320
- const hasSettingDecs = this._settingDecisions.has(entityName);
321
- const hasAppDecs = this._appEntityDecisions.has(entityName);
322
- const hasAnyDecisions = hasEntityDecs || hasFieldDecs || hasSettingDecs || hasAppDecs;
323
- // Rule: a run that decides nothing writes nothing if no file exists
324
- if (!hasAnyDecisions && !fileExists) {
325
- return;
326
- }
327
- let records = [];
328
- if (fileExists) {
329
- try {
330
- const parsed = await fs.readJson(filePath);
331
- records = Array.isArray(parsed) ? parsed : [parsed];
332
- }
333
- catch {
334
- records = [];
335
- }
336
- }
337
- let mainRecord;
338
- if (records.length > 0) {
339
- mainRecord = records[0];
340
- if (!mainRecord.fields)
341
- mainRecord.fields = { Name: entityName };
342
- if (!mainRecord.primaryKey)
343
- mainRecord.primaryKey = { ID: buildEntityLookup(entityName) };
344
- }
345
- else {
346
- mainRecord = {
347
- _comments: buildDecisionComments(entityName, schemaName),
348
- fields: { Name: entityName },
349
- primaryKey: { ID: buildEntityLookup(entityName) },
350
- relatedEntities: {}
351
- };
352
- records = [mainRecord];
353
- }
354
- // Apply entity decisions
355
- const entityDecMap = this._entityDecisions.get(entityName);
356
- if (entityDecMap) {
357
- for (const [col, val] of entityDecMap) {
358
- mainRecord.fields[col] = val;
359
- }
360
- }
361
- if (!mainRecord.relatedEntities) {
362
- mainRecord.relatedEntities = {};
363
- }
364
- // Handle MJ: Entity Fields
365
- let existingFieldRecords = mainRecord.relatedEntities['MJ: Entity Fields'] ?? [];
366
- const validFieldNamesLower = new Set(entity.Fields.map(f => (f.Name ?? '').trim().toLowerCase()));
367
- // Reconcile dropped/renamed fields
368
- const initialFieldCount = existingFieldRecords.length;
369
- existingFieldRecords = existingFieldRecords.filter(fr => {
370
- const fName = String(fr.fields?.Name ?? '').trim().toLowerCase();
371
- return validFieldNamesLower.has(fName);
372
- });
373
- const removedCount = initialFieldCount - existingFieldRecords.length;
374
- if (removedCount > 0) {
375
- this.recordsRemovedCount += removedCount;
376
- CodeGenReporter.Instance.counter('metadata.decisionRecordsRemoved', removedCount);
377
- }
378
- const fieldDecMap = this._fieldDecisions.get(entityName);
379
- if (fieldDecMap) {
380
- for (const [fieldName, colMap] of fieldDecMap) {
381
- let fieldRec = existingFieldRecords.find(fr => String(fr.fields?.Name ?? '').trim().toLowerCase() === fieldName.toLowerCase());
382
- if (!fieldRec) {
383
- fieldRec = {
384
- fields: { Name: fieldName },
385
- primaryKey: { ID: buildFieldLookup(entityName, fieldName) }
386
- };
387
- existingFieldRecords.push(fieldRec);
388
- }
389
- for (const [col, val] of colMap) {
390
- fieldRec.fields[col] = val;
391
- }
392
- }
393
- }
394
- // Sort MJ: Entity Fields by entity field Sequence, then Name
395
- const seqMap = new Map();
396
- for (const f of entity.Fields) {
397
- seqMap.set(f.Name.toLowerCase(), f.Sequence ?? 0);
398
- }
399
- existingFieldRecords.sort((a, b) => {
400
- const nameA = String(a.fields?.Name ?? '');
401
- const nameB = String(b.fields?.Name ?? '');
402
- const seqA = seqMap.get(nameA.toLowerCase()) ?? 0;
403
- const seqB = seqMap.get(nameB.toLowerCase()) ?? 0;
404
- if (seqA !== seqB)
405
- return seqA - seqB;
406
- return ordinalCompare(nameA, nameB);
407
- });
408
- if (existingFieldRecords.length > 0) {
409
- mainRecord.relatedEntities['MJ: Entity Fields'] = existingFieldRecords;
410
- }
411
- else {
412
- delete mainRecord.relatedEntities['MJ: Entity Fields'];
413
- }
414
- // Handle MJ: Entity Settings
415
- let existingSettingRecords = mainRecord.relatedEntities['MJ: Entity Settings'] ?? [];
416
- const settingDecMap = this._settingDecisions.get(entityName);
417
- if (settingDecMap) {
418
- for (const [settingName, val] of settingDecMap) {
419
- let sRec = existingSettingRecords.find(sr => String(sr.fields?.Name ?? '').trim().toLowerCase() === settingName.toLowerCase());
420
- if (!sRec) {
421
- sRec = {
422
- fields: { Name: settingName, Value: {} },
423
- primaryKey: { ID: buildSettingLookup(entityName, settingName) }
424
- };
425
- existingSettingRecords.push(sRec);
426
- }
427
- if (typeof val === 'object' && val !== null) {
428
- sRec.fields.Value = JSON.parse(canonicalJSONStringify(val));
429
- }
430
- else {
431
- sRec.fields.Value = val;
432
- }
433
- }
434
- }
435
- existingSettingRecords.sort((a, b) => ordinalCompare(String(a.fields?.Name ?? ''), String(b.fields?.Name ?? '')));
436
- if (existingSettingRecords.length > 0) {
437
- mainRecord.relatedEntities['MJ: Entity Settings'] = existingSettingRecords;
438
- }
439
- else {
440
- delete mainRecord.relatedEntities['MJ: Entity Settings'];
441
- }
442
- // Handle MJ: Application Entities
443
- let existingAppRecords = mainRecord.relatedEntities['MJ: Application Entities'] ?? [];
444
- const appDecMap = this._appEntityDecisions.get(entityName);
445
- if (appDecMap) {
446
- for (const [appName, colMap] of appDecMap) {
447
- let aRec = existingAppRecords.find(ar => String(ar.fields?.Application ?? '').trim().toLowerCase() === appName.toLowerCase());
448
- if (!aRec) {
449
- aRec = {
450
- fields: { Application: appName, Entity: entityName },
451
- primaryKey: { ID: buildAppEntityLookup(appName, entityName) }
452
- };
453
- existingAppRecords.push(aRec);
454
- }
455
- for (const [col, val] of colMap) {
456
- aRec.fields[col] = val;
457
- }
458
- }
459
- }
460
- if (existingAppRecords.length > 0) {
461
- mainRecord.relatedEntities['MJ: Application Entities'] = existingAppRecords;
462
- }
463
- else {
464
- delete mainRecord.relatedEntities['MJ: Application Entities'];
465
- }
466
- // If relatedEntities is now empty, clean it up
467
- if (Object.keys(mainRecord.relatedEntities).length === 0) {
468
- delete mainRecord.relatedEntities;
469
- }
470
- const formatted = formatDecisionRecordData(records);
471
- const written = await writeIfChanged(filePath, formatted);
472
- if (written) {
473
- this.recordsWrittenCount++;
474
- CodeGenReporter.Instance.counter('metadata.decisionRecordsWritten');
475
- }
476
- else {
477
- this.recordsUnchangedCount++;
478
- CodeGenReporter.Instance.counter('metadata.decisionRecordsUnchanged');
479
- }
480
- }
481
- }
482
- //# sourceMappingURL=decision-metadata-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decision-metadata-writer.js","sourceRoot":"","sources":["../../src/Database/decision-metadata-writer.ts"],"names":[],"mappings":"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"}