@memberjunction/sqlserver-dataprovider 4.3.1 → 5.0.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.
@@ -16,7 +16,7 @@
16
16
  * so it is only included by the consumer of the entities library if they want to use it.
17
17
  **************************************************************************************************************/
18
18
  import { BaseEntity, IEntityDataProvider, IMetadataProvider, RunViewResult, AggregateResult, EntityInfo, EntityFieldInfo, ApplicationInfo, RunViewParams, ProviderType, UserInfo, RecordChange, ILocalStorageProvider, IFileSystemProvider, AuditLogTypeInfo, AuthorizationInfo, TransactionGroupBase, EntitySaveOptions, RunReportParams, DatasetItemFilterType, DatasetResultType, DatasetStatusResultType, EntityRecordNameInput, EntityRecordNameResult, IRunReportProvider, RunReportResult, RecordDependency, RecordMergeRequest, RecordMergeResult, EntityDependency, RunQueryResult, RunQueryParams, PotentialDuplicateRequest, PotentialDuplicateResponse, CompositeKey, EntityDeleteOptions, EntityMergeOptions, DatasetItemResultType, DatabaseProviderBase, QueryInfo, RunViewWithCacheCheckParams, RunViewsWithCacheCheckResponse, RunViewWithCacheCheckResult, RunQueryWithCacheCheckParams, RunQueriesWithCacheCheckResponse, RunQueryWithCacheCheckResult } from '@memberjunction/core';
19
- import { AuditLogEntity, EntityAIActionEntity, RecordMergeLogEntity, UserViewEntityExtended } from '@memberjunction/core-entities';
19
+ import { MJAuditLogEntity, MJEntityAIActionEntity, MJRecordMergeLogEntity, UserViewEntityExtended } from '@memberjunction/core-entities';
20
20
  import sql from 'mssql';
21
21
  import { Observable } from 'rxjs';
22
22
  import { ExecuteSQLOptions, ExecuteSQLBatchOptions, SQLServerProviderConfigData, SqlLoggingOptions, SqlLoggingSession } from './types.js';
@@ -470,7 +470,7 @@ export declare class SQLServerDataProvider extends DatabaseProviderBase implemen
470
470
  runID: string;
471
471
  }>;
472
472
  protected createViewUserSearchSQL(entityInfo: EntityInfo, userSearchString: string): string;
473
- CreateAuditLogRecord(user: UserInfo, authorizationName: string | null, auditLogTypeName: string, status: string, details: string | null, entityId: string, recordId: any | null, auditLogDescription: string | null, saveOptions: EntitySaveOptions): Promise<AuditLogEntity>;
473
+ CreateAuditLogRecord(user: UserInfo, authorizationName: string | null, auditLogTypeName: string, status: string, details: string | null, entityId: string, recordId: any | null, auditLogDescription: string | null, saveOptions: EntitySaveOptions): Promise<MJAuditLogEntity>;
474
474
  protected CheckUserReadPermissions(entityName: string, contextUser: UserInfo): void;
475
475
  /**************************************************************************/
476
476
  /**************************************************************************/
@@ -502,8 +502,8 @@ export declare class SQLServerDataProvider extends DatabaseProviderBase implemen
502
502
  protected GetRecordDependencyLinkSQL(dep: EntityDependency, entity: EntityInfo, relatedEntity: EntityInfo, CompositeKey: CompositeKey): string;
503
503
  GetRecordDuplicates(params: PotentialDuplicateRequest, contextUser?: UserInfo): Promise<PotentialDuplicateResponse>;
504
504
  MergeRecords(request: RecordMergeRequest, contextUser?: UserInfo, options?: EntityMergeOptions): Promise<RecordMergeResult>;
505
- protected StartMergeLogging(request: RecordMergeRequest, result: RecordMergeResult, contextUser: UserInfo): Promise<RecordMergeLogEntity>;
506
- protected CompleteMergeLogging(recordMergeLog: RecordMergeLogEntity, result: RecordMergeResult, contextUser?: UserInfo): Promise<void>;
505
+ protected StartMergeLogging(request: RecordMergeRequest, result: RecordMergeResult, contextUser: UserInfo): Promise<MJRecordMergeLogEntity>;
506
+ protected CompleteMergeLogging(recordMergeLog: MJRecordMergeLogEntity, result: RecordMergeResult, contextUser?: UserInfo): Promise<void>;
507
507
  /**
508
508
  * Generates the SQL Statement that will Save a record to the database.
509
509
  *
@@ -539,7 +539,7 @@ export declare class SQLServerDataProvider extends DatabaseProviderBase implemen
539
539
  * @returns Array of AI action entities
540
540
  * @internal
541
541
  */
542
- protected GetEntityAIActions(entityInfo: EntityInfo, before: boolean): EntityAIActionEntity[];
542
+ protected GetEntityAIActions(entityInfo: EntityInfo, before: boolean): MJEntityAIActionEntity[];
543
543
  /**
544
544
  * Handles entity actions (non-AI) for save, delete, or validate operations
545
545
  *
@@ -897,12 +897,64 @@ export declare class SQLServerDataProvider extends DatabaseProviderBase implemen
897
897
  FindISAChildEntity(entityInfo: EntityInfo, recordPKValue: string, contextUser?: UserInfo): Promise<{
898
898
  ChildEntityName: string;
899
899
  } | null>;
900
+ /**
901
+ * Discovers ALL IS-A child entities that have records with the given primary key.
902
+ * Used for overlapping subtype parents (AllowMultipleSubtypes = true) where multiple
903
+ * children can coexist. Same UNION ALL query as FindISAChildEntity, but returns all matches.
904
+ *
905
+ * @param entityInfo The parent entity whose children to search
906
+ * @param recordPKValue The primary key value to find in child tables
907
+ * @param contextUser Optional context user for audit/permission purposes
908
+ * @returns Array of child entity names found (empty if none)
909
+ */
910
+ FindISAChildEntities(entityInfo: EntityInfo, recordPKValue: string, contextUser?: UserInfo): Promise<{
911
+ ChildEntityName: string;
912
+ }[]>;
900
913
  /**
901
914
  * Builds a UNION ALL query that checks each child entity's base table for a record
902
915
  * with the given primary key. Returns the first match (disjoint subtypes guarantee
903
- * at most one result).
916
+ * at most one result) unless used with overlapping subtypes.
904
917
  */
905
918
  private buildChildDiscoverySQL;
919
+ /**************************************************************************
920
+ * IS-A Overlapping Subtype — Record Change Propagation
921
+ *
922
+ * When saving through one branch of an overlapping hierarchy, propagate
923
+ * ancestor-level Record Change entries to all active sibling branches.
924
+ * Executes as a single SQL batch within the active IS-A transaction.
925
+ **************************************************************************/
926
+ /**
927
+ * Propagates Record Change entries to sibling branches of an overlapping IS-A parent.
928
+ * Called from Save() after a successful save of an entity with AllowMultipleSubtypes.
929
+ * Generates a single SQL batch that creates Record Change entries for all child entities
930
+ * (and their sub-trees) except the active branch that triggered this parent save.
931
+ *
932
+ * @param parentInfo The overlapping parent entity's metadata
933
+ * @param changeData The diff data (changesJSON and changesDescription) from the save
934
+ * @param pkValue The shared primary key value
935
+ * @param userId The ID of the user performing the save
936
+ * @param activeChildEntityName The child entity that initiated this parent save (skipped).
937
+ * Undefined when saving the parent directly — all children get propagated to.
938
+ * @param transaction The active IS-A transaction, or undefined for standalone saves
939
+ */
940
+ private PropagateRecordChangesToSiblings;
941
+ /**
942
+ * Checks whether a given entity matches the target name, or is an ancestor
943
+ * of the target (i.e., the target is somewhere in its descendant sub-tree).
944
+ * Used to identify and skip the active branch during sibling propagation.
945
+ */
946
+ private isEntityOrAncestorOf;
947
+ /**
948
+ * Recursively enumerates an entity's entire sub-tree from metadata.
949
+ * No DB queries — uses EntityInfo.ChildEntities which is populated from metadata.
950
+ */
951
+ private getFullSubTree;
952
+ /**
953
+ * Generates a single block of SQL for one sibling entity in the Record Change
954
+ * propagation batch. Uses SELECT...FOR JSON to get the full record, then
955
+ * conditionally inserts a Record Change entry if the record exists.
956
+ */
957
+ private buildSiblingRecordChangeSQL;
906
958
  BeginTransaction(): Promise<void>;
907
959
  CommitTransaction(): Promise<void>;
908
960
  RollbackTransaction(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"SQLServerDataProvider.d.ts","sourceRoot":"","sources":["../src/SQLServerDataProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SQLServerDataProvider.d.ts","sourceRoot":"","sources":["../src/SQLServerDataProvider.ts"],"names":[],"mappings":"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"}
@@ -2147,7 +2147,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2147
2147
  if (!auditLogType) {
2148
2148
  throw new Error(`Audit Log Type ${auditLogTypeName} not found in metadata`);
2149
2149
  }
2150
- const auditLog = await this.GetEntityObject('Audit Logs', user); // must pass user context on back end as we're not authenticated the same way as the front end
2150
+ const auditLog = await this.GetEntityObject('MJ: Audit Logs', user); // must pass user context on back end as we're not authenticated the same way as the front end
2151
2151
  auditLog.NewRecord();
2152
2152
  auditLog.UserID = user.ID;
2153
2153
  auditLog.AuditLogTypeID = auditLogType.ID;
@@ -2221,7 +2221,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2221
2221
  return; // no change
2222
2222
  // if we're here that means we need to invert the status, which either means creating a record or deleting a record
2223
2223
  const e = this.Entities.find((e) => e.Name === entityName);
2224
- const ufEntity = await this.GetEntityObject('User Favorites', contextUser || this.CurrentUser);
2224
+ const ufEntity = await this.GetEntityObject('MJ: User Favorites', contextUser || this.CurrentUser);
2225
2225
  if (currentFavoriteId !== null) {
2226
2226
  // delete the record since we are setting isFavorite to FALSE
2227
2227
  await ufEntity.Load(currentFavoriteId);
@@ -2399,13 +2399,13 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2399
2399
  if (!contextUser) {
2400
2400
  throw new Error('User context is required to get record duplicates.');
2401
2401
  }
2402
- const listEntity = await this.GetEntityObject('Lists');
2402
+ const listEntity = await this.GetEntityObject('MJ: Lists');
2403
2403
  listEntity.ContextCurrentUser = contextUser;
2404
2404
  const success = await listEntity.Load(params.ListID);
2405
2405
  if (!success) {
2406
2406
  throw new Error(`List with ID ${params.ListID} not found.`);
2407
2407
  }
2408
- const duplicateRun = await this.GetEntityObject('Duplicate Runs');
2408
+ const duplicateRun = await this.GetEntityObject('MJ: Duplicate Runs');
2409
2409
  duplicateRun.NewRecord();
2410
2410
  duplicateRun.EntityID = params.EntityID;
2411
2411
  duplicateRun.StartedByUserID = contextUser.ID;
@@ -2516,7 +2516,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2516
2516
  async StartMergeLogging(request, result, contextUser) {
2517
2517
  try {
2518
2518
  // create records in the Record Merge Logs entity and Record Merge Deletion Logs entity
2519
- const recordMergeLog = await this.GetEntityObject('Record Merge Logs', contextUser);
2519
+ const recordMergeLog = await this.GetEntityObject('MJ: Record Merge Logs', contextUser);
2520
2520
  const entity = this.Entities.find((e) => e.Name === request.EntityName);
2521
2521
  if (!entity)
2522
2522
  throw new Error(`Entity ${result.Request.EntityName} not found in metadata`);
@@ -2555,7 +2555,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2555
2555
  if (await recordMergeLog.Save()) {
2556
2556
  // top level saved, now let's create the deletion detail records for each of the records that were merged
2557
2557
  for (const d of result.RecordStatus) {
2558
- const recordMergeDeletionLog = await this.GetEntityObject('Record Merge Deletion Logs', contextUser);
2558
+ const recordMergeDeletionLog = await this.GetEntityObject('MJ: Record Merge Deletion Logs', contextUser);
2559
2559
  recordMergeDeletionLog.NewRecord();
2560
2560
  recordMergeDeletionLog.RecordMergeLogID = recordMergeLog.ID;
2561
2561
  recordMergeDeletionLog.DeletedRecordID = d.CompositeKey.Values(); // this would join together all of the primary key values, which is fine as the primary key is a string
@@ -2616,8 +2616,9 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2616
2616
  else {
2617
2617
  sSimpleSQL = execSQL;
2618
2618
  }
2619
- const recordChangesEntityInfo = this.Entities.find((e) => e.Name === 'Record Changes');
2619
+ const recordChangesEntityInfo = this.Entities.find((e) => e.Name === 'MJ: Record Changes');
2620
2620
  let sSQL = '';
2621
+ let overlappingChangeData;
2621
2622
  if (entity.EntityInfo.TrackRecordChanges && entity.EntityInfo.Name.trim().toLowerCase() !== 'record changes') {
2622
2623
  // don't track changes for the record changes entity
2623
2624
  let oldData = null;
@@ -2626,7 +2627,21 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2626
2627
  const concatPKIDString = `CONCAT(${entity.EntityInfo.PrimaryKeys.map((pk) => `'${pk.CodeName}','${CompositeKey.DefaultValueDelimiter}',${pk.Name}`).join(`,'${CompositeKey.DefaultFieldDelimiter}',`)})`;
2627
2628
  if (!bNewRecord)
2628
2629
  oldData = entity.GetAll(true); // get all the OLD values, only do for existing records, for new records, not relevant
2629
- const logRecordChangeSQL = this.GetLogRecordChangeSQL(entity.GetAll(false), oldData, entity.EntityInfo.Name, '@ID', entity.EntityInfo, bNewRecord ? 'Create' : 'Update', user, false);
2630
+ // Capture the diff for overlapping subtype Record Change propagation.
2631
+ // Must happen before finalizeSave() resets OldValues, since the diff would be lost.
2632
+ // Returned to Save() which handles propagation — this is a backend-only concern.
2633
+ const newData = entity.GetAll(false);
2634
+ if (!bNewRecord && oldData) {
2635
+ const diffChanges = this.DiffObjects(oldData, newData, entity.EntityInfo, "'");
2636
+ const diffKeys = diffChanges ? Object.keys(diffChanges) : [];
2637
+ if (diffKeys.length > 0) {
2638
+ overlappingChangeData = {
2639
+ changesJSON: JSON.stringify(diffChanges),
2640
+ changesDescription: this.CreateUserDescriptionOfChanges(diffChanges)
2641
+ };
2642
+ }
2643
+ }
2644
+ const logRecordChangeSQL = this.GetLogRecordChangeSQL(newData, oldData, entity.EntityInfo.Name, '@ID', entity.EntityInfo, bNewRecord ? 'Create' : 'Update', user, false);
2630
2645
  if (logRecordChangeSQL === null) {
2631
2646
  // if we don't have any record changes to log, just return the simple SQL to run which will do nothing but update __mj_UpdatedAt
2632
2647
  // this can happen if a subclass overrides the Dirty() flag to make the object dirty due to factors outside of the
@@ -2670,7 +2685,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2670
2685
  // not doing track changes for this entity, keep it simple
2671
2686
  sSQL = sSimpleSQL;
2672
2687
  }
2673
- return { fullSQL: sSQL, simpleSQL: sSimpleSQL };
2688
+ return { fullSQL: sSQL, simpleSQL: sSimpleSQL, overlappingChangeData };
2674
2689
  }
2675
2690
  /**
2676
2691
  * Gets AI actions configured for an entity based on trigger timing
@@ -2921,6 +2936,14 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
2921
2936
  if (options.SkipEntityActions !== true)
2922
2937
  this.HandleEntityActions(entity, 'save', false, user); // NO AWAIT INTENTIONALLY
2923
2938
  entityResult.Success = true;
2939
+ // IS-A overlapping subtypes: propagate Record Change entries to sibling branches.
2940
+ // Runs after this entity's save succeeds. Skips the active child branch (if this
2941
+ // is a parent save in a chain) so siblings don't get duplicate entries.
2942
+ if (sqlDetails.overlappingChangeData
2943
+ && entity.EntityInfo.AllowMultipleSubtypes
2944
+ && entity.EntityInfo.TrackRecordChanges) {
2945
+ await this.PropagateRecordChangesToSiblings(entity.EntityInfo, sqlDetails.overlappingChangeData, entity.PrimaryKey.Values(), user?.ID ?? '', options.ISAActiveChildEntityName, entity.ProviderTransaction ?? undefined);
2946
+ }
2924
2947
  return result[0];
2925
2948
  }
2926
2949
  else {
@@ -3557,7 +3580,7 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
3557
3580
  return `@${f.CodeName}=${quotes}${kv.Value}${quotes}`;
3558
3581
  }).join(', ');
3559
3582
  const sSimpleSQL = `EXEC [${entity.EntityInfo.SchemaName}].[${spName}] ${sParams}`;
3560
- const recordChangesEntityInfo = this.Entities.find((e) => e.Name === 'Record Changes');
3583
+ const recordChangesEntityInfo = this.Entities.find((e) => e.Name === 'MJ: Record Changes');
3561
3584
  if (entity.EntityInfo.TrackRecordChanges && entity.EntityInfo.Name.trim().toLowerCase() !== 'record changes') {
3562
3585
  // don't track changes for the record changes entity
3563
3586
  const oldData = entity.GetAll(true); // get all the OLD values
@@ -4734,10 +4757,35 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
4734
4757
  }
4735
4758
  return null;
4736
4759
  }
4760
+ /**
4761
+ * Discovers ALL IS-A child entities that have records with the given primary key.
4762
+ * Used for overlapping subtype parents (AllowMultipleSubtypes = true) where multiple
4763
+ * children can coexist. Same UNION ALL query as FindISAChildEntity, but returns all matches.
4764
+ *
4765
+ * @param entityInfo The parent entity whose children to search
4766
+ * @param recordPKValue The primary key value to find in child tables
4767
+ * @param contextUser Optional context user for audit/permission purposes
4768
+ * @returns Array of child entity names found (empty if none)
4769
+ */
4770
+ async FindISAChildEntities(entityInfo, recordPKValue, contextUser) {
4771
+ const childEntities = entityInfo.ChildEntities;
4772
+ if (childEntities.length === 0)
4773
+ return [];
4774
+ const unionSQL = this.buildChildDiscoverySQL(childEntities, recordPKValue);
4775
+ if (!unionSQL)
4776
+ return [];
4777
+ const results = await this.ExecuteSQL(unionSQL, undefined, undefined, contextUser);
4778
+ if (results && results.length > 0) {
4779
+ return results
4780
+ .filter((r) => r.EntityName)
4781
+ .map((r) => ({ ChildEntityName: r.EntityName }));
4782
+ }
4783
+ return [];
4784
+ }
4737
4785
  /**
4738
4786
  * Builds a UNION ALL query that checks each child entity's base table for a record
4739
4787
  * with the given primary key. Returns the first match (disjoint subtypes guarantee
4740
- * at most one result).
4788
+ * at most one result) unless used with overlapping subtypes.
4741
4789
  */
4742
4790
  buildChildDiscoverySQL(childEntities, recordPKValue) {
4743
4791
  // Sanitize the PK value to prevent SQL injection
@@ -4754,6 +4802,115 @@ export class SQLServerDataProvider extends DatabaseProviderBase {
4754
4802
  return '';
4755
4803
  return unionParts.join(' UNION ALL ');
4756
4804
  }
4805
+ /**************************************************************************
4806
+ * IS-A Overlapping Subtype — Record Change Propagation
4807
+ *
4808
+ * When saving through one branch of an overlapping hierarchy, propagate
4809
+ * ancestor-level Record Change entries to all active sibling branches.
4810
+ * Executes as a single SQL batch within the active IS-A transaction.
4811
+ **************************************************************************/
4812
+ /**
4813
+ * Propagates Record Change entries to sibling branches of an overlapping IS-A parent.
4814
+ * Called from Save() after a successful save of an entity with AllowMultipleSubtypes.
4815
+ * Generates a single SQL batch that creates Record Change entries for all child entities
4816
+ * (and their sub-trees) except the active branch that triggered this parent save.
4817
+ *
4818
+ * @param parentInfo The overlapping parent entity's metadata
4819
+ * @param changeData The diff data (changesJSON and changesDescription) from the save
4820
+ * @param pkValue The shared primary key value
4821
+ * @param userId The ID of the user performing the save
4822
+ * @param activeChildEntityName The child entity that initiated this parent save (skipped).
4823
+ * Undefined when saving the parent directly — all children get propagated to.
4824
+ * @param transaction The active IS-A transaction, or undefined for standalone saves
4825
+ */
4826
+ async PropagateRecordChangesToSiblings(parentInfo, changeData, pkValue, userId, activeChildEntityName, transaction) {
4827
+ const sqlParts = [];
4828
+ let varIndex = 0;
4829
+ const safePKValue = pkValue.replace(/'/g, "''");
4830
+ const safeUserId = userId.replace(/'/g, "''");
4831
+ const safeChangesJSON = changeData.changesJSON.replace(/'/g, "''");
4832
+ const safeChangesDesc = changeData.changesDescription.replace(/'/g, "''");
4833
+ for (const childInfo of parentInfo.ChildEntities) {
4834
+ // Skip the active branch (the child that initiated the parent save).
4835
+ // When activeChildEntityName is undefined (direct save on parent), propagate to ALL children.
4836
+ if (activeChildEntityName && this.isEntityOrAncestorOf(childInfo, activeChildEntityName))
4837
+ continue;
4838
+ // Recursively enumerate this child's entire sub-tree from metadata
4839
+ const subTree = this.getFullSubTree(childInfo);
4840
+ for (const entityInTree of subTree) {
4841
+ if (!entityInTree.TrackRecordChanges)
4842
+ continue;
4843
+ const varName = `@_rc_prop_${varIndex++}`;
4844
+ sqlParts.push(this.buildSiblingRecordChangeSQL(varName, entityInTree, safeChangesJSON, safeChangesDesc, safePKValue, safeUserId));
4845
+ }
4846
+ }
4847
+ // Execute as single batch
4848
+ if (sqlParts.length > 0) {
4849
+ const batch = sqlParts.join('\n');
4850
+ await this.ExecuteSQL(batch, undefined, {
4851
+ connectionSource: transaction,
4852
+ description: 'IS-A overlapping subtype Record Change propagation',
4853
+ isMutation: true
4854
+ });
4855
+ }
4856
+ }
4857
+ /**
4858
+ * Checks whether a given entity matches the target name, or is an ancestor
4859
+ * of the target (i.e., the target is somewhere in its descendant sub-tree).
4860
+ * Used to identify and skip the active branch during sibling propagation.
4861
+ */
4862
+ isEntityOrAncestorOf(entityInfo, targetName) {
4863
+ if (entityInfo.Name === targetName)
4864
+ return true;
4865
+ for (const child of entityInfo.ChildEntities) {
4866
+ if (this.isEntityOrAncestorOf(child, targetName))
4867
+ return true;
4868
+ }
4869
+ return false;
4870
+ }
4871
+ /**
4872
+ * Recursively enumerates an entity's entire sub-tree from metadata.
4873
+ * No DB queries — uses EntityInfo.ChildEntities which is populated from metadata.
4874
+ */
4875
+ getFullSubTree(entityInfo) {
4876
+ const result = [entityInfo];
4877
+ for (const child of entityInfo.ChildEntities) {
4878
+ result.push(...this.getFullSubTree(child));
4879
+ }
4880
+ return result;
4881
+ }
4882
+ /**
4883
+ * Generates a single block of SQL for one sibling entity in the Record Change
4884
+ * propagation batch. Uses SELECT...FOR JSON to get the full record, then
4885
+ * conditionally inserts a Record Change entry if the record exists.
4886
+ */
4887
+ buildSiblingRecordChangeSQL(varName, entityInfo, safeChangesJSON, safeChangesDesc, safePKValue, safeUserId) {
4888
+ const schema = entityInfo.SchemaName || '__mj';
4889
+ const view = entityInfo.BaseView;
4890
+ const pkName = entityInfo.PrimaryKeys[0]?.Name ?? 'ID';
4891
+ const safeEntityName = entityInfo.Name.replace(/'/g, "''");
4892
+ // Build RecordID in CompositeKey format: "FieldCodeName|Value" (or "F1|V1||F2|V2" for composite PKs)
4893
+ // Must match the format used by the main save flow (concatPKIDString in GetSaveSQLWithDetails)
4894
+ const recordID = entityInfo.PrimaryKeys
4895
+ .map(pk => `${pk.CodeName}${CompositeKey.DefaultValueDelimiter}${safePKValue}`)
4896
+ .join(CompositeKey.DefaultFieldDelimiter);
4897
+ return `
4898
+ DECLARE ${varName} NVARCHAR(MAX) = (
4899
+ SELECT * FROM [${schema}].[${view}] WHERE [${pkName}] = '${safePKValue}'
4900
+ FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
4901
+ );
4902
+ IF ${varName} IS NOT NULL
4903
+ EXEC [${this.MJCoreSchemaName}].spCreateRecordChange_Internal
4904
+ @EntityName='${safeEntityName}',
4905
+ @RecordID='${recordID}',
4906
+ @UserID='${safeUserId}',
4907
+ @Type='Update',
4908
+ @ChangesJSON='${safeChangesJSON}',
4909
+ @ChangesDescription='${safeChangesDesc}',
4910
+ @FullRecordJSON=${varName},
4911
+ @Status='Complete',
4912
+ @Comments=NULL;`;
4913
+ }
4757
4914
  async BeginTransaction() {
4758
4915
  try {
4759
4916
  this._transactionDepth++;