@lyku/lockstep-pg 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/package.json +30 -30
  2. package/src/buildTableIndexCommand.d.ts.map +1 -1
  3. package/src/buildTableIndexCommand.js +21 -6
  4. package/src/buildTableIndexCommand.js.map +1 -1
  5. package/src/buildTableTriggerCommands.d.ts +13 -1
  6. package/src/buildTableTriggerCommands.d.ts.map +1 -1
  7. package/src/buildTableTriggerCommands.js +33 -14
  8. package/src/buildTableTriggerCommands.js.map +1 -1
  9. package/src/createTable.d.ts.map +1 -1
  10. package/src/createTable.js +16 -2
  11. package/src/createTable.js.map +1 -1
  12. package/src/dateToPostgresString.js +2 -2
  13. package/src/dateToPostgresString.js.map +1 -1
  14. package/src/diff.d.ts +7 -0
  15. package/src/diff.d.ts.map +1 -1
  16. package/src/diff.js +79 -8
  17. package/src/diff.js.map +1 -1
  18. package/src/drift.d.ts +8 -11
  19. package/src/drift.d.ts.map +1 -1
  20. package/src/drift.js +1 -298
  21. package/src/drift.js.map +1 -1
  22. package/src/form.d.ts.map +1 -1
  23. package/src/form.js +43 -2
  24. package/src/form.js.map +1 -1
  25. package/src/generateSql.d.ts.map +1 -1
  26. package/src/generateSql.js +47 -5
  27. package/src/generateSql.js.map +1 -1
  28. package/src/index.d.ts +3 -3
  29. package/src/index.d.ts.map +1 -1
  30. package/src/index.js +2 -4
  31. package/src/index.js.map +1 -1
  32. package/src/introspect.d.ts +12 -0
  33. package/src/introspect.d.ts.map +1 -1
  34. package/src/introspect.js +189 -34
  35. package/src/introspect.js.map +1 -1
  36. package/src/mapColumnType.d.ts.map +1 -1
  37. package/src/mapColumnType.js +3 -0
  38. package/src/mapColumnType.js.map +1 -1
  39. package/src/migrate.d.ts +11 -9
  40. package/src/migrate.d.ts.map +1 -1
  41. package/src/migrate.js +28 -345
  42. package/src/migrate.js.map +1 -1
  43. package/src/seed.d.ts.map +1 -1
  44. package/src/seed.js +6 -1
  45. package/src/seed.js.map +1 -1
package/package.json CHANGED
@@ -1,32 +1,32 @@
1
1
  {
2
- "name": "@lyku/lockstep-pg",
3
- "version": "0.2.0",
4
- "description": "Schema-driven PostgreSQL migration toolkit: drift detection, introspection, and SQL generation for @lyku/lockstep-core models",
5
- "main": "./src/index.js",
6
- "types": "./src/index.d.ts",
7
- "type": "module",
8
- "license": "GPL-3.0",
9
- "exports": {
10
- ".": {
11
- "types": "./src/index.d.ts",
12
- "import": "./src/index.js",
13
- "default": "./src/index.js"
14
- }
15
- },
16
- "peerDependencies": {
17
- "@lyku/lockstep-core": ">=0.2.0"
18
- },
19
- "dependencies": {
20
- "pg": "^8.0.0"
21
- },
22
- "keywords": [
23
- "postgresql",
24
- "migration",
25
- "schema",
26
- "drift",
27
- "introspection",
28
- "lockstep",
29
- "lockstep-core"
30
- ],
31
- "module": "./src/index.js"
2
+ "name": "@lyku/lockstep-pg",
3
+ "version": "0.2.1",
4
+ "description": "Schema-driven PostgreSQL migration toolkit: drift detection, introspection, and SQL generation for @lyku/lockstep-core models",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "type": "module",
8
+ "license": "GPL-3.0",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./src/index.d.ts",
12
+ "import": "./src/index.js",
13
+ "default": "./src/index.js"
14
+ }
15
+ },
16
+ "peerDependencies": {
17
+ "@lyku/lockstep-core": ">=0.2.0"
18
+ },
19
+ "dependencies": {
20
+ "pg": "^8.0.0"
21
+ },
22
+ "keywords": [
23
+ "postgresql",
24
+ "migration",
25
+ "schema",
26
+ "drift",
27
+ "introspection",
28
+ "lockstep",
29
+ "lockstep-core"
30
+ ],
31
+ "module": "./src/index.js"
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableIndexCommand.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableIndexCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,wBAAgB,uBAAuB,CACtC,CAAC,SAAS,kBAAkB,CAAC,mBAAmB,CAAC,EAChD,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,YAmD5B"}
1
+ {"version":3,"file":"buildTableIndexCommand.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableIndexCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,wBAAgB,uBAAuB,CACtC,CAAC,SAAS,kBAAkB,CAAC,mBAAmB,CAAC,EAChD,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,YAkE5B"}
@@ -21,13 +21,28 @@ export function buildTableIndexCommands(tableName, model) {
21
21
  indexName = `idx_${tableName}_${index.map((c) => c.split(' ')[0]).join('_')}`;
22
22
  }
23
23
  else {
24
- // Object format with optional custom name and where clause
24
+ // Object format with optional custom name, where clause, or raw expression list
25
25
  const objIndex = index;
26
- const cols = Array.isArray(objIndex.columns)
27
- ? objIndex.columns
28
- : [objIndex.columns];
29
- indexColumns = cols.map((col) => `"${col}"`);
30
- indexName = objIndex.name ?? `idx_${tableName}_${cols.join('_')}`;
26
+ if (objIndex.raw !== undefined) {
27
+ // Expression / functional index: literal column-list SQL, emitted verbatim
28
+ // (no identifier quoting) so casts/expressions like ((columns[1])::numeric) work.
29
+ indexColumns = [objIndex.raw];
30
+ indexName = objIndex.name ?? `idx_${tableName}_expr`;
31
+ }
32
+ else {
33
+ const cols = Array.isArray(objIndex.columns)
34
+ ? objIndex.columns
35
+ : [objIndex.columns];
36
+ indexColumns = cols.map((col) => {
37
+ const parts = col.split(' ');
38
+ const colName = parts[0];
39
+ const modifiers = parts.slice(1).join(' ');
40
+ return modifiers ? `"${colName}" ${modifiers}` : `"${colName}"`;
41
+ });
42
+ indexName =
43
+ objIndex.name ??
44
+ `idx_${tableName}_${cols.map((c) => c.split(' ')[0]).join('_')}`;
45
+ }
31
46
  // Support partial indexes with WHERE clause
32
47
  if (objIndex.where) {
33
48
  whereClause = objIndex.where;
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableIndexCommand.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableIndexCommand.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAErC,SAAiB,EAAE,KAAQ;IAC5B,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/B,IAAI,YAAsB,CAAC;YAC3B,IAAI,SAAiB,CAAC;YACtB,IAAI,WAA+B,CAAC;YAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,sBAAsB;gBACtB,YAAY,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBAC9B,SAAS,GAAG,OAAO,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,qBAAqB;gBACrB,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAChC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B;oBACtE,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC;gBACjE,CAAC,CAAC,CAAC;gBACH,SAAS,GAAG,OAAO,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACP,2DAA2D;gBAC3D,MAAM,QAAQ,GAAG,KAIhB,CAAC;gBACF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAC3C,CAAC,CAAC,QAAQ,CAAC,OAAO;oBAClB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;gBAC7C,SAAS,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClE,4CAA4C;gBAC5C,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACpB,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAC9B,CAAC;YACF,CAAC;YAED,IAAI,UAAU,GAAG,+BAA+B,SAAS,SAAS,SAAS,MAAM,YAAY,CAAC,IAAI,CACjG,IAAI,CACJ,GAAG,CAAC;YACL,IAAI,WAAW,EAAE,CAAC;gBACjB,UAAU,IAAI,WAAW,WAAW,EAAE,CAAC;YACxC,CAAC;YACD,UAAU,IAAI,GAAG,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"buildTableIndexCommand.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableIndexCommand.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,15 @@
1
- import { PostgresRecordModel, PostgresTableModel } from '@lyku/lockstep-core';
1
+ import { PostgresRecordModel, PostgresTableModel, PostgresTriggerModel } from '@lyku/lockstep-core';
2
+ /**
3
+ * Deterministic trigger name: the explicit `name`, else the positional
4
+ * `{table}_trigger_{i+1}`. Drift detection and DDL generation MUST agree on
5
+ * this, so both go through here.
6
+ */
7
+ export declare function triggerName(tableName: string, trigger: PostgresTriggerModel, index: number): string;
8
+ /**
9
+ * The CREATE-FUNCTION + CREATE-TRIGGER pair for a single trigger. Idempotent
10
+ * (CREATE OR REPLACE FUNCTION + DROP/CREATE TRIGGER), so it's safe to re-run and
11
+ * safe to emit from a drift migration onto an existing table.
12
+ */
13
+ export declare function buildTriggerCommands(tableName: string, trigger: PostgresTriggerModel, index: number): string[];
2
14
  export declare function buildTableTriggerCommands<T extends PostgresTableModel<PostgresRecordModel>>(tableName: string, model: T): string[];
3
15
  //# sourceMappingURL=buildTableTriggerCommands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableTriggerCommands.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableTriggerCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,wBAAgB,yBAAyB,CACxC,CAAC,SAAS,kBAAkB,CAAC,mBAAmB,CAAC,EAChD,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,YA2B5B"}
1
+ {"version":3,"file":"buildTableTriggerCommands.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableTriggerCommands.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,MAAM,GACX,MAAM,EAAE,CAoBV;AAED,wBAAgB,yBAAyB,CACxC,CAAC,SAAS,kBAAkB,CAAC,mBAAmB,CAAC,EAChD,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,YAS5B"}
@@ -1,21 +1,40 @@
1
+ /**
2
+ * Deterministic trigger name: the explicit `name`, else the positional
3
+ * `{table}_trigger_{i+1}`. Drift detection and DDL generation MUST agree on
4
+ * this, so both go through here.
5
+ */
6
+ export function triggerName(tableName, trigger, index) {
7
+ return trigger.name ?? `${tableName}_trigger_${index + 1}`;
8
+ }
9
+ /**
10
+ * The CREATE-FUNCTION + CREATE-TRIGGER pair for a single trigger. Idempotent
11
+ * (CREATE OR REPLACE FUNCTION + DROP/CREATE TRIGGER), so it's safe to re-run and
12
+ * safe to emit from a drift migration onto an existing table.
13
+ */
14
+ export function buildTriggerCommands(tableName, trigger, index) {
15
+ const name = triggerName(tableName, trigger, index);
16
+ const timing = 'before' in trigger ? 'BEFORE' : 'AFTER';
17
+ const event = 'before' in trigger ? trigger.before : trigger.after;
18
+ return [
19
+ `CREATE OR REPLACE FUNCTION ${name}_fn()\n` +
20
+ `RETURNS TRIGGER AS $$\n` +
21
+ `BEGIN\n` +
22
+ `${trigger.sql}\n` +
23
+ `END;\n` +
24
+ `$$ LANGUAGE plpgsql;\n`,
25
+ `DROP TRIGGER IF EXISTS ${name} ON "${tableName}";\n` +
26
+ `CREATE TRIGGER ${name}\n` +
27
+ `${timing} ${event.toUpperCase()}\n` +
28
+ `ON "${tableName}"\n` +
29
+ `FOR EACH ROW\n` +
30
+ `EXECUTE FUNCTION ${name}_fn();`,
31
+ ];
32
+ }
1
33
  export function buildTableTriggerCommands(tableName, model) {
2
34
  const triggerQueries = [];
3
35
  if (model.triggers) {
4
36
  model.triggers.forEach((trigger, i) => {
5
- const triggerName = trigger.name ?? `${tableName}_trigger_${i + 1}`;
6
- const timing = 'before' in trigger ? 'BEFORE' : 'AFTER';
7
- const event = 'before' in trigger ? trigger.before : trigger.after;
8
- triggerQueries.push(`CREATE OR REPLACE FUNCTION ${triggerName}_fn()\n` +
9
- `RETURNS TRIGGER AS $$\n` +
10
- `BEGIN\n` +
11
- `${trigger.sql}\n` +
12
- `END;\n` +
13
- `$$ LANGUAGE plpgsql;\n`, `DROP TRIGGER IF EXISTS ${triggerName} ON "${tableName}";\n` +
14
- `CREATE TRIGGER ${triggerName}\n` +
15
- `${timing} ${event.toUpperCase()}\n` +
16
- `ON "${tableName}"\n` +
17
- `FOR EACH ROW\n` +
18
- `EXECUTE FUNCTION ${triggerName}_fn();`);
37
+ triggerQueries.push(...buildTriggerCommands(tableName, trigger, i));
19
38
  });
20
39
  }
21
40
  return triggerQueries;
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableTriggerCommands.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableTriggerCommands.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAEvC,SAAiB,EAAE,KAAQ;IAC5B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACxD,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;YAEnE,cAAc,CAAC,IAAI,CAClB,8BAA8B,WAAW,SAAS;gBACjD,yBAAyB;gBACzB,SAAS;gBACT,GAAG,OAAO,CAAC,GAAG,IAAI;gBAClB,QAAQ;gBACR,wBAAwB,EAEzB,0BAA0B,WAAW,QAAQ,SAAS,MAAM;gBAC3D,kBAAkB,WAAW,IAAI;gBACjC,GAAG,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI;gBACpC,OAAO,SAAS,KAAK;gBACrB,gBAAgB;gBAChB,oBAAoB,WAAW,QAAQ,CACxC,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"buildTableTriggerCommands.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/buildTableTriggerCommands.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAC1B,SAAiB,EACjB,OAA6B,EAC7B,KAAa;IAEb,OAAO,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,YAAY,KAAK,GAAG,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CACnC,SAAiB,EACjB,OAA6B,EAC7B,KAAa;IAEb,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,MAAM,KAAK,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEnE,OAAO;QACN,8BAA8B,IAAI,SAAS;YAC1C,yBAAyB;YACzB,SAAS;YACT,GAAG,OAAO,CAAC,GAAG,IAAI;YAClB,QAAQ;YACR,wBAAwB;QAEzB,0BAA0B,IAAI,QAAQ,SAAS,MAAM;YACpD,kBAAkB,IAAI,IAAI;YAC1B,GAAG,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI;YACpC,OAAO,SAAS,KAAK;YACrB,gBAAgB;YAChB,oBAAoB,IAAI,QAAQ;KACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAEvC,SAAiB,EAAE,KAAQ;IAC5B,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACrC,cAAc,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,cAAc,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createTable.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/createTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAa9E,eAAO,MAAM,yBAAyB,GACrC,WAAW,MAAM,EACjB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,WAkC9C,CAAC"}
1
+ {"version":3,"file":"createTable.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/createTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAa9E,eAAO,MAAM,yBAAyB,GACrC,WAAW,MAAM,EACjB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,WAqD9C,CAAC"}
@@ -14,8 +14,12 @@ function formatDefault(def) {
14
14
  export const buildTableCreationCommand = (tableName, model) => {
15
15
  const { schema } = model;
16
16
  const required = 'required' in schema ? schema.required : [];
17
+ // Managed (infra) columns are emitted alongside the record-schema columns but
18
+ // are not part of `schema.properties` (so they stay out of the domain type).
19
+ // They are nullable-with-default; NOT NULL still derives only from `required`.
20
+ const managed = Object.entries(model.managedColumns ?? {});
17
21
  const columns = 'properties' in schema
18
- ? Object.entries(schema.properties)
22
+ ? [...Object.entries(schema.properties), ...managed]
19
23
  .map(([columnName, columnSchema]) => {
20
24
  const columnType = mapColumnType(columnName, columnSchema);
21
25
  const notNull = required.includes(columnName) ? ' NOT NULL' : '';
@@ -40,7 +44,17 @@ export const buildTableCreationCommand = (tableName, model) => {
40
44
  .map((k) => `"${k}"`)
41
45
  .join(', ')})`
42
46
  : '';
43
- const createTableQuery = `CREATE TABLE IF NOT EXISTS "${tableName}" (${columns} ${primary} ${uni});`;
47
+ // Foreign keys model shape: { column: { referencedTable: referencedColumn } }.
48
+ // Emitted inline so a table created from a model round-trips with its FKs (the referenced
49
+ // table must already exist; generateCreateTablesSql topologically orders tables for that).
50
+ const fks = model.foreignKeys
51
+ ? Object.entries(model.foreignKeys)
52
+ .flatMap(([column, ref]) => ref
53
+ ? Object.entries(ref).map(([refTable, refColumn]) => `, FOREIGN KEY ("${column}") REFERENCES "${refTable}" ("${refColumn}")`)
54
+ : [])
55
+ .join('')
56
+ : '';
57
+ const createTableQuery = `CREATE TABLE IF NOT EXISTS "${tableName}" (${columns} ${primary} ${uni}${fks});`;
44
58
  return createTableQuery;
45
59
  };
46
60
  //# sourceMappingURL=createTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createTable.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/createTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,SAAS,aAAa,CAAC,GAAY;IAClC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;QAC7D,OAAQ,GAAuB,CAAC,GAAG,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC;IAC/C,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,SAAiB,EACjB,KAA8C,EAC7C,EAAE;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,OAAO,GACZ,YAAY,IAAI,MAAM;QACrB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,EAAE;YACnC,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,MAAM,UAAU,GACf,SAAS,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,CAAC;YACjE,MAAM,aAAa,GAAG,UAAU;gBAC/B,CAAC,CAAC,YAAY,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,OAAO,IAAI,UAAU,KAAK,UAAU,GAAG,aAAa,GAAG,OAAO,EAAE,CAAC;QAClE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC;QACb,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU;QACzB,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC;aAC7B,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,GAAG;QAChB,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,GAAG,GAAG,MAAM;QACjB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;aACpB,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,GAAG;QAChB,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,gBAAgB,GAAG,+BAA+B,SAAS,MAAM,OAAO,IAAI,OAAO,IAAI,GAAG,IAAI,CAAC;IACrG,OAAO,gBAAgB,CAAC;AACzB,CAAC,CAAC"}
1
+ {"version":3,"file":"createTable.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/createTable.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export const dateToPostgresString = (date) => {
2
2
  // Ensure we're working with a Date object
3
3
  const dateObj = date instanceof Date ? date : new Date(date);
4
- // Format: YYYY-MM-DD HH:MM:SS.sss
5
- return dateObj.toISOString().slice(0, 19).replace('T', ' ');
4
+ // Format: YYYY-MM-DD HH:MM:SS.sss (slice(0,23) keeps milliseconds, drops the trailing 'Z')
5
+ return dateObj.toISOString().slice(0, 23).replace('T', ' ');
6
6
  };
7
7
  //# sourceMappingURL=dateToPostgresString.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dateToPostgresString.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/dateToPostgresString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAmB,EAAE,EAAE;IAC3D,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,kCAAkC;IAClC,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC"}
1
+ {"version":3,"file":"dateToPostgresString.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/dateToPostgresString.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAAmB,EAAE,EAAE;IAC3D,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7D,4FAA4F;IAC5F,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC"}
package/src/diff.d.ts CHANGED
@@ -23,6 +23,7 @@ export type DiffOperation = {
23
23
  fromType: string;
24
24
  toType: string;
25
25
  toArrayItemType: string | null;
26
+ toLength: number | null;
26
27
  } | {
27
28
  type: 'alter_column_nullable';
28
29
  tableName: string;
@@ -44,6 +45,11 @@ export type DiffOperation = {
44
45
  tableName: string;
45
46
  columnName: string;
46
47
  sequenceName: string;
48
+ } | {
49
+ type: 'create_sequence';
50
+ tableName: string;
51
+ columnName: string;
52
+ sequenceName: string;
47
53
  } | {
48
54
  type: 'add_index';
49
55
  tableName: string;
@@ -60,6 +66,7 @@ export type DiffOperation = {
60
66
  type: 'drop_unique_constraint';
61
67
  tableName: string;
62
68
  columns: string[];
69
+ constraintName?: string;
63
70
  } | {
64
71
  type: 'add_foreign_key';
65
72
  tableName: string;
package/src/diff.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/diff.ts"],"names":[],"mappings":"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"}
package/src/diff.js CHANGED
@@ -9,8 +9,12 @@
9
9
  function normalizeDefault(value) {
10
10
  if (value === null || value === undefined)
11
11
  return null;
12
- // Strip type casts like ::regclass, ::text, etc.
13
- return value.replace(/::\w+/g, '').trim().toLowerCase();
12
+ // Strip type casts including multi-word types, e.g. ::regclass, ::text,
13
+ // ::character varying, ::timestamp with time zone, ::double precision.
14
+ return value
15
+ .replace(/::"?[\w ]+"?(\[\])?/g, '')
16
+ .trim()
17
+ .toLowerCase();
14
18
  }
15
19
  /**
16
20
  * Check if two sets of columns match (order-independent)
@@ -64,6 +68,23 @@ function diffColumn(tableName, dbCol, codeCol) {
64
68
  fromType: dbCol.type,
65
69
  toType: codeCol.type,
66
70
  toArrayItemType: codeCol.arrayItemType,
71
+ toLength: codeCol.maxLength ?? null,
72
+ });
73
+ }
74
+ else if ((codeCol.type === 'char' || codeCol.type === 'varchar') &&
75
+ codeCol.maxLength != null &&
76
+ dbCol.maxLength != null &&
77
+ codeCol.maxLength !== dbCol.maxLength) {
78
+ // Same base type, different length (char(4) -> char(6), varchar(50) -> varchar(255)).
79
+ // Without this the engine is blind to length drift.
80
+ ops.push({
81
+ type: 'alter_column_type',
82
+ tableName,
83
+ columnName: dbCol.name,
84
+ fromType: `${dbCol.type}(${dbCol.maxLength ?? ''})`,
85
+ toType: codeCol.type,
86
+ toArrayItemType: codeCol.arrayItemType,
87
+ toLength: codeCol.maxLength ?? null,
67
88
  });
68
89
  }
69
90
  // Nullable mismatch
@@ -77,6 +98,23 @@ function diffColumn(tableName, dbCol, codeCol) {
77
98
  }
78
99
  // Default mismatch
79
100
  if (normalizeDefault(dbCol.default) !== normalizeDefault(codeCol.default)) {
101
+ // If the NEW default is a nextval() sequence, create the sequence
102
+ // before SET DEFAULT references it (LYK-1214). Otherwise the
103
+ // generator emits `SET DEFAULT nextval('x_id_seq')` for a sequence
104
+ // that doesn't exist (e.g. a serial model whose backing sequence was
105
+ // dropped), which fails with "relation does not exist". IF NOT
106
+ // EXISTS keeps it a no-op when the sequence is already present.
107
+ if (codeCol.default?.includes('nextval(')) {
108
+ const seqMatch = codeCol.default.match(/nextval\('([^']+)'/);
109
+ if (seqMatch) {
110
+ ops.push({
111
+ type: 'create_sequence',
112
+ tableName,
113
+ columnName: dbCol.name,
114
+ sequenceName: seqMatch[1],
115
+ });
116
+ }
117
+ }
80
118
  ops.push({
81
119
  type: 'alter_column_default',
82
120
  tableName,
@@ -121,27 +159,57 @@ function diffIndexes(tableName, dbIndexes, codeIndexes) {
121
159
  const dbNonPk = dbIndexes.filter((i) => !i.name.endsWith('_pkey') && !i.name.includes('_pkey'));
122
160
  // Find indexes in code that don't exist in DB
123
161
  for (const codeIdx of codeIndexes) {
124
- const found = dbNonPk.some((dbIdx) => columnsMatch(dbIdx.columns, codeIdx.columns));
162
+ const found = dbNonPk.some((dbIdx) => dbIdx.name === codeIdx.name ||
163
+ columnsMatch(dbIdx.columns, codeIdx.columns));
125
164
  if (!found) {
126
165
  ops.push({ type: 'add_index', tableName, index: codeIdx });
127
166
  }
128
167
  }
129
- // Note: We don't drop extra indexes by default as they may be intentional
130
- // performance optimizations added manually
168
+ // Drop indexes present in the DB but absent from the model. Categorized destructive
169
+ // (reported, never auto-applied) so legitimate hand-added perf indexes aren't silently
170
+ // nuked — but they ARE surfaced as drift. Exclude PK and constraint-backed indexes
171
+ // (*_pkey / *_unique / *_key), which are handled as constraints, not standalone indexes.
172
+ for (const dbIdx of dbNonPk) {
173
+ if (dbIdx.name.endsWith('_unique') || dbIdx.name.endsWith('_key'))
174
+ continue;
175
+ const found = codeIndexes.some((codeIdx) => codeIdx.name === dbIdx.name ||
176
+ columnsMatch(codeIdx.columns, dbIdx.columns));
177
+ if (!found) {
178
+ ops.push({ type: 'drop_index', tableName, indexName: dbIdx.name });
179
+ }
180
+ }
131
181
  return ops;
132
182
  }
133
183
  /**
134
184
  * Diff unique constraints
135
185
  */
136
- function diffUniqueConstraints(tableName, dbUnique, codeUnique) {
186
+ function diffUniqueConstraints(tableName, dbUnique, codeUnique, dbNames) {
137
187
  const ops = [];
138
- // Find constraints in code that don't exist in DB
188
+ // Find constraints in code that don't exist in DB -> add
139
189
  for (const codeCols of codeUnique) {
140
190
  const found = dbUnique.some((dbCols) => columnsMatch(dbCols, codeCols));
141
191
  if (!found) {
142
192
  ops.push({ type: 'add_unique_constraint', tableName, columns: codeCols });
143
193
  }
144
194
  }
195
+ // Find unique constraints in the DB that aren't in the model -> drop. Categorized
196
+ // destructive (surfaced, never auto-applied), but DETECTED — otherwise the engine is
197
+ // blind to extra/wrong constraints (e.g. the phantom single-column uniques) and can't
198
+ // surface them for remediation. A diff that only adds isn't a diff.
199
+ for (const dbCols of dbUnique) {
200
+ const found = codeUnique.some((codeCols) => columnsMatch(dbCols, codeCols));
201
+ if (!found) {
202
+ // Use the real DB constraint name so the DROP actually matches (Postgres names
203
+ // inline/column-level uniques "<table>_<col>_key", not "<table>_<col>_unique").
204
+ const constraintName = dbNames?.find((n) => columnsMatch(n.columns, dbCols))?.name;
205
+ ops.push({
206
+ type: 'drop_unique_constraint',
207
+ tableName,
208
+ columns: dbCols,
209
+ ...(constraintName ? { constraintName } : {}),
210
+ });
211
+ }
212
+ }
145
213
  return ops;
146
214
  }
147
215
  /**
@@ -175,7 +243,7 @@ export function diffTable(dbTable, codeTable) {
175
243
  // Diff indexes
176
244
  ops.push(...diffIndexes(tableName, dbTable.indexes, codeTable.indexes));
177
245
  // Diff unique constraints
178
- ops.push(...diffUniqueConstraints(tableName, dbTable.uniqueConstraints, codeTable.uniqueConstraints));
246
+ ops.push(...diffUniqueConstraints(tableName, dbTable.uniqueConstraints, codeTable.uniqueConstraints, dbTable.uniqueConstraintNames));
179
247
  // Diff foreign keys
180
248
  const dbFks = dbTable.foreignKeys ?? [];
181
249
  const codeFks = codeTable.foreignKeys ?? [];
@@ -231,6 +299,8 @@ export function categorizeOperations(ops) {
231
299
  case 'add_index':
232
300
  case 'add_unique_constraint':
233
301
  case 'update_check_constraint':
302
+ case 'add_foreign_key':
303
+ case 'create_sequence':
234
304
  safe.push(op);
235
305
  break;
236
306
  case 'drop_table':
@@ -238,6 +308,7 @@ export function categorizeOperations(ops) {
238
308
  case 'drop_index':
239
309
  case 'drop_unique_constraint':
240
310
  case 'drop_sequence':
311
+ case 'drop_foreign_key':
241
312
  destructive.push(op);
242
313
  break;
243
314
  case 'alter_column_type':
package/src/diff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/diff.ts"],"names":[],"mappings":"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"}
package/src/drift.d.ts CHANGED
@@ -1,16 +1,13 @@
1
1
  import type { PostgresRecordModel, PostgresTableModel } from '@lyku/lockstep-core';
2
- export interface Drift {
3
- type: 'missing_table' | 'extra_table' | 'missing_column' | 'extra_column' | 'column_type_mismatch' | 'nullable_mismatch' | 'missing_index' | 'extra_index' | 'missing_constraint' | 'extra_constraint' | 'check_constraint_mismatch' | 'missing_stock_doc';
4
- table: string;
5
- details: string;
6
- column?: string;
7
- expected?: string;
8
- actual?: string;
9
- constraintName?: string;
10
- docId?: string | number;
11
- }
2
+ /**
3
+ * The aggregated schema config (all table models) the migration engine diffs the live DB against.
4
+ *
5
+ * NOTE: the legacy narrow drift detector (`detectDrift`) and its SQL generator (`driftToSql`) were
6
+ * removed. There is now a single migration/drift engine — introspect → `diffDatabase` →
7
+ * `generateMigrationSql` (see `migrate.ts` and `apps/dataform/src/schemaDiff.ts`). This file keeps
8
+ * only the shared config type so existing `import { DataformConfig } from './drift'` sites are stable.
9
+ */
12
10
  export interface DataformConfig {
13
11
  tables: Record<string, PostgresTableModel<PostgresRecordModel>>;
14
12
  }
15
- export declare function detectDrift(connectionString: string, config: DataformConfig): Promise<Drift[]>;
16
13
  //# sourceMappingURL=drift.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/drift.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,qBAAqB,CAAC;AAqB7B,MAAM,WAAW,KAAK;IACrB,IAAI,EACD,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,cAAc,GACd,sBAAsB,GACtB,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,kBAAkB,GAClB,2BAA2B,GAC3B,mBAAmB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AA4CD,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;CAChE;AAED,wBAAsB,WAAW,CAChC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,cAAc,GACpB,OAAO,CAAC,KAAK,EAAE,CAAC,CA2SlB"}
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../../../libs/lockstep-pg/src/drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC;CAChE"}