@memberjunction/integration-engine 5.11.0 → 5.13.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/BaseIntegrationConnector.d.ts +56 -1
- package/dist/BaseIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseIntegrationConnector.js +66 -1
- package/dist/BaseIntegrationConnector.js.map +1 -1
- package/dist/BaseRESTIntegrationConnector.d.ts +17 -7
- package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseRESTIntegrationConnector.js +60 -44
- package/dist/BaseRESTIntegrationConnector.js.map +1 -1
- package/dist/IntegrationEngine.d.ts +11 -5
- package/dist/IntegrationEngine.d.ts.map +1 -1
- package/dist/IntegrationEngine.js +131 -27
- package/dist/IntegrationEngine.js.map +1 -1
- package/dist/MatchEngine.d.ts +12 -1
- package/dist/MatchEngine.d.ts.map +1 -1
- package/dist/MatchEngine.js +43 -8
- package/dist/MatchEngine.js.map +1 -1
- package/dist/WatermarkService.d.ts +11 -0
- package/dist/WatermarkService.d.ts.map +1 -1
- package/dist/WatermarkService.js +19 -0
- package/dist/WatermarkService.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +103 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,iBAAiB,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,KAAK,EACR,0BAA0B,EAC1B,mCAAmC,EACnC,kCAAkC,EAIlC,uCAAuC,EACvC,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EACjC,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EACR,UAAU,EAEV,eAAe,EAEf,kBAAkB,EAClB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,14 +43,14 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
43
43
|
* @param onNotification - Optional callback invoked with a notification when the sync completes or fails
|
|
44
44
|
* @returns Aggregate sync result with record counts and errors
|
|
45
45
|
*/
|
|
46
|
-
async RunSync(companyIntegrationID, contextUser, triggerType = 'Manual', onProgress, onNotification) {
|
|
46
|
+
async RunSync(companyIntegrationID, contextUser, triggerType = 'Manual', onProgress, onNotification, options) {
|
|
47
47
|
const lockKey = companyIntegrationID.toLowerCase();
|
|
48
48
|
const existing = IntegrationEngine.activeSyncs.get(lockKey);
|
|
49
49
|
if (existing) {
|
|
50
50
|
console.warn(`[IntegrationEngine] Sync already running for ${lockKey}, waiting...`);
|
|
51
51
|
return existing;
|
|
52
52
|
}
|
|
53
|
-
const syncPromise = this.executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification);
|
|
53
|
+
const syncPromise = this.executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification, options);
|
|
54
54
|
IntegrationEngine.activeSyncs.set(lockKey, syncPromise);
|
|
55
55
|
try {
|
|
56
56
|
return await syncPromise;
|
|
@@ -62,11 +62,17 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
62
62
|
/**
|
|
63
63
|
* Internal sync execution method. Contains the full orchestration logic.
|
|
64
64
|
*/
|
|
65
|
-
async executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification) {
|
|
66
|
-
const
|
|
67
|
-
const
|
|
65
|
+
async executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification, options) {
|
|
66
|
+
const startTime = Date.now();
|
|
67
|
+
const config = await this.LoadRunConfiguration(companyIntegrationID, contextUser, options);
|
|
68
|
+
const run = await this.CreateRunRecord(config.companyIntegration, triggerType, contextUser, options?.ScheduledJobRunID);
|
|
68
69
|
try {
|
|
69
70
|
const result = await this.ExecuteEntityMaps(config, run, contextUser, onProgress);
|
|
71
|
+
result.RunID = run.Get('ID');
|
|
72
|
+
result.Duration = Date.now() - startTime;
|
|
73
|
+
if (result.RecordsErrored > 0) {
|
|
74
|
+
result.ErrorMessage = `Sync completed with ${result.RecordsErrored} error(s)`;
|
|
75
|
+
}
|
|
70
76
|
await this.FinalizeRun(run, result, contextUser, onNotification);
|
|
71
77
|
return result;
|
|
72
78
|
}
|
|
@@ -78,7 +84,7 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
78
84
|
/**
|
|
79
85
|
* Loads all configuration needed for a sync run.
|
|
80
86
|
*/
|
|
81
|
-
async LoadRunConfiguration(companyIntegrationID, contextUser) {
|
|
87
|
+
async LoadRunConfiguration(companyIntegrationID, contextUser, options) {
|
|
82
88
|
const rv = new RunView();
|
|
83
89
|
const [ciResult, entityMapsResult, integrationsResult] = await rv.RunViews([
|
|
84
90
|
{
|
|
@@ -109,17 +115,24 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
109
115
|
throw new Error(`Integration not found for CompanyIntegration: ${companyIntegrationID}`);
|
|
110
116
|
}
|
|
111
117
|
const connector = ConnectorFactory.Resolve(integration);
|
|
118
|
+
let entityMaps = entityMapsResult.Results;
|
|
119
|
+
// Filter to specific entity maps if requested
|
|
120
|
+
if (options?.EntityMapIDs && options.EntityMapIDs.length > 0) {
|
|
121
|
+
const requestedIDs = new Set(options.EntityMapIDs.map(id => id.toLowerCase()));
|
|
122
|
+
entityMaps = entityMaps.filter(m => requestedIDs.has(m.Get('ID').toLowerCase()));
|
|
123
|
+
}
|
|
112
124
|
return {
|
|
113
125
|
companyIntegration,
|
|
114
|
-
entityMaps
|
|
126
|
+
entityMaps,
|
|
115
127
|
integration,
|
|
116
128
|
connector,
|
|
129
|
+
fullSync: options?.FullSync ?? false,
|
|
117
130
|
};
|
|
118
131
|
}
|
|
119
132
|
/**
|
|
120
133
|
* Creates a new CompanyIntegrationRun record to track this sync.
|
|
121
134
|
*/
|
|
122
|
-
async CreateRunRecord(companyIntegration, triggerType, contextUser) {
|
|
135
|
+
async CreateRunRecord(companyIntegration, triggerType, contextUser, scheduledJobRunID) {
|
|
123
136
|
const md = new Metadata();
|
|
124
137
|
const run = await md.GetEntityObject('MJ: Company Integration Runs', contextUser);
|
|
125
138
|
run.NewRecord();
|
|
@@ -129,6 +142,12 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
129
142
|
run.Status = 'In Progress';
|
|
130
143
|
run.TotalRecords = 0;
|
|
131
144
|
run.ConfigData = JSON.stringify({ triggerType });
|
|
145
|
+
// Link to scheduled job run if triggered by the scheduler.
|
|
146
|
+
// Use Set() because the ScheduledJobRunID column won't exist on the
|
|
147
|
+
// generated entity type until CodeGen runs after the migration.
|
|
148
|
+
if (scheduledJobRunID) {
|
|
149
|
+
run.Set('ScheduledJobRunID', scheduledJobRunID);
|
|
150
|
+
}
|
|
132
151
|
const saved = await run.Save();
|
|
133
152
|
if (!saved) {
|
|
134
153
|
throw new Error('Failed to create CompanyIntegrationRun record');
|
|
@@ -148,13 +167,16 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
148
167
|
RecordsErrored: 0,
|
|
149
168
|
RecordsSkipped: 0,
|
|
150
169
|
Errors: [],
|
|
170
|
+
EntityMapResults: [],
|
|
151
171
|
};
|
|
152
172
|
const totalMaps = config.entityMaps.length;
|
|
153
173
|
for (let i = 0; i < totalMaps; i++) {
|
|
154
174
|
const entityMap = config.entityMaps[i];
|
|
175
|
+
const mapStartTime = Date.now();
|
|
155
176
|
try {
|
|
156
177
|
const mapResult = await this.ProcessSingleEntityMap(config, entityMap, run, contextUser, i, totalMaps, onProgress);
|
|
157
178
|
this.MergeResult(aggregate, mapResult);
|
|
179
|
+
aggregate.EntityMapResults.push(this.buildEntityMapResult(entityMap, mapResult, Date.now() - mapStartTime));
|
|
158
180
|
}
|
|
159
181
|
catch (err) {
|
|
160
182
|
const objName = entityMap.ExternalObjectName ?? String(entityMap.Get('ID'));
|
|
@@ -169,6 +191,19 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
169
191
|
Severity: 'Critical',
|
|
170
192
|
ExternalRecord: { ExternalID: objName, ObjectType: objName, Fields: {} },
|
|
171
193
|
});
|
|
194
|
+
aggregate.EntityMapResults.push({
|
|
195
|
+
EntityMapID: entityMap.Get('ID'),
|
|
196
|
+
ExternalObjectName: objName,
|
|
197
|
+
EntityName: entityMap.Entity ?? '',
|
|
198
|
+
Success: false,
|
|
199
|
+
RecordsProcessed: 0,
|
|
200
|
+
RecordsCreated: 0,
|
|
201
|
+
RecordsUpdated: 0,
|
|
202
|
+
RecordsDeleted: 0,
|
|
203
|
+
RecordsErrored: 1,
|
|
204
|
+
RecordsSkipped: 0,
|
|
205
|
+
Duration: Date.now() - mapStartTime,
|
|
206
|
+
});
|
|
172
207
|
}
|
|
173
208
|
}
|
|
174
209
|
return aggregate;
|
|
@@ -180,8 +215,8 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
180
215
|
const entityMapID = entityMap.Get('ID');
|
|
181
216
|
const fieldMaps = await this.LoadFieldMaps(entityMapID, contextUser);
|
|
182
217
|
const watermark = await this.watermarkService.Load(entityMapID, contextUser);
|
|
183
|
-
// A6: Validate watermark before using it
|
|
184
|
-
let initialWatermark = watermark?.WatermarkValue ?? null;
|
|
218
|
+
// A6: Validate watermark before using it — skip entirely when FullSync requested
|
|
219
|
+
let initialWatermark = config.fullSync ? null : (watermark?.WatermarkValue ?? null);
|
|
185
220
|
if (initialWatermark && watermark) {
|
|
186
221
|
const watermarkType = (watermark.WatermarkType ?? 'Timestamp');
|
|
187
222
|
if (!this.watermarkService.ValidateWatermark(initialWatermark, watermarkType)) {
|
|
@@ -202,25 +237,64 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
202
237
|
let hasMore = true;
|
|
203
238
|
let currentWatermark = initialWatermark;
|
|
204
239
|
let recordsInMap = 0;
|
|
240
|
+
let currentPage;
|
|
241
|
+
let currentOffset;
|
|
242
|
+
let currentCursor;
|
|
243
|
+
let batchCount = 0;
|
|
244
|
+
let previousBatchFingerprint;
|
|
245
|
+
const MAX_BATCHES_PER_MAP = 5000;
|
|
205
246
|
while (hasMore) {
|
|
247
|
+
batchCount++;
|
|
248
|
+
if (batchCount > MAX_BATCHES_PER_MAP) {
|
|
249
|
+
console.error(`[IntegrationEngine] Safety limit reached: ${MAX_BATCHES_PER_MAP} batches for ` +
|
|
250
|
+
`${entityMap.ExternalObjectName}. Stopping to prevent infinite loop.`);
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
206
253
|
const ctx = {
|
|
207
254
|
CompanyIntegration: config.companyIntegration,
|
|
208
255
|
ObjectName: entityMap.ExternalObjectName,
|
|
209
256
|
WatermarkValue: currentWatermark,
|
|
210
257
|
BatchSize: this.MaxBatchSize,
|
|
211
258
|
ContextUser: contextUser,
|
|
259
|
+
CurrentPage: currentPage,
|
|
260
|
+
CurrentOffset: currentOffset,
|
|
261
|
+
CurrentCursor: currentCursor,
|
|
212
262
|
};
|
|
213
263
|
const batch = await config.connector.FetchChanges(ctx);
|
|
214
|
-
//
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
264
|
+
// Enforce MaxBatchSize — connectors are asked to respect it but may overshoot
|
|
265
|
+
if (batch.Records.length > this.MaxBatchSize) {
|
|
266
|
+
console.warn(`[IntegrationEngine] ${entityMap.ExternalObjectName}: connector returned ` +
|
|
267
|
+
`${batch.Records.length} records, exceeding MaxBatchSize of ${this.MaxBatchSize}. ` +
|
|
268
|
+
`Truncating to ${this.MaxBatchSize}.`);
|
|
269
|
+
batch.Records = batch.Records.slice(0, this.MaxBatchSize);
|
|
270
|
+
}
|
|
271
|
+
if (batch.Records.length > 0) {
|
|
272
|
+
const fingerprint = batch.Records.map(r => r.ExternalID).join(',');
|
|
273
|
+
if (fingerprint === previousBatchFingerprint) {
|
|
274
|
+
console.warn(`[IntegrationEngine] Duplicate batch detected for ${entityMap.ExternalObjectName} — ` +
|
|
275
|
+
`connector returned same records twice. Stopping to prevent infinite loop.`);
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
previousBatchFingerprint = fingerprint;
|
|
219
279
|
}
|
|
220
|
-
const mapped = this.fieldMappingEngine.Apply(
|
|
280
|
+
const mapped = this.fieldMappingEngine.Apply(batch.Records, fieldMaps, entityMap.Entity);
|
|
221
281
|
const resolved = await this.matchEngine.Resolve(mapped, entityMap, fieldMaps, contextUser);
|
|
282
|
+
const beforeApply = result.RecordsCreated + result.RecordsUpdated + result.RecordsSkipped + result.RecordsErrored;
|
|
222
283
|
await this.ApplyRecords(resolved, config.companyIntegration, entityMap, result, contextUser);
|
|
223
|
-
|
|
284
|
+
const afterApply = result.RecordsCreated + result.RecordsUpdated + result.RecordsSkipped + result.RecordsErrored;
|
|
285
|
+
if (batch.Records.length > 0) {
|
|
286
|
+
const written = afterApply - beforeApply;
|
|
287
|
+
const offsetInfo = currentOffset != null ? ` (offset ${currentOffset})` : '';
|
|
288
|
+
console.log(`[IntegrationEngine] ${entityMap.ExternalObjectName}: wrote ${written} records to DB` +
|
|
289
|
+
`${offsetInfo} — running totals: ${result.RecordsCreated} created, ${result.RecordsUpdated} updated, ` +
|
|
290
|
+
`${result.RecordsSkipped} skipped, ${result.RecordsErrored} errored` +
|
|
291
|
+
(batch.HasMore ? ` | more batches pending` : ` | batch complete`));
|
|
292
|
+
// Update progress on the watermark record so the DB reflects live sync state
|
|
293
|
+
if (batch.HasMore) {
|
|
294
|
+
await this.watermarkService.UpdateProgress(entityMapID, afterApply, contextUser);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
recordsInMap += batch.Records.length;
|
|
224
298
|
// A8: Progress tracking
|
|
225
299
|
if (onProgress) {
|
|
226
300
|
this.emitProgress(onProgress, entityMapIndex, totalEntityMaps, recordsInMap, recordsInMap);
|
|
@@ -228,7 +302,10 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
228
302
|
if (batch.NewWatermarkValue) {
|
|
229
303
|
currentWatermark = batch.NewWatermarkValue;
|
|
230
304
|
}
|
|
231
|
-
|
|
305
|
+
currentPage = batch.NextPage;
|
|
306
|
+
currentOffset = batch.NextOffset;
|
|
307
|
+
currentCursor = batch.NextCursor;
|
|
308
|
+
hasMore = batch.HasMore === true; // Explicit boolean check — prevents truthy undefined from looping
|
|
232
309
|
}
|
|
233
310
|
if (currentWatermark) {
|
|
234
311
|
await this.watermarkService.Update(entityMapID, currentWatermark, contextUser);
|
|
@@ -338,10 +415,9 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
338
415
|
}
|
|
339
416
|
const md = new Metadata();
|
|
340
417
|
const entity = await md.GetEntityObject(record.MJEntityName, contextUser);
|
|
341
|
-
// Use the entity's actual PK field (SourceRecordID for integration tables, ID for __mj targets)
|
|
342
418
|
const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
|
|
343
|
-
const
|
|
344
|
-
const loaded = await entity.InnerLoad(this.
|
|
419
|
+
const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
|
|
420
|
+
const loaded = await entity.InnerLoad(this.BuildEntityPrimaryKey(record.MatchedMJRecordID, pkFields));
|
|
345
421
|
if (!loaded) {
|
|
346
422
|
throw new Error(`Failed to load ${record.MJEntityName} record ${record.MatchedMJRecordID}`);
|
|
347
423
|
}
|
|
@@ -379,8 +455,8 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
379
455
|
const md = new Metadata();
|
|
380
456
|
const entity = await md.GetEntityObject(record.MJEntityName, contextUser);
|
|
381
457
|
const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
|
|
382
|
-
const
|
|
383
|
-
const loaded = await entity.InnerLoad(this.
|
|
458
|
+
const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
|
|
459
|
+
const loaded = await entity.InnerLoad(this.BuildEntityPrimaryKey(record.MatchedMJRecordID, pkFields));
|
|
384
460
|
if (!loaded) {
|
|
385
461
|
throw new Error(`Failed to load ${record.MJEntityName} for deletion: ${record.MatchedMJRecordID}`);
|
|
386
462
|
}
|
|
@@ -390,12 +466,22 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
390
466
|
}
|
|
391
467
|
}
|
|
392
468
|
/**
|
|
393
|
-
* Builds a CompositeKey for a record lookup.
|
|
394
|
-
*
|
|
469
|
+
* Builds a CompositeKey for a record lookup using the entity's PK field definitions.
|
|
470
|
+
* Supports both single-PK and composite-PK entities. For composite PKs the recordID
|
|
471
|
+
* is expected to be a '|'-delimited string of values in PK-field sequence order —
|
|
472
|
+
* the same format written by BaseRESTIntegrationConnector.ToExternalRecord.
|
|
395
473
|
*/
|
|
396
|
-
|
|
474
|
+
BuildEntityPrimaryKey(recordID, pkFields) {
|
|
397
475
|
const key = new CompositeKey();
|
|
398
|
-
|
|
476
|
+
if (pkFields.length <= 1) {
|
|
477
|
+
key.KeyValuePairs.push({ FieldName: pkFields[0]?.Name ?? 'ID', Value: recordID });
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
const parts = recordID.split('|');
|
|
481
|
+
for (let i = 0; i < pkFields.length; i++) {
|
|
482
|
+
key.KeyValuePairs.push({ FieldName: pkFields[i].Name, Value: parts[i] ?? '' });
|
|
483
|
+
}
|
|
484
|
+
}
|
|
399
485
|
return key;
|
|
400
486
|
}
|
|
401
487
|
/**
|
|
@@ -465,6 +551,24 @@ export class IntegrationEngine extends BaseSingleton {
|
|
|
465
551
|
aggregate.Success = false;
|
|
466
552
|
}
|
|
467
553
|
}
|
|
554
|
+
/**
|
|
555
|
+
* Builds a per-entity-map result summary from the entity map and its sync result.
|
|
556
|
+
*/
|
|
557
|
+
buildEntityMapResult(entityMap, mapResult, duration) {
|
|
558
|
+
return {
|
|
559
|
+
EntityMapID: entityMap.Get('ID'),
|
|
560
|
+
ExternalObjectName: entityMap.ExternalObjectName ?? '',
|
|
561
|
+
EntityName: entityMap.Entity ?? '',
|
|
562
|
+
Success: mapResult.RecordsErrored === 0,
|
|
563
|
+
RecordsProcessed: mapResult.RecordsProcessed,
|
|
564
|
+
RecordsCreated: mapResult.RecordsCreated,
|
|
565
|
+
RecordsUpdated: mapResult.RecordsUpdated,
|
|
566
|
+
RecordsDeleted: mapResult.RecordsDeleted,
|
|
567
|
+
RecordsErrored: mapResult.RecordsErrored,
|
|
568
|
+
RecordsSkipped: mapResult.RecordsSkipped,
|
|
569
|
+
Duration: duration,
|
|
570
|
+
};
|
|
571
|
+
}
|
|
468
572
|
/**
|
|
469
573
|
* Finalizes a successful run with aggregate totals and emits a completion notification.
|
|
470
574
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationEngine.js","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IntegrationEngine.js","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/MatchEngine.d.ts
CHANGED
|
@@ -32,11 +32,22 @@ export declare class MatchEngine {
|
|
|
32
32
|
/**
|
|
33
33
|
* Attempts to find an existing MJ record by key field matching, then falls back
|
|
34
34
|
* to the CompanyIntegrationRecordMap.
|
|
35
|
+
*
|
|
36
|
+
* For composite-PK entities (no auto-generated ID), key-field matching is always
|
|
37
|
+
* attempted (even when no key fields are configured) so that PK fields themselves
|
|
38
|
+
* serve as the unique match criteria. This handles entities like InsightTopics
|
|
39
|
+
* where (person_id, topic) together form the natural key.
|
|
35
40
|
*/
|
|
36
41
|
private FindExistingRecord;
|
|
37
42
|
/**
|
|
38
43
|
* Searches for an existing MJ record using key field values.
|
|
39
|
-
*
|
|
44
|
+
*
|
|
45
|
+
* For composite-PK entities, all PK fields are added to the WHERE filter to
|
|
46
|
+
* guarantee a unique match, and the returned ID is a '|'-delimited composite
|
|
47
|
+
* of all PK field values (matching the ExternalID format used by connectors).
|
|
48
|
+
*
|
|
49
|
+
* For single-PK entities, behaviour is unchanged: filter by configured key fields,
|
|
50
|
+
* return the single PK value as a plain string.
|
|
40
51
|
*/
|
|
41
52
|
private FindByKeyFields;
|
|
42
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatchEngine.d.ts","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;;;;;;;OASG;IACU,OAAO,CAChB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,4BAA4B,EACvC,SAAS,EAAE,2BAA2B,EAAE,EACxC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkB1B;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B
|
|
1
|
+
{"version":3,"file":"MatchEngine.d.ts","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;;;;;;;OASG;IACU,OAAO,CAChB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,4BAA4B,EACvC,SAAS,EAAE,2BAA2B,EAAE,EACxC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkB1B;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;;;;OAQG;YACW,kBAAkB;IAuBhC;;;;;;;;;OASG;YACW,eAAe;IAiD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;YACW,kBAAkB;CAsBnC"}
|
package/dist/MatchEngine.js
CHANGED
|
@@ -59,9 +59,17 @@ export class MatchEngine {
|
|
|
59
59
|
/**
|
|
60
60
|
* Attempts to find an existing MJ record by key field matching, then falls back
|
|
61
61
|
* to the CompanyIntegrationRecordMap.
|
|
62
|
+
*
|
|
63
|
+
* For composite-PK entities (no auto-generated ID), key-field matching is always
|
|
64
|
+
* attempted (even when no key fields are configured) so that PK fields themselves
|
|
65
|
+
* serve as the unique match criteria. This handles entities like InsightTopics
|
|
66
|
+
* where (person_id, topic) together form the natural key.
|
|
62
67
|
*/
|
|
63
68
|
async FindExistingRecord(record, entityMap, keyFields, contextUser) {
|
|
64
|
-
|
|
69
|
+
const md = new Metadata();
|
|
70
|
+
const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
|
|
71
|
+
const isCompositePK = (entityInfo?.PrimaryKeys?.length ?? 0) > 1;
|
|
72
|
+
if (keyFields.length > 0 || isCompositePK) {
|
|
65
73
|
const idByKeys = await this.FindByKeyFields(record, keyFields, contextUser);
|
|
66
74
|
if (idByKeys)
|
|
67
75
|
return idByKeys;
|
|
@@ -70,27 +78,54 @@ export class MatchEngine {
|
|
|
70
78
|
}
|
|
71
79
|
/**
|
|
72
80
|
* Searches for an existing MJ record using key field values.
|
|
73
|
-
*
|
|
81
|
+
*
|
|
82
|
+
* For composite-PK entities, all PK fields are added to the WHERE filter to
|
|
83
|
+
* guarantee a unique match, and the returned ID is a '|'-delimited composite
|
|
84
|
+
* of all PK field values (matching the ExternalID format used by connectors).
|
|
85
|
+
*
|
|
86
|
+
* For single-PK entities, behaviour is unchanged: filter by configured key fields,
|
|
87
|
+
* return the single PK value as a plain string.
|
|
74
88
|
*/
|
|
75
89
|
async FindByKeyFields(record, keyFields, contextUser) {
|
|
90
|
+
const md = new Metadata();
|
|
91
|
+
const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
|
|
92
|
+
const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
|
|
93
|
+
if (pkFields.length === 0)
|
|
94
|
+
return null;
|
|
95
|
+
// Start with the configured key-field filter clauses
|
|
76
96
|
const filterClauses = this.BuildKeyFieldFilter(record, keyFields);
|
|
97
|
+
// For composite-PK entities, augment the filter with all PK field values
|
|
98
|
+
// taken directly from the mapped record. This ensures uniqueness even when
|
|
99
|
+
// no key fields are configured and prevents matching the wrong row when
|
|
100
|
+
// the configured key fields alone are not unique (e.g. person_id matches
|
|
101
|
+
// all topics for a given person).
|
|
102
|
+
if (pkFields.length > 1) {
|
|
103
|
+
for (const pkField of pkFields) {
|
|
104
|
+
const value = record.MappedFields[pkField.Name];
|
|
105
|
+
if (value == null)
|
|
106
|
+
continue;
|
|
107
|
+
const escaped = String(value).replace(/'/g, "''");
|
|
108
|
+
const clause = `[${pkField.Name}] = '${escaped}'`;
|
|
109
|
+
if (!filterClauses.includes(clause)) {
|
|
110
|
+
filterClauses.push(clause);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
77
114
|
if (filterClauses.length === 0)
|
|
78
115
|
return null;
|
|
79
|
-
// Look up the entity's PK field name from metadata
|
|
80
|
-
const md = new Metadata();
|
|
81
|
-
const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
|
|
82
|
-
const pkFieldName = entityInfo?.FirstPrimaryKey?.Name ?? 'ID';
|
|
83
116
|
const rv = new RunView();
|
|
84
117
|
const result = await rv.RunView({
|
|
85
118
|
EntityName: record.MJEntityName,
|
|
86
119
|
ExtraFilter: filterClauses.join(' AND '),
|
|
87
|
-
Fields:
|
|
120
|
+
Fields: pkFields.map(f => f.Name),
|
|
88
121
|
MaxRows: 1,
|
|
89
122
|
ResultType: 'simple',
|
|
90
123
|
}, contextUser);
|
|
91
124
|
if (!result.Success || result.Results.length === 0)
|
|
92
125
|
return null;
|
|
93
|
-
|
|
126
|
+
// Return all PK values joined with '|' — matches the ExternalID format
|
|
127
|
+
// written by BaseRESTIntegrationConnector.ToExternalRecord for composite PKs.
|
|
128
|
+
return pkFields.map(f => result.Results[0][f.Name] ?? '').join('|');
|
|
94
129
|
}
|
|
95
130
|
/**
|
|
96
131
|
* Builds a SQL filter clause from key field values on a mapped record.
|
package/dist/MatchEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MatchEngine.js","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB,MAAM,sBAAsB,CAAC;AAIxE;;;GAGG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;;;;;OASG;IACI,KAAK,CAAC,OAAO,CAChB,OAAuB,EACvB,SAAuC,EACvC,SAAwC,EACxC,WAAqB;QAErB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAClF,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAwC,CAAC;QAE9E,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC3C,MAAM,EACN,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,WAAW,CACd,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC7B,MAAoB,EACpB,SAAuC,EACvC,SAAwC,EACxC,kBAAsC,EACtC,WAAqB;QAErB,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC5C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAC5C,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAC9B,MAAoB,EACpB,SAAuC,EACvC,WAAqB;QAErB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC5C,SAAS,CAAC,oBAAoB,EAC9B,MAAM,CAAC,cAAc,CAAC,UAAU,EAChC,SAAS,CAAC,QAAQ,EAClB,WAAW,CACd,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,qBAAqB,CACzB,MAAoB,EACpB,UAAkB,EAClB,kBAAsC;QAEtC,IAAI,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAC9E,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"MatchEngine.js","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,17 @@ export declare class WatermarkService {
|
|
|
24
24
|
* @param contextUser - User context for data access
|
|
25
25
|
*/
|
|
26
26
|
Update(entityMapID: string, newValue: string, contextUser: UserInfo): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Updates the progress fields on an existing watermark mid-sync without changing
|
|
29
|
+
* the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
|
|
30
|
+
* and refreshes LastSyncAt so the DB reflects live progress between batches.
|
|
31
|
+
* Silently skips if no watermark record exists yet.
|
|
32
|
+
*
|
|
33
|
+
* @param entityMapID - The entity map being synced
|
|
34
|
+
* @param totalWritten - Cumulative number of records written to DB so far
|
|
35
|
+
* @param contextUser - User context for data access
|
|
36
|
+
*/
|
|
37
|
+
UpdateProgress(entityMapID: string, totalWritten: number, contextUser: UserInfo): Promise<void>;
|
|
27
38
|
/**
|
|
28
39
|
* Validates a watermark value against its expected type.
|
|
29
40
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAcnD;;;;;;;;OAQG;IACU,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;OASG;IACU,cAAc,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAkBvF;;OAEG;YACW,uBAAuB;IAYrC;;OAEG;YACW,kBAAkB;CAuBnC"}
|
package/dist/WatermarkService.js
CHANGED
|
@@ -16,6 +16,7 @@ export class WatermarkService {
|
|
|
16
16
|
const result = await rv.RunView({
|
|
17
17
|
EntityName: 'MJ: Company Integration Sync Watermarks',
|
|
18
18
|
ExtraFilter: `EntityMapID='${entityMapID}'`,
|
|
19
|
+
OrderBy: 'LastSyncAt DESC',
|
|
19
20
|
MaxRows: 1,
|
|
20
21
|
ResultType: 'entity_object',
|
|
21
22
|
}, contextUser);
|
|
@@ -41,6 +42,24 @@ export class WatermarkService {
|
|
|
41
42
|
await this.CreateNewWatermark(entityMapID, newValue, contextUser);
|
|
42
43
|
}
|
|
43
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Updates the progress fields on an existing watermark mid-sync without changing
|
|
47
|
+
* the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
|
|
48
|
+
* and refreshes LastSyncAt so the DB reflects live progress between batches.
|
|
49
|
+
* Silently skips if no watermark record exists yet.
|
|
50
|
+
*
|
|
51
|
+
* @param entityMapID - The entity map being synced
|
|
52
|
+
* @param totalWritten - Cumulative number of records written to DB so far
|
|
53
|
+
* @param contextUser - User context for data access
|
|
54
|
+
*/
|
|
55
|
+
async UpdateProgress(entityMapID, totalWritten, contextUser) {
|
|
56
|
+
const existing = await this.Load(entityMapID, contextUser);
|
|
57
|
+
if (!existing)
|
|
58
|
+
return;
|
|
59
|
+
existing.RecordsSynced = totalWritten;
|
|
60
|
+
existing.LastSyncAt = new Date();
|
|
61
|
+
await existing.Save();
|
|
62
|
+
}
|
|
44
63
|
/**
|
|
45
64
|
* Validates a watermark value against its expected type.
|
|
46
65
|
*
|