@hed-hog/cli 0.0.108 → 0.0.110

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/cli",
3
- "version": "0.0.108",
3
+ "version": "0.0.110",
4
4
  "description": "HedHog CLI tool",
5
5
  "author": "HedHog",
6
6
  "private": false,
@@ -48,6 +48,7 @@ export interface SchemaDiff {
48
48
  }
49
49
  export interface RelationChange {
50
50
  parentKeyValue: string;
51
+ parentRow?: any;
51
52
  targetTable: string;
52
53
  addedRelations: any[];
53
54
  removedRelations: any[];
@@ -85,12 +86,15 @@ export declare class DiffService {
85
86
  private loadAllRawData;
86
87
  private loadRawTableDef;
87
88
  /** Returns the identity key column name(s) for a table, or null if none found.
88
- * Priority: slug > column-level isUnique > table-level uniqueIndices > FK columns (junction fallback)
89
+ * Priority: slug > column-level isUnique > table-level uniqueIndices > FK columns (junction fallback).
90
+ * When rows are provided, prefer a complete candidate; otherwise use the candidate
91
+ * that identifies the most rows.
89
92
  */
90
- findIdentityKey(table: TableDefinition): string | string[] | null;
93
+ findIdentityKey(table: TableDefinition, rows?: any[]): string | string[] | null;
91
94
  getRowKeyValue(row: any, keyColumn: string | string[]): string | null;
92
95
  private rowScalarsChanged;
93
96
  private diffRelations;
97
+ private guessRelationItemIdentityKey;
94
98
  detectRenameCandidates(droppedColumns: TableColumn[], addedColumns: TableColumn[]): RenameCandidate[];
95
99
  private prompt;
96
100
  promptRenames(tableName: string, candidates: RenameCandidate[]): Promise<RenameDecision[]>;
@@ -214,7 +214,10 @@ let DiffService = class DiffService {
214
214
  });
215
215
  continue;
216
216
  }
217
- const keyColumn = this.findIdentityKey(tableDef);
217
+ const keyColumn = this.findIdentityKey(tableDef, [
218
+ ...oldRows,
219
+ ...newRows,
220
+ ]);
218
221
  if (!keyColumn) {
219
222
  console.warn(chalk.yellow(`[update] Cannot diff data for table "${tableName}": no identity key (slug or unique column) found. Treating all rows as inserts.`));
220
223
  fileChanges.push({
@@ -248,7 +251,7 @@ let DiffService = class DiffService {
248
251
  else {
249
252
  if (this.rowScalarsChanged(oldRow, newRow))
250
253
  updatedRows.push(newRow);
251
- relationChanges.push(...this.diffRelations(oldRow, newRow, keyVal));
254
+ relationChanges.push(...this.diffRelations(oldRow, newRow, keyVal, fallbackTableDefs));
252
255
  }
253
256
  }
254
257
  const newKeySet = new Set(newRows
@@ -292,7 +295,7 @@ let DiffService = class DiffService {
292
295
  fallbackTableDefs?.get(name) ??
293
296
  null;
294
297
  if (tableDef) {
295
- const keyColumn = this.findIdentityKey(tableDef);
298
+ const keyColumn = this.findIdentityKey(tableDef, rows);
296
299
  if (keyColumn) {
297
300
  const invalidRows = [];
298
301
  for (let i = 0; i < rows.length; i++) {
@@ -301,17 +304,24 @@ let DiffService = class DiffService {
301
304
  invalidRows.push({ index: i, row: rows[i] });
302
305
  }
303
306
  }
304
- if (invalidRows.length > 0) {
307
+ if (invalidRows.length === rows.length) {
308
+ const maxRowsToShow = 10;
305
309
  const details = invalidRows
310
+ .slice(0, maxRowsToShow)
306
311
  .map(({ index, row }) => ` Row ${index} (0-based):\n${JSON.stringify(row, null, 4)
307
312
  .split('\n')
308
313
  .map((l) => ` ${l}`)
309
314
  .join('\n')}`)
310
315
  .join('\n');
316
+ const omittedCount = invalidRows.length - maxRowsToShow;
317
+ const omittedDetails = omittedCount > 0
318
+ ? `\n ... ${omittedCount} more invalid row(s) omitted.`
319
+ : '';
311
320
  throw new Error(`[update] Invalid data in "${filePath}":\n` +
312
321
  ` Identity key: ${JSON.stringify(keyColumn)}\n` +
313
322
  ` ${invalidRows.length} row(s) have a null or missing identity key value:\n` +
314
- details);
323
+ details +
324
+ omittedDetails);
315
325
  }
316
326
  }
317
327
  }
@@ -379,24 +389,47 @@ let DiffService = class DiffService {
379
389
  }
380
390
  }
381
391
  /** Returns the identity key column name(s) for a table, or null if none found.
382
- * Priority: slug > column-level isUnique > table-level uniqueIndices > FK columns (junction fallback)
392
+ * Priority: slug > column-level isUnique > table-level uniqueIndices > FK columns (junction fallback).
393
+ * When rows are provided, prefer a complete candidate; otherwise use the candidate
394
+ * that identifies the most rows.
383
395
  */
384
- findIdentityKey(table) {
396
+ findIdentityKey(table, rows) {
397
+ const candidates = [];
385
398
  if (table.columns.some((c) => c.name === 'slug'))
386
- return 'slug';
399
+ candidates.push('slug');
387
400
  const uniqueCols = table.columns.filter((c) => c.isUnique);
388
401
  if (uniqueCols.length === 1)
389
- return uniqueCols[0].name;
402
+ candidates.push(uniqueCols[0].name);
390
403
  if (uniqueCols.length > 1)
391
- return uniqueCols.map((c) => c.name);
404
+ candidates.push(uniqueCols.map((c) => c.name));
392
405
  // Table-level composite unique index (e.g. from YAML indices: section)
393
406
  if (table.uniqueIndices?.length)
394
- return table.uniqueIndices[0];
407
+ candidates.push(...table.uniqueIndices);
408
+ // Common route identity for HTTP routes. Some route tables also contain MCP
409
+ // rows keyed by tool_name, so row coverage decides which candidate wins.
410
+ if (table.columns.some((c) => c.name === 'url') &&
411
+ table.columns.some((c) => c.name === 'method')) {
412
+ candidates.push(['url', 'method']);
413
+ }
395
414
  // Junction-table fallback: use all FK columns as composite key
396
415
  const fkCols = table.columns.filter((c) => c.type === 'fk');
397
416
  if (fkCols.length > 0)
398
- return fkCols.map((c) => c.name);
399
- return null;
417
+ candidates.push(fkCols.map((c) => c.name));
418
+ if (rows?.length) {
419
+ const scoredCandidates = candidates.map((candidate, index) => ({
420
+ candidate,
421
+ index,
422
+ count: rows.filter((row) => this.getRowKeyValue(row, candidate) !== null).length,
423
+ }));
424
+ const completeCandidate = scoredCandidates.find(({ count }) => count === rows.length)?.candidate;
425
+ if (completeCandidate)
426
+ return completeCandidate;
427
+ scoredCandidates.sort((a, b) => b.count - a.count || a.index - b.index);
428
+ const bestCandidate = scoredCandidates[0];
429
+ if (bestCandidate?.count > 0)
430
+ return bestCandidate.candidate;
431
+ }
432
+ return candidates[0] ?? null;
400
433
  }
401
434
  getRowKeyValue(row, keyColumn) {
402
435
  if (Array.isArray(keyColumn)) {
@@ -432,7 +465,7 @@ let DiffService = class DiffService {
432
465
  return (JSON.stringify(extractScalars(oldRow)) !==
433
466
  JSON.stringify(extractScalars(newRow)));
434
467
  }
435
- diffRelations(oldRow, newRow, parentKeyValue) {
468
+ diffRelations(oldRow, newRow, parentKeyValue, allTablesMap) {
436
469
  const changes = [];
437
470
  const oldRels = oldRow.relations || {};
438
471
  const newRels = newRow.relations || {};
@@ -443,13 +476,60 @@ let DiffService = class DiffService {
443
476
  for (const targetTable of allTargets) {
444
477
  const oldRelList = (oldRels[targetTable] ?? []);
445
478
  const newRelList = (newRels[targetTable] ?? []);
446
- const oldRelSet = new Set(oldRelList.map((r) => JSON.stringify(r)));
447
- const newRelSet = new Set(newRelList.map((r) => JSON.stringify(r)));
448
- const addedRelations = newRelList.filter((r) => !oldRelSet.has(JSON.stringify(r)));
449
- const removedRelations = oldRelList.filter((r) => !newRelSet.has(JSON.stringify(r)));
479
+ // Try to use an identity key for smarter comparison:
480
+ // items with the same identity key that differ in content are treated as
481
+ // "updates" (kept in addedRelations for upsert) rather than "remove + add".
482
+ // This prevents false DELETE prompts for records that still exist in the
483
+ // new version but with changed content.
484
+ const targetTableDef = allTablesMap?.get(targetTable) ?? null;
485
+ const rawIdentityKey = targetTableDef
486
+ ? this.findIdentityKey(targetTableDef)
487
+ : this.guessRelationItemIdentityKey([...oldRelList, ...newRelList]);
488
+ const identityKey = Array.isArray(rawIdentityKey) ? null : rawIdentityKey;
489
+ let addedRelations;
490
+ let removedRelations;
491
+ if (identityKey) {
492
+ const oldByKey = new Map();
493
+ for (const r of oldRelList) {
494
+ const keyVal = r[identityKey] !== undefined ? String(r[identityKey]) : null;
495
+ if (keyVal !== null)
496
+ oldByKey.set(keyVal, r);
497
+ }
498
+ const newByKey = new Map();
499
+ for (const r of newRelList) {
500
+ const keyVal = r[identityKey] !== undefined ? String(r[identityKey]) : null;
501
+ if (keyVal !== null)
502
+ newByKey.set(keyVal, r);
503
+ }
504
+ // Truly removed: identity key present in old but absent in new
505
+ removedRelations = oldRelList.filter((r) => {
506
+ const keyVal = r[identityKey] !== undefined ? String(r[identityKey]) : null;
507
+ if (keyVal === null)
508
+ return !newRelList.some((nr) => JSON.stringify(nr) === JSON.stringify(r));
509
+ return !newByKey.has(keyVal);
510
+ });
511
+ // Truly added: identity key absent in old.
512
+ // Also includes items with same key but changed content (treated as upsert).
513
+ addedRelations = newRelList.filter((r) => {
514
+ const keyVal = r[identityKey] !== undefined ? String(r[identityKey]) : null;
515
+ if (keyVal === null)
516
+ return !oldRelList.some((or) => JSON.stringify(or) === JSON.stringify(r));
517
+ if (!oldByKey.has(keyVal))
518
+ return true;
519
+ return JSON.stringify(oldByKey.get(keyVal)) !== JSON.stringify(r);
520
+ });
521
+ }
522
+ else {
523
+ // Fallback: exact JSON comparison (original behavior)
524
+ const oldRelSet = new Set(oldRelList.map((r) => JSON.stringify(r)));
525
+ const newRelSet = new Set(newRelList.map((r) => JSON.stringify(r)));
526
+ addedRelations = newRelList.filter((r) => !oldRelSet.has(JSON.stringify(r)));
527
+ removedRelations = oldRelList.filter((r) => !newRelSet.has(JSON.stringify(r)));
528
+ }
450
529
  if (addedRelations.length || removedRelations.length) {
451
530
  changes.push({
452
531
  parentKeyValue,
532
+ parentRow: newRow,
453
533
  targetTable,
454
534
  addedRelations,
455
535
  removedRelations,
@@ -458,6 +538,15 @@ let DiffService = class DiffService {
458
538
  }
459
539
  return changes;
460
540
  }
541
+ guessRelationItemIdentityKey(items) {
542
+ if (items.length === 0)
543
+ return null;
544
+ for (const key of ['slug', 'code', 'name']) {
545
+ if (items.every((item) => typeof item[key] === 'string'))
546
+ return key;
547
+ }
548
+ return null;
549
+ }
461
550
  // ── Rename detection ────────────────────────────────────────────────────────
462
551
  detectRenameCandidates(droppedColumns, addedColumns) {
463
552
  const candidates = [];
@@ -1 +1 @@
1
- {"version":3,"file":"diff.service.js","sourceRoot":"","sources":["../../../../../src/modules/hedhog/services/diff.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.service.js","sourceRoot":"","sources":["../../../../../src/modules/hedhog/services/diff.service.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,10 @@ export declare class MigrationService {
86
86
  private generateColumnAlterSQL;
87
87
  private getColumnTypeDef;
88
88
  private generateDataUpdateSQL;
89
+ private generateRowUpsertWithRelationsSQL;
89
90
  private generateRowUpsertSQL;
90
91
  private resolveRawValue;
91
92
  private generateRelationUpdateSQL;
93
+ private buildParentKeySQL;
94
+ private buildIdentityWhereConditions;
92
95
  }
@@ -1431,12 +1431,12 @@ let MigrationService = class MigrationService {
1431
1431
  const tableDef = allTables.find((t) => t.name === fc.tableName);
1432
1432
  if (!tableDef)
1433
1433
  continue;
1434
- const keyCol = this.diffService.findIdentityKey(tableDef);
1434
+ const keyCol = this.diffService.findIdentityKey(tableDef, fc.allRows);
1435
1435
  if (!keyCol)
1436
1436
  continue;
1437
1437
  sql.push(`-- UpsertData (new data file): ${fc.tableName}`);
1438
1438
  for (const row of fc.allRows) {
1439
- const rowSql = this.generateRowUpsertSQL(row, tableDef, keyCol, allTables);
1439
+ const rowSql = await this.generateRowUpsertWithRelationsSQL(row, tableDef, keyCol, allTables, cwd);
1440
1440
  sql.push(...rowSql);
1441
1441
  }
1442
1442
  sql.push('');
@@ -1482,7 +1482,7 @@ let MigrationService = class MigrationService {
1482
1482
  if (change.insertedRows.length > 0) {
1483
1483
  sql.push(`-- InsertData: ${change.tableName}`);
1484
1484
  for (const row of change.insertedRows) {
1485
- sql.push(...this.generateRowUpsertSQL(row, tableDef, change.keyColumn, allTables));
1485
+ sql.push(...(await this.generateRowUpsertWithRelationsSQL(row, tableDef, change.keyColumn, allTables, cwd)));
1486
1486
  }
1487
1487
  sql.push('');
1488
1488
  }
@@ -1490,7 +1490,7 @@ let MigrationService = class MigrationService {
1490
1490
  if (change.updatedRows.length > 0) {
1491
1491
  sql.push(`-- UpdateData: ${change.tableName}`);
1492
1492
  for (const row of change.updatedRows) {
1493
- sql.push(...this.generateRowUpsertSQL(row, tableDef, change.keyColumn, allTables));
1493
+ sql.push(...(await this.generateRowUpsertWithRelationsSQL(row, tableDef, change.keyColumn, allTables, cwd)));
1494
1494
  }
1495
1495
  sql.push('');
1496
1496
  }
@@ -1511,16 +1511,25 @@ let MigrationService = class MigrationService {
1511
1511
  }
1512
1512
  // Relation changes
1513
1513
  for (const relChange of change.relationChanges) {
1514
- if (Array.isArray(change.keyColumn))
1515
- continue; // composite-key tables don't have nested relations
1516
1514
  const mapKey = `${change.tableName}::${relChange.targetTable}`;
1517
1515
  const approvedRelDeletes = approvedRelationDeletesMap.get(mapKey) ?? [];
1518
- const relSql = await this.generateRelationUpdateSQL(change.tableName, change.keyColumn, relChange.parentKeyValue, relChange.targetTable, relChange.addedRelations, relChange.removedRelations, approvedRelDeletes, allTables, cwd);
1516
+ const relSql = await this.generateRelationUpdateSQL(change.tableName, change.keyColumn, relChange.parentKeyValue, relChange.parentRow ?? null, relChange.targetTable, relChange.addedRelations, relChange.removedRelations, approvedRelDeletes, allTables, cwd);
1519
1517
  sql.push(...relSql);
1520
1518
  }
1521
1519
  }
1522
1520
  return sql;
1523
1521
  }
1522
+ async generateRowUpsertWithRelationsSQL(row, tableDef, keyColumn, allTables, cwd) {
1523
+ const sql = this.generateRowUpsertSQL(row, tableDef, keyColumn, allTables);
1524
+ if (this.diffService.getRowKeyValue(row, keyColumn) === null)
1525
+ return sql;
1526
+ const relations = row.relations || {};
1527
+ for (const [targetTable, addedRelations] of Object.entries(relations)) {
1528
+ const relationSql = await this.generateRelationUpdateSQL(tableDef.name, keyColumn, this.diffService.getRowKeyValue(row, keyColumn) ?? '', row, targetTable, Array.isArray(addedRelations) ? addedRelations : [], [], [], allTables, cwd);
1529
+ sql.push(...relationSql);
1530
+ }
1531
+ return sql;
1532
+ }
1524
1533
  generateRowUpsertSQL(row, tableDef, keyColumn, allTables) {
1525
1534
  const sql = [];
1526
1535
  const keyCols = Array.isArray(keyColumn) ? keyColumn : [keyColumn];
@@ -1645,7 +1654,7 @@ let MigrationService = class MigrationService {
1645
1654
  }
1646
1655
  return `'${String(value).replace(/'/g, "''")}'`;
1647
1656
  }
1648
- async generateRelationUpdateSQL(parentTable, parentKeyColumn, parentKeyValue, targetTable, addedRelations, removedRelations, approvedRemovals, allTables, cwd) {
1657
+ async generateRelationUpdateSQL(parentTable, parentKeyColumn, parentKeyValue, parentRow, targetTable, addedRelations, removedRelations, approvedRemovals, allTables, cwd) {
1649
1658
  const sql = [];
1650
1659
  const junctionResult = await this.tableService.getTableIntermediate(parentTable, targetTable, cwd);
1651
1660
  if (!junctionResult) {
@@ -1656,7 +1665,11 @@ let MigrationService = class MigrationService {
1656
1665
  const targetPk = targetTableDef?.pk ?? 'id';
1657
1666
  const parentTableDef = allTables.find((t) => t.name === parentTable);
1658
1667
  const parentPk = parentTableDef?.pk ?? 'id';
1659
- const parentKeySQL = `(SELECT "${parentPk}" FROM "${parentTable}" WHERE "${parentKeyColumn}" = '${String(parentKeyValue).replace(/'/g, "''")}')`;
1668
+ const parentKeySQL = this.buildParentKeySQL(parentTable, parentKeyColumn, parentKeyValue, parentRow, parentTableDef, allTables);
1669
+ if (!parentKeySQL) {
1670
+ sql.push(`-- WARNING: Could not build parent selector for relation "${parentTable}" ↔ "${targetTable}". Relation changes skipped.`, '');
1671
+ return sql;
1672
+ }
1660
1673
  if (junctionResult.intermediateTable) {
1661
1674
  const junctionName = junctionResult.name;
1662
1675
  const fkForParent = junctionResult.table.columns.find((c) => c.type === 'fk' && c.references?.table === parentTable)?.name;
@@ -1666,7 +1679,7 @@ let MigrationService = class MigrationService {
1666
1679
  for (const rel of addedRelations) {
1667
1680
  const whereClause = this.getWhereString(rel);
1668
1681
  const targetSQL = `(SELECT "${targetPk}" FROM "${targetTable}" ${whereClause})`;
1669
- sql.push(`-- AddRelation: ${parentTable} ↔ ${targetTable}`, `INSERT INTO "${junctionName}" ("${fkForParent}", "${fkForTarget}") VALUES (${parentKeySQL}, ${targetSQL}) ON CONFLICT DO NOTHING;`, '');
1682
+ sql.push(`-- AddRelation: ${parentTable} ↔ ${targetTable}`, `INSERT INTO "${junctionName}" ("${fkForParent}", "${fkForTarget}") SELECT ${parentKeySQL}, ${targetSQL} WHERE ${parentKeySQL} IS NOT NULL AND ${targetSQL} IS NOT NULL AND NOT EXISTS (SELECT 1 FROM "${junctionName}" WHERE "${fkForParent}" = ${parentKeySQL} AND "${fkForTarget}" = ${targetSQL});`, '');
1670
1683
  }
1671
1684
  for (const rel of removedRelations) {
1672
1685
  const isApproved = approvedRemovals.some((a) => a.parentKeyValue === parentKeyValue &&
@@ -1687,7 +1700,28 @@ let MigrationService = class MigrationService {
1687
1700
  for (const rel of addedRelations) {
1688
1701
  const whereClause = this.getWhereString(rel);
1689
1702
  if (!whereClause) {
1690
- console.warn(chalk.yellow(`[update] Skipping AddRelation (child) for "${childTable}": relation item has no identity ("where" clause). Row: ${JSON.stringify(rel)}`));
1703
+ // Full row object (not a { where: ... } reference) upsert the row
1704
+ // and set the FK to the parent.
1705
+ const targetTableDef = allTables.find((t) => t.name === childTable);
1706
+ if (!targetTableDef) {
1707
+ console.warn(chalk.yellow(`[update] Skipping AddRelation (child) for "${childTable}": table definition not found. Row: ${JSON.stringify(rel)}`));
1708
+ continue;
1709
+ }
1710
+ const childKeyCol = this.diffService.findIdentityKey(targetTableDef);
1711
+ if (!childKeyCol || Array.isArray(childKeyCol)) {
1712
+ console.warn(chalk.yellow(`[update] Skipping AddRelation (child) for "${childTable}": could not determine identity key. Row: ${JSON.stringify(rel)}`));
1713
+ continue;
1714
+ }
1715
+ const childKeyVal = rel[childKeyCol];
1716
+ if (childKeyVal === null || childKeyVal === undefined) {
1717
+ console.warn(chalk.yellow(`[update] Skipping AddRelation (child) for "${childTable}": identity key "${childKeyCol}" is null. Row: ${JSON.stringify(rel)}`));
1718
+ continue;
1719
+ }
1720
+ sql.push(`-- UpsertAndRelate (child): ${childTable}`);
1721
+ const rowSql = this.generateRowUpsertSQL(rel, targetTableDef, childKeyCol, allTables);
1722
+ sql.push(...rowSql);
1723
+ const safeKeyVal = String(childKeyVal).replace(/'/g, "''");
1724
+ sql.push(`UPDATE "${childTable}" SET "${fkForParent}" = ${parentKeySQL} WHERE "${childKeyCol}" = '${safeKeyVal}';`, '');
1691
1725
  continue;
1692
1726
  }
1693
1727
  sql.push(`-- AddRelation (child): ${childTable}`, `UPDATE "${childTable}" SET "${fkForParent}" = ${parentKeySQL} WHERE ${whereClause.replace(/^WHERE\s+/i, '')};`, '');
@@ -1698,11 +1732,67 @@ let MigrationService = class MigrationService {
1698
1732
  if (!isApproved)
1699
1733
  continue;
1700
1734
  const whereClause = this.getWhereString(rel);
1735
+ if (!whereClause) {
1736
+ // Full row object — build DELETE using the identity key instead of an
1737
+ // empty EXISTS clause that would match all rows in the child table.
1738
+ const targetTableDef = allTables.find((t) => t.name === childTable);
1739
+ const childKeyCol = targetTableDef
1740
+ ? this.diffService.findIdentityKey(targetTableDef)
1741
+ : null;
1742
+ if (childKeyCol &&
1743
+ !Array.isArray(childKeyCol) &&
1744
+ rel[childKeyCol] != null) {
1745
+ const safeKeyVal = String(rel[childKeyCol]).replace(/'/g, "''");
1746
+ sql.push(`-- RemoveRelation (child): ${childTable}`, `DELETE FROM "${childTable}" WHERE "${childKeyCol}" = '${safeKeyVal}';`, '');
1747
+ }
1748
+ else {
1749
+ console.warn(chalk.yellow(`[update] Skipping DeleteRelation (child) for "${childTable}": could not build WHERE clause. Row: ${JSON.stringify(rel)}`));
1750
+ }
1751
+ continue;
1752
+ }
1701
1753
  sql.push(`-- RemoveRelation (child): ${childTable}`, `DELETE FROM "${childTable}" WHERE "${fkForParent}" = ${parentKeySQL} AND EXISTS (SELECT 1 FROM "${targetTable}" ${whereClause});`, '');
1702
1754
  }
1703
1755
  }
1704
1756
  return sql;
1705
1757
  }
1758
+ buildParentKeySQL(parentTable, parentKeyColumn, parentKeyValue, parentRow, parentTableDef, allTables) {
1759
+ const parentPk = parentTableDef?.pk ?? 'id';
1760
+ const whereConditions = this.buildIdentityWhereConditions(parentKeyColumn, parentRow, parentKeyValue, parentTableDef, allTables);
1761
+ if (!whereConditions)
1762
+ return null;
1763
+ return `(SELECT "${parentPk}" FROM "${parentTable}" WHERE ${whereConditions})`;
1764
+ }
1765
+ buildIdentityWhereConditions(keyColumn, row, fallbackKeyValue, tableDef, allTables) {
1766
+ if (!Array.isArray(keyColumn)) {
1767
+ const value = row && row[keyColumn] !== undefined ? row[keyColumn] : fallbackKeyValue;
1768
+ if (value === null || value === undefined || value === '')
1769
+ return null;
1770
+ if (tableDef) {
1771
+ return `"${keyColumn}" = ${this.resolveRawValue(value, keyColumn, tableDef, allTables)}`;
1772
+ }
1773
+ return `"${keyColumn}" = '${String(value).replace(/'/g, "''")}'`;
1774
+ }
1775
+ if (row) {
1776
+ const conditions = keyColumn.map((key) => {
1777
+ const value = row[key];
1778
+ if (value === null || value === undefined)
1779
+ return null;
1780
+ if (tableDef) {
1781
+ return `"${key}" = ${this.resolveRawValue(value, key, tableDef, allTables)}`;
1782
+ }
1783
+ return `"${key}" = '${String(value).replace(/'/g, "''")}'`;
1784
+ });
1785
+ if (conditions.some((condition) => condition === null))
1786
+ return null;
1787
+ return conditions.join(' AND ');
1788
+ }
1789
+ const values = fallbackKeyValue.split('::');
1790
+ if (values.length !== keyColumn.length)
1791
+ return null;
1792
+ return keyColumn
1793
+ .map((key, index) => `"${key}" = '${values[index].replace(/'/g, "''")}'`)
1794
+ .join(' AND ');
1795
+ }
1706
1796
  };
1707
1797
  exports.MigrationService = MigrationService;
1708
1798
  exports.MigrationService = MigrationService = __decorate([