@dsqlbase/migration 0.1.0 → 0.1.2

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 (138) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/base.d.ts +87 -0
  3. package/dist/base.d.ts.map +1 -0
  4. package/dist/base.js +53 -0
  5. package/dist/base.js.map +1 -0
  6. package/dist/ddl/ast.d.ts +267 -0
  7. package/dist/ddl/ast.d.ts.map +1 -0
  8. package/dist/ddl/ast.js +10 -0
  9. package/dist/ddl/ast.js.map +1 -0
  10. package/dist/ddl/factory.d.ts +88 -0
  11. package/dist/ddl/factory.d.ts.map +1 -0
  12. package/dist/ddl/factory.js +186 -0
  13. package/dist/ddl/factory.js.map +1 -0
  14. package/dist/ddl/index.d.ts +5 -0
  15. package/dist/ddl/index.d.ts.map +1 -0
  16. package/dist/ddl/index.js +4 -0
  17. package/dist/ddl/index.js.map +1 -0
  18. package/dist/ddl/printer.d.ts +21 -0
  19. package/dist/ddl/printer.d.ts.map +1 -0
  20. package/dist/ddl/printer.js +278 -0
  21. package/dist/ddl/printer.js.map +1 -0
  22. package/dist/ddl/schema.d.ts +33 -0
  23. package/dist/ddl/schema.d.ts.map +1 -0
  24. package/dist/ddl/schema.js +133 -0
  25. package/dist/ddl/schema.js.map +1 -0
  26. package/dist/executor.d.ts +29 -0
  27. package/dist/executor.d.ts.map +1 -0
  28. package/dist/executor.js +93 -0
  29. package/dist/executor.js.map +1 -0
  30. package/dist/index.d.ts +7 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +7 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/introspection/introspect.d.ts +8 -0
  35. package/dist/introspection/introspect.d.ts.map +1 -0
  36. package/dist/introspection/introspect.js +14 -0
  37. package/dist/introspection/introspect.js.map +1 -0
  38. package/dist/introspection/normalizer.d.ts +96 -0
  39. package/dist/introspection/normalizer.d.ts.map +1 -0
  40. package/dist/introspection/normalizer.js +187 -0
  41. package/dist/introspection/normalizer.js.map +1 -0
  42. package/dist/introspection/query.d.ts +3 -0
  43. package/dist/introspection/query.d.ts.map +1 -0
  44. package/dist/introspection/query.js +284 -0
  45. package/dist/introspection/query.js.map +1 -0
  46. package/dist/reconciliation/diffs/base.d.ts +19 -0
  47. package/dist/reconciliation/diffs/base.d.ts.map +1 -0
  48. package/dist/reconciliation/diffs/base.js +58 -0
  49. package/dist/reconciliation/diffs/base.js.map +1 -0
  50. package/dist/reconciliation/diffs/column.d.ts +42 -0
  51. package/dist/reconciliation/diffs/column.d.ts.map +1 -0
  52. package/dist/reconciliation/diffs/column.js +48 -0
  53. package/dist/reconciliation/diffs/column.js.map +1 -0
  54. package/dist/reconciliation/diffs/constraint.d.ts +9 -0
  55. package/dist/reconciliation/diffs/constraint.d.ts.map +1 -0
  56. package/dist/reconciliation/diffs/constraint.js +122 -0
  57. package/dist/reconciliation/diffs/constraint.js.map +1 -0
  58. package/dist/reconciliation/diffs/domain.d.ts +17 -0
  59. package/dist/reconciliation/diffs/domain.d.ts.map +1 -0
  60. package/dist/reconciliation/diffs/domain.js +30 -0
  61. package/dist/reconciliation/diffs/domain.js.map +1 -0
  62. package/dist/reconciliation/diffs/indexes.d.ts +18 -0
  63. package/dist/reconciliation/diffs/indexes.d.ts.map +1 -0
  64. package/dist/reconciliation/diffs/indexes.js +59 -0
  65. package/dist/reconciliation/diffs/indexes.js.map +1 -0
  66. package/dist/reconciliation/diffs/sequence.d.ts +19 -0
  67. package/dist/reconciliation/diffs/sequence.d.ts.map +1 -0
  68. package/dist/reconciliation/diffs/sequence.js +17 -0
  69. package/dist/reconciliation/diffs/sequence.js.map +1 -0
  70. package/dist/reconciliation/diffs/table.d.ts +6 -0
  71. package/dist/reconciliation/diffs/table.d.ts.map +1 -0
  72. package/dist/reconciliation/diffs/table.js +52 -0
  73. package/dist/reconciliation/diffs/table.js.map +1 -0
  74. package/dist/reconciliation/operations/base.d.ts +54 -0
  75. package/dist/reconciliation/operations/base.d.ts.map +1 -0
  76. package/dist/reconciliation/operations/base.js +27 -0
  77. package/dist/reconciliation/operations/base.js.map +1 -0
  78. package/dist/reconciliation/operations/domain.d.ts +7 -0
  79. package/dist/reconciliation/operations/domain.d.ts.map +1 -0
  80. package/dist/reconciliation/operations/domain.js +88 -0
  81. package/dist/reconciliation/operations/domain.js.map +1 -0
  82. package/dist/reconciliation/operations/index.d.ts +6 -0
  83. package/dist/reconciliation/operations/index.d.ts.map +1 -0
  84. package/dist/reconciliation/operations/index.js +35 -0
  85. package/dist/reconciliation/operations/index.js.map +1 -0
  86. package/dist/reconciliation/operations/schema.d.ts +7 -0
  87. package/dist/reconciliation/operations/schema.d.ts.map +1 -0
  88. package/dist/reconciliation/operations/schema.js +41 -0
  89. package/dist/reconciliation/operations/schema.js.map +1 -0
  90. package/dist/reconciliation/operations/sequence.d.ts +7 -0
  91. package/dist/reconciliation/operations/sequence.d.ts.map +1 -0
  92. package/dist/reconciliation/operations/sequence.js +75 -0
  93. package/dist/reconciliation/operations/sequence.js.map +1 -0
  94. package/dist/reconciliation/operations/table.d.ts +9 -0
  95. package/dist/reconciliation/operations/table.d.ts.map +1 -0
  96. package/dist/reconciliation/operations/table.js +513 -0
  97. package/dist/reconciliation/operations/table.js.map +1 -0
  98. package/dist/reconciliation/planner.d.ts +3 -0
  99. package/dist/reconciliation/planner.d.ts.map +1 -0
  100. package/dist/reconciliation/planner.js +125 -0
  101. package/dist/reconciliation/planner.js.map +1 -0
  102. package/dist/reconciliation/reconcile.d.ts +22 -0
  103. package/dist/reconciliation/reconcile.d.ts.map +1 -0
  104. package/dist/reconciliation/reconcile.js +48 -0
  105. package/dist/reconciliation/reconcile.js.map +1 -0
  106. package/dist/runner.d.ts +41 -0
  107. package/dist/runner.d.ts.map +1 -0
  108. package/dist/runner.js +69 -0
  109. package/dist/runner.js.map +1 -0
  110. package/dist/validation/context.d.ts +32 -0
  111. package/dist/validation/context.d.ts.map +1 -0
  112. package/dist/validation/context.js +25 -0
  113. package/dist/validation/context.js.map +1 -0
  114. package/dist/validation/index.d.ts +3 -0
  115. package/dist/validation/index.d.ts.map +1 -0
  116. package/dist/validation/index.js +2 -0
  117. package/dist/validation/index.js.map +1 -0
  118. package/dist/validation/rules/global.d.ts +5 -0
  119. package/dist/validation/rules/global.d.ts.map +1 -0
  120. package/dist/validation/rules/global.js +35 -0
  121. package/dist/validation/rules/global.js.map +1 -0
  122. package/dist/validation/rules/schema.d.ts +4 -0
  123. package/dist/validation/rules/schema.d.ts.map +1 -0
  124. package/dist/validation/rules/schema.js +12 -0
  125. package/dist/validation/rules/schema.js.map +1 -0
  126. package/dist/validation/rules/sequence.d.ts +4 -0
  127. package/dist/validation/rules/sequence.d.ts.map +1 -0
  128. package/dist/validation/rules/sequence.js +13 -0
  129. package/dist/validation/rules/sequence.js.map +1 -0
  130. package/dist/validation/rules/table.d.ts +12 -0
  131. package/dist/validation/rules/table.d.ts.map +1 -0
  132. package/dist/validation/rules/table.js +164 -0
  133. package/dist/validation/rules/table.js.map +1 -0
  134. package/dist/validation/validate.d.ts +13 -0
  135. package/dist/validation/validate.d.ts.map +1 -0
  136. package/dist/validation/validate.js +42 -0
  137. package/dist/validation/validate.js.map +1 -0
  138. package/package.json +2 -2
@@ -0,0 +1,30 @@
1
+ import { diffType, hasDiff } from "./base.js";
2
+ export function diffDomain(local, remote) {
3
+ const diffs = [];
4
+ for (const key of ["dataType", "notNull", "defaultValue"]) {
5
+ if (hasDiff(local, remote, key)) {
6
+ diffs.push({
7
+ type: diffType(local, remote, key),
8
+ kind: local.kind,
9
+ name: local.name,
10
+ object: local,
11
+ key,
12
+ value: local[key],
13
+ prevValue: remote[key],
14
+ });
15
+ }
16
+ }
17
+ if (hasDiff(local.check, remote.check, "name")) {
18
+ diffs.push({
19
+ type: diffType(local, remote, "check"),
20
+ kind: local.kind,
21
+ name: local.name,
22
+ object: local,
23
+ key: "check",
24
+ value: local.check,
25
+ prevValue: remote.check,
26
+ });
27
+ }
28
+ return diffs;
29
+ }
30
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/reconciliation/diffs/domain.ts"],"names":[],"mappings":"AAEA,OAAO,EAAQ,QAAQ,EAAY,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,UAAU,UAAU,CACxB,KAA4C,EAC5C,MAA6C;IAE7C,MAAM,KAAK,GAA4D,EAAE,CAAC;IAE1E,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAU,EAAE,CAAC;QACnE,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK;gBACb,GAAG;gBACH,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;gBACjB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,MAAM,CAAC,KAAK;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { AnyIndexDefinition } from "@dsqlbase/core/definition";
2
+ import { SerializedObject } from "../../base.js";
3
+ import { Diff, DiffType } from "./base.js";
4
+ export declare function diffIndex(local: SerializedObject<AnyIndexDefinition>, remote?: SerializedObject<AnyIndexDefinition>): Diff<DiffType, {
5
+ readonly kind: "INDEX";
6
+ readonly name: any;
7
+ readonly unique: boolean;
8
+ readonly distinctNulls: boolean | undefined;
9
+ readonly columns: {
10
+ readonly kind: "INDEX_COLUMN";
11
+ readonly name: `${any}_column_${any}`;
12
+ readonly sortDirection: "ASC" | "DESC";
13
+ readonly nulls: "FIRST" | "LAST";
14
+ readonly column: any;
15
+ }[];
16
+ readonly include: any[] | null;
17
+ }>[];
18
+ //# sourceMappingURL=indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/diffs/indexes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAW,MAAM,WAAW,CAAC;AAEpD,wBAAgB,SAAS,CACvB,KAAK,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAC3C,MAAM,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;;;;;;;;;;;;;KAgE9C"}
@@ -0,0 +1,59 @@
1
+ import { hasDiff } from "./base.js";
2
+ export function diffIndex(local, remote) {
3
+ const diffs = [];
4
+ if (!remote) {
5
+ diffs.push({
6
+ type: "add",
7
+ kind: local.kind,
8
+ name: local.name,
9
+ object: local,
10
+ });
11
+ return diffs;
12
+ }
13
+ if (hasDiff(local, remote, "unique")) {
14
+ diffs.push({
15
+ type: "modify",
16
+ kind: local.kind,
17
+ name: local.name,
18
+ object: local,
19
+ key: "unique",
20
+ value: local.unique,
21
+ prevValue: remote.unique,
22
+ });
23
+ }
24
+ if (hasDiff(local, remote, "distinctNulls")) {
25
+ diffs.push({
26
+ type: "modify",
27
+ kind: local.kind,
28
+ name: local.name,
29
+ object: local,
30
+ key: "distinctNulls",
31
+ value: local.distinctNulls,
32
+ prevValue: remote.distinctNulls,
33
+ });
34
+ }
35
+ if (hasDiff(local, remote, "columns")) {
36
+ diffs.push({
37
+ type: "modify",
38
+ kind: local.kind,
39
+ name: local.name,
40
+ object: local,
41
+ key: "columns",
42
+ value: local.columns,
43
+ prevValue: remote.columns,
44
+ });
45
+ }
46
+ if (hasDiff(local, remote, "include")) {
47
+ diffs.push({
48
+ type: "modify",
49
+ kind: local.kind,
50
+ name: local.name,
51
+ object: local,
52
+ key: "include",
53
+ value: local.include,
54
+ prevValue: remote.include,
55
+ });
56
+ }
57
+ return diffs;
58
+ }
59
+ //# sourceMappingURL=indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../../src/reconciliation/diffs/indexes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,SAAS,CACvB,KAA2C,EAC3C,MAA6C;IAE7C,MAAM,KAAK,GAA2D,EAAE,CAAC;IAEzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,SAAS,EAAE,MAAM,CAAC,MAAM;SACzB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,eAAe;YACpB,KAAK,EAAE,KAAK,CAAC,aAAa;YAC1B,SAAS,EAAE,MAAM,CAAC,aAAa;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { AnySequenceDefinition } from "@dsqlbase/core/definition";
2
+ import { SerializedObject } from "../../base.js";
3
+ import { Diff, DiffType } from "./base.js";
4
+ export declare function diffSequence(local: SerializedObject<AnySequenceDefinition>, remote: SerializedObject<AnySequenceDefinition>): Diff<DiffType, {
5
+ readonly kind: "SEQUENCE";
6
+ readonly name: any;
7
+ readonly namespace: any;
8
+ readonly options: {
9
+ readonly dataType: string | undefined;
10
+ readonly cache: number | undefined;
11
+ readonly cycle: boolean | undefined;
12
+ readonly increment: number | undefined;
13
+ readonly minValue: number | undefined;
14
+ readonly maxValue: number | undefined;
15
+ readonly startValue: number | undefined;
16
+ readonly ownedBy: string | undefined;
17
+ };
18
+ }>[];
19
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/diffs/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAW,MAAM,WAAW,CAAC;AAEpD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAC9C,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;KAiBhD"}
@@ -0,0 +1,17 @@
1
+ import { hasDiff } from "./base.js";
2
+ export function diffSequence(local, remote) {
3
+ const diffs = [];
4
+ if (hasDiff(local, remote, "options")) {
5
+ diffs.push({
6
+ type: "modify",
7
+ kind: local.kind,
8
+ name: local.name,
9
+ object: local,
10
+ key: "options",
11
+ value: local.options,
12
+ prevValue: remote.options,
13
+ });
14
+ }
15
+ return diffs;
16
+ }
17
+ //# sourceMappingURL=sequence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../../src/reconciliation/diffs/sequence.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpD,MAAM,UAAU,YAAY,CAC1B,KAA8C,EAC9C,MAA+C;IAE/C,MAAM,KAAK,GAA8D,EAAE,CAAC;IAE5E,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,SAAS,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { AnyCheckConstraintDefinition, AnyColumnDefinition, AnyConstraintDefinition, AnyIndexDefinition, AnyPrimaryKeyConstraintDefinition, AnyTableDefinition, AnyUniqueConstraintDefinition } from "@dsqlbase/core/definition";
2
+ import { SerializedObject } from "../../base.js";
3
+ import { Diff, DiffType } from "./base.js";
4
+ export type TableDiffType = Diff<DiffType, SerializedObject<AnyColumnDefinition>> | Diff<DiffType, SerializedObject<AnyIndexDefinition>> | Diff<DiffType, SerializedObject<AnyConstraintDefinition>> | Diff<DiffType, SerializedObject<AnyPrimaryKeyConstraintDefinition>> | Diff<DiffType, SerializedObject<AnyUniqueConstraintDefinition>> | Diff<DiffType, SerializedObject<AnyCheckConstraintDefinition>>;
5
+ export declare function diffTable(local: SerializedObject<AnyTableDefinition>, remote: SerializedObject<AnyTableDefinition>): TableDiffType[];
6
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/diffs/table.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,iCAAiC,EACjC,kBAAkB,EAClB,6BAA6B,EAC9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAK3C,MAAM,MAAM,aAAa,GACrB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,GACrD,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GACpD,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,GACzD,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,iCAAiC,CAAC,CAAC,GACnE,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,GAC/D,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,CAAC;AAEnE,wBAAgB,SAAS,CACvB,KAAK,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,EAC3C,MAAM,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,mBAiE7C"}
@@ -0,0 +1,52 @@
1
+ import { diffColumn } from "./column.js";
2
+ import { diffConstraint } from "./constraint.js";
3
+ import { diffIndex } from "./indexes.js";
4
+ export function diffTable(local, remote) {
5
+ const diffs = [];
6
+ const remoteColumns = new Map(remote.columns.map((col) => [col.name, col]));
7
+ const remoteIndexes = new Map(remote.indexes.map((idx) => [idx.name, idx]));
8
+ const remoteConstraints = new Map(remote.constraints.map((c) => [c.name, c]));
9
+ for (const localColumn of local.columns) {
10
+ const remoteColumn = remoteColumns.get(localColumn.name);
11
+ diffs.push(...diffColumn(localColumn, remoteColumn));
12
+ remoteColumns.delete(localColumn.name);
13
+ }
14
+ for (const remoteColumn of remoteColumns.values()) {
15
+ diffs.push({
16
+ type: "remove",
17
+ kind: "COLUMN",
18
+ name: remoteColumn.name,
19
+ object: remoteColumn,
20
+ });
21
+ }
22
+ for (const localIndex of local.indexes) {
23
+ const remoteIndex = remoteIndexes.get(localIndex.name);
24
+ diffs.push(...diffIndex(localIndex, remoteIndex));
25
+ remoteIndexes.delete(localIndex.name);
26
+ }
27
+ for (const remoteIndex of remoteIndexes.values()) {
28
+ diffs.push({
29
+ type: "remove",
30
+ kind: "INDEX",
31
+ name: remoteIndex.name,
32
+ object: remoteIndex,
33
+ });
34
+ }
35
+ for (const localConstraint of local.constraints) {
36
+ const remoteConstraint = remoteConstraints.get(localConstraint.name);
37
+ if (!remoteConstraint || localConstraint.kind === remoteConstraint.kind) {
38
+ diffs.push(...diffConstraint(localConstraint, remoteConstraint));
39
+ remoteConstraints.delete(localConstraint.name);
40
+ }
41
+ }
42
+ for (const remoteConstraint of remoteConstraints.values()) {
43
+ diffs.push({
44
+ type: "remove",
45
+ kind: remoteConstraint.kind,
46
+ name: remoteConstraint.name,
47
+ object: remoteConstraint,
48
+ });
49
+ }
50
+ return diffs;
51
+ }
52
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/reconciliation/diffs/table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { DefinitionNode } from "@dsqlbase/core/definition";
2
+ import { SerializedObject } from "../../base.js";
3
+ import { DDLStatement } from "../../ddl/index.js";
4
+ import { AnyDiff } from "../diffs/base.js";
5
+ export interface DDLOperationOptions {
6
+ /**
7
+ * Adds ASYNC modifier to CREATE INDEX operations.
8
+ * @default true
9
+ */
10
+ asyncIndexes: boolean;
11
+ /**
12
+ * Adds IF NOT EXISTS / IF EXISTS modifiers to operations where applicable.
13
+ * @default false
14
+ */
15
+ safeOperations: boolean;
16
+ }
17
+ export declare const DEFAULT_DDL_OPERATION_OPTIONS: DDLOperationOptions;
18
+ export type DDLOperationType = "CREATE" | "DROP" | "ALTER";
19
+ export interface DDLOperation {
20
+ type: DDLOperationType;
21
+ object: SerializedObject<DefinitionNode>;
22
+ statement: DDLStatement;
23
+ references?: string[];
24
+ }
25
+ export interface IndexedDDLOperation extends DDLOperation {
26
+ id: number;
27
+ }
28
+ export type RefusalCode = "IMMUTABLE_COLUMN" | "NO_DROP_COLUMN" | "IMMUTABLE_CONSTRAINT" | "IMMUTABLE_DOMAIN" | "IMMUTABLE_INDEX" | "NO_FOREIGN_KEY" | "KIND_MISMATCH";
29
+ export interface DDLOperationError<T extends DefinitionNode = DefinitionNode> {
30
+ code: RefusalCode | string;
31
+ message: string;
32
+ object: SerializedObject<T>;
33
+ subject?: string;
34
+ diffs?: AnyDiff<T>[];
35
+ }
36
+ export declare function refusal<T extends DefinitionNode>(args: {
37
+ code: RefusalCode;
38
+ message: string;
39
+ object: SerializedObject<T>;
40
+ subject?: string;
41
+ diffs?: AnyDiff<T>[];
42
+ }): DDLOperationError<T>;
43
+ export interface OperationResult {
44
+ operations: DDLOperation[];
45
+ errors: DDLOperationError[];
46
+ }
47
+ export declare function hasCustomNamespace(obj: SerializedObject<DefinitionNode>): obj is SerializedObject<DefinitionNode> & {
48
+ namespace: string;
49
+ };
50
+ export declare function qualifiedName(obj: SerializedObject<DefinitionNode>): string;
51
+ export declare function qualifiedConstraintName(parentTableQualifiedName: string, constraint: SerializedObject<DefinitionNode>): string;
52
+ export declare function maybeNamespaceReference(obj: SerializedObject<DefinitionNode>): [string] | undefined;
53
+ export declare function kindMismatchError(expectedKind: string, foundObject: SerializedObject<DefinitionNode>): DDLOperationError;
54
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/operations/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,6BAA6B,EAAE,mBAG3C,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACzC,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,gBAAgB,GAChB,sBAAsB,GACtB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,CAAC;AAEpB,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IAC1E,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE;IACtD,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;CACtB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAEvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,CAAC,cAAc,CAAC,GACpC,GAAG,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAEjE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CACrC,wBAAwB,EAAE,MAAM,EAChC,UAAU,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAC3C,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,gBAAgB,CAAC,cAAc,CAAC,GACpC,CAAC,MAAM,CAAC,GAAG,SAAS,CAEtB;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC,GAC5C,iBAAiB,CAMnB"}
@@ -0,0 +1,27 @@
1
+ export const DEFAULT_DDL_OPERATION_OPTIONS = {
2
+ asyncIndexes: true,
3
+ safeOperations: false,
4
+ };
5
+ export function refusal(args) {
6
+ return args;
7
+ }
8
+ export function hasCustomNamespace(obj) {
9
+ return "namespace" in obj && !!obj.namespace && obj.namespace !== "public";
10
+ }
11
+ export function qualifiedName(obj) {
12
+ return hasCustomNamespace(obj) ? `${obj.namespace}.${obj.name}` : obj.name;
13
+ }
14
+ export function qualifiedConstraintName(parentTableQualifiedName, constraint) {
15
+ return `${parentTableQualifiedName}.${constraint.name}`;
16
+ }
17
+ export function maybeNamespaceReference(obj) {
18
+ return hasCustomNamespace(obj) ? [obj.namespace] : undefined;
19
+ }
20
+ export function kindMismatchError(expectedKind, foundObject) {
21
+ return {
22
+ code: "KIND_MISMATCH",
23
+ message: `Expected object of kind ${expectedKind}, but found ${foundObject.kind}`,
24
+ object: foundObject,
25
+ };
26
+ }
27
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/reconciliation/operations/base.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,KAAK;CACtB,CAAC;AAgCF,MAAM,UAAU,OAAO,CAA2B,IAMjD;IACC,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,MAAM,UAAU,kBAAkB,CAChC,GAAqC;IAErC,OAAO,WAAW,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAqC;IACjE,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,wBAAgC,EAChC,UAA4C;IAE5C,OAAO,GAAG,wBAAwB,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAqC;IAErC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,WAA6C;IAE7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,2BAA2B,YAAY,eAAe,WAAW,CAAC,IAAI,EAAE;QACjF,MAAM,EAAE,WAAW;KACpB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AnyDomainDefinition } from "@dsqlbase/core/definition";
2
+ import { SchemaObjectType, SerializedObject } from "../../base.js";
3
+ import { DDLOperation, DDLOperationOptions, OperationResult } from "./base.js";
4
+ export declare function createDomainOperation(object: SerializedObject<AnyDomainDefinition>, ifNotExists?: boolean): DDLOperation;
5
+ export declare function dropDomainOperation(object: SerializedObject<AnyDomainDefinition>, options: DDLOperationOptions): DDLOperation;
6
+ export declare function diffDomainOperations(local: SerializedObject<AnyDomainDefinition>, remote?: SerializedObject<SchemaObjectType>, options?: DDLOperationOptions): OperationResult;
7
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/operations/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,YAAY,EAEZ,mBAAmB,EAInB,eAAe,EAEhB,MAAM,WAAW,CAAC;AAKnB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAC7C,WAAW,UAAO,GACjB,YAAY,CAmBd;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAC7C,OAAO,EAAE,mBAAmB,GAC3B,YAAY,CAad;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAC5C,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAE,mBAAmD,GAC3D,eAAe,CA+DjB"}
@@ -0,0 +1,88 @@
1
+ import { DEFAULT_DDL_OPERATION_OPTIONS, kindMismatchError, maybeNamespaceReference, refusal, } from "./base.js";
2
+ import { ddl } from "../../ddl/index.js";
3
+ import { diffDomain } from "../diffs/domain.js";
4
+ export function createDomainOperation(object, ifNotExists = true) {
5
+ const statement = ddl.createDomain({
6
+ name: object.name,
7
+ schema: object.namespace,
8
+ dataType: object.dataType,
9
+ notNull: object.notNull,
10
+ defaultValue: object.defaultValue,
11
+ check: object.check
12
+ ? ddl.check({ name: object.check.name, expression: object.check.expression })
13
+ : undefined,
14
+ ifNotExists,
15
+ });
16
+ return {
17
+ type: "CREATE",
18
+ object,
19
+ statement,
20
+ references: maybeNamespaceReference(object),
21
+ };
22
+ }
23
+ export function dropDomainOperation(object, options) {
24
+ const statement = ddl.dropDomain({
25
+ name: object.name,
26
+ ifExists: options.safeOperations,
27
+ cascade: options.safeOperations ? "CASCADE" : "RESTRICT",
28
+ });
29
+ return {
30
+ type: "DROP",
31
+ object,
32
+ statement,
33
+ references: maybeNamespaceReference(object),
34
+ };
35
+ }
36
+ export function diffDomainOperations(local, remote, options = DEFAULT_DDL_OPERATION_OPTIONS) {
37
+ if (!remote) {
38
+ return {
39
+ operations: [createDomainOperation(local, options.safeOperations)],
40
+ errors: [],
41
+ };
42
+ }
43
+ if (remote.kind !== "DOMAIN") {
44
+ return {
45
+ operations: [],
46
+ errors: [kindMismatchError("DOMAIN", remote)],
47
+ };
48
+ }
49
+ const operations = [];
50
+ const errors = [];
51
+ const namespaceRef = maybeNamespaceReference(local);
52
+ const diffs = diffDomain(local, remote);
53
+ const blocked = [];
54
+ const blockedAttrs = [];
55
+ for (const diff of diffs) {
56
+ const key = diff.key;
57
+ if (key === "defaultValue") {
58
+ const action = diff.type === "remove"
59
+ ? ddl.dropDefault()
60
+ : ddl.setDefault({ expression: String(diff.value) });
61
+ operations.push({
62
+ type: "ALTER",
63
+ object: local,
64
+ statement: ddl.alterDomain({
65
+ name: local.name,
66
+ schema: local.namespace,
67
+ action,
68
+ }),
69
+ references: namespaceRef,
70
+ });
71
+ continue;
72
+ }
73
+ blocked.push(diff);
74
+ blockedAttrs.push(key);
75
+ }
76
+ if (blocked.length > 0) {
77
+ errors.push(refusal({
78
+ code: "IMMUTABLE_DOMAIN",
79
+ message: `Domain "${local.name}" is immutable except for defaultValue — ` +
80
+ `cannot change ${blockedAttrs.join(", ")}.`,
81
+ object: local,
82
+ subject: local.name,
83
+ diffs: blocked,
84
+ }));
85
+ }
86
+ return { operations, errors };
87
+ }
88
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../../src/reconciliation/operations/domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { SchemaObjectType, SerializedObject } from "../../base.js";
2
+ import { DDLOperation, DDLOperationOptions, OperationResult } from "./base.js";
3
+ export declare function diffObjectOperations(local: SerializedObject<SchemaObjectType>, remote?: SerializedObject<SchemaObjectType>, options?: DDLOperationOptions): OperationResult;
4
+ export declare function dropObjectOperations(object: SerializedObject<SchemaObjectType>, options?: DDLOperationOptions): DDLOperation;
5
+ export { kindMismatchError, maybeNamespaceReference, qualifiedName, qualifiedConstraintName, hasCustomNamespace, refusal, type DDLOperation, type IndexedDDLOperation, type DDLOperationError, type OperationResult, type DDLOperationType, type RefusalCode, } from "./base.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/operations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,eAAe,EAChB,MAAM,WAAW,CAAC;AAMnB,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EACzC,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAE,mBAAmD,GAC3D,eAAe,CAajB;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC1C,OAAO,GAAE,mBAAmD,GAC3D,YAAY,CAed;AAED,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,EACP,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { DEFAULT_DDL_OPERATION_OPTIONS, } from "./base.js";
2
+ import { diffDomainOperations, dropDomainOperation } from "./domain.js";
3
+ import { diffSchemaOperations, dropSchemaOperation } from "./schema.js";
4
+ import { diffSequenceOperations, dropSequenceOperation } from "./sequence.js";
5
+ import { diffTableOperations, dropTableOperation } from "./table.js";
6
+ export function diffObjectOperations(local, remote, options = DEFAULT_DDL_OPERATION_OPTIONS) {
7
+ switch (local.kind) {
8
+ case "SCHEMA":
9
+ return diffSchemaOperations(local, remote, options);
10
+ case "TABLE":
11
+ return diffTableOperations(local, remote, options);
12
+ case "DOMAIN":
13
+ return diffDomainOperations(local, remote, options);
14
+ case "SEQUENCE":
15
+ return diffSequenceOperations(local, remote, options);
16
+ default:
17
+ throw new Error(`Diff operation not implemented for object kind ${local["kind"]}`);
18
+ }
19
+ }
20
+ export function dropObjectOperations(object, options = DEFAULT_DDL_OPERATION_OPTIONS) {
21
+ switch (object.kind) {
22
+ case "SCHEMA":
23
+ return dropSchemaOperation(object, options);
24
+ case "TABLE":
25
+ return dropTableOperation(object, options);
26
+ case "DOMAIN":
27
+ return dropDomainOperation(object, options);
28
+ case "SEQUENCE":
29
+ return dropSequenceOperation(object, options);
30
+ default:
31
+ throw new Error(`Unreachable. Diff operation not implemented for object kind ${object["kind"]}`);
32
+ }
33
+ }
34
+ export { kindMismatchError, maybeNamespaceReference, qualifiedName, qualifiedConstraintName, hasCustomNamespace, refusal, } from "./base.js";
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reconciliation/operations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,6BAA6B,GAE9B,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,UAAU,oBAAoB,CAClC,KAAyC,EACzC,MAA2C,EAC3C,UAA+B,6BAA6B;IAE5D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,KAAK,QAAQ;YACX,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,KAAK,UAAU;YACb,OAAO,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACxD;YACE,MAAM,IAAI,KAAK,CAAC,kDAAkD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAA0C,EAC1C,UAA+B,6BAA6B;IAE5D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,UAAU;YACb,OAAO,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChD;YACE,MAAM,IAAI,KAAK,CACb,+DAA+D,MAAM,CAAC,MAAM,CAAC,EAAE,CAChF,CAAC;IACN,CAAC;AACH,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,aAAa,EACb,uBAAuB,EACvB,kBAAkB,EAClB,OAAO,GAOR,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AnyNamespaceDefinition } from "@dsqlbase/core/definition";
2
+ import { SchemaObjectType, SerializedObject } from "../../base.js";
3
+ import { DDLOperation, DDLOperationOptions, OperationResult } from "./base.js";
4
+ export declare function createSchemaOperation(object: SerializedObject<AnyNamespaceDefinition>, ifNotExists?: boolean): DDLOperation;
5
+ export declare function dropSchemaOperation(object: SerializedObject<AnyNamespaceDefinition>, options: DDLOperationOptions): DDLOperation;
6
+ export declare function diffSchemaOperations(local: SerializedObject<AnyNamespaceDefinition>, remote?: SerializedObject<SchemaObjectType>, options?: DDLOperationOptions): OperationResult;
7
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/operations/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,YAAY,EACZ,mBAAmB,EAGnB,eAAe,EAChB,MAAM,WAAW,CAAC;AAGnB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,EAChD,WAAW,UAAO,GACjB,YAAY,CAWd;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,EAChD,OAAO,EAAE,mBAAmB,GAC3B,YAAY,CAYd;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,EAC/C,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAE,mBAAmD,GAC3D,eAAe,CAgBjB"}
@@ -0,0 +1,41 @@
1
+ import { DEFAULT_DDL_OPERATION_OPTIONS, kindMismatchError, } from "./base.js";
2
+ import { ddl } from "../../ddl/index.js";
3
+ export function createSchemaOperation(object, ifNotExists = true) {
4
+ const statement = ddl.createSchema({
5
+ name: object.name,
6
+ ifNotExists,
7
+ });
8
+ return {
9
+ type: "CREATE",
10
+ object,
11
+ statement,
12
+ };
13
+ }
14
+ export function dropSchemaOperation(object, options) {
15
+ const statement = ddl.dropSchema({
16
+ name: object.name,
17
+ ifExists: options.safeOperations,
18
+ cascade: options.safeOperations ? "CASCADE" : "RESTRICT",
19
+ });
20
+ return {
21
+ type: "DROP",
22
+ object,
23
+ statement,
24
+ };
25
+ }
26
+ export function diffSchemaOperations(local, remote, options = DEFAULT_DDL_OPERATION_OPTIONS) {
27
+ if (!remote) {
28
+ return {
29
+ operations: [createSchemaOperation(local, options.safeOperations)],
30
+ errors: [],
31
+ };
32
+ }
33
+ if (remote.kind !== "SCHEMA") {
34
+ return {
35
+ operations: [],
36
+ errors: [kindMismatchError("SCHEMA", remote)],
37
+ };
38
+ }
39
+ return { operations: [], errors: [] };
40
+ }
41
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/reconciliation/operations/schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,6BAA6B,EAC7B,iBAAiB,GAElB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,MAAM,UAAU,qBAAqB,CACnC,MAAgD,EAChD,WAAW,GAAG,IAAI;IAElB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM;QACN,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAgD,EAChD,OAA4B;IAE5B,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,OAAO,CAAC,cAAc;QAChC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;KACzD,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA+C,EAC/C,MAA2C,EAC3C,UAA+B,6BAA6B;IAE5D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,UAAU,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YAClE,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO;YACL,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AnySequenceDefinition } from "@dsqlbase/core/definition";
2
+ import { SchemaObjectType, SerializedObject } from "../../base.js";
3
+ import { DDLOperation, DDLOperationOptions, OperationResult } from "./base.js";
4
+ export declare function createSequenceOperation(object: SerializedObject<AnySequenceDefinition>, ifNotExists?: boolean): DDLOperation;
5
+ export declare function dropSequenceOperation(object: SerializedObject<AnySequenceDefinition>, options?: DDLOperationOptions): DDLOperation;
6
+ export declare function diffSequenceOperations(local: SerializedObject<AnySequenceDefinition>, remote?: SerializedObject<SchemaObjectType>, options?: DDLOperationOptions): OperationResult;
7
+ //# sourceMappingURL=sequence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../../src/reconciliation/operations/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EACL,YAAY,EAEZ,mBAAmB,EAInB,eAAe,EAChB,MAAM,WAAW,CAAC;AAInB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAC/C,WAAW,UAAO,GACjB,YAAY,CAuBd;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAC/C,OAAO,GAAE,mBAAmD,GAC3D,YAAY,CAad;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,gBAAgB,CAAC,qBAAqB,CAAC,EAC9C,MAAM,CAAC,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,EAC3C,OAAO,GAAE,mBAAmD,GAC3D,eAAe,CAuCjB"}