chkit 0.1.2-beta.7 → 0.2.0-beta.12

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 (322) hide show
  1. package/README.md +69 -56
  2. package/dist/bin/chkit.js +82 -31
  3. package/dist/bin/chkit.js.map +1 -1
  4. package/dist/commands/check/output.js +1 -1
  5. package/dist/commands/check/output.js.map +1 -1
  6. package/dist/commands/drift/command.d.ts.map +1 -1
  7. package/dist/commands/drift/command.js +9 -0
  8. package/dist/commands/drift/command.js.map +1 -1
  9. package/dist/commands/drift/compare.d.ts +52 -4
  10. package/dist/commands/drift/compare.d.ts.map +1 -1
  11. package/dist/commands/drift/compare.js +258 -49
  12. package/dist/commands/drift/compare.js.map +1 -1
  13. package/dist/commands/drift/payload.d.ts +1 -0
  14. package/dist/commands/drift/payload.d.ts.map +1 -1
  15. package/dist/commands/drift/payload.js +59 -10
  16. package/dist/commands/drift/payload.js.map +1 -1
  17. package/dist/commands/generate/command.d.ts.map +1 -1
  18. package/dist/commands/generate/command.js +73 -33
  19. package/dist/commands/generate/command.js.map +1 -1
  20. package/dist/commands/generate/cutover.d.ts +56 -0
  21. package/dist/commands/generate/cutover.d.ts.map +1 -0
  22. package/dist/commands/generate/cutover.js +138 -0
  23. package/dist/commands/generate/cutover.js.map +1 -0
  24. package/dist/commands/generate/output.d.ts +3 -2
  25. package/dist/commands/generate/output.d.ts.map +1 -1
  26. package/dist/commands/generate/output.js +17 -2
  27. package/dist/commands/generate/output.js.map +1 -1
  28. package/dist/commands/generate/plan-pipeline.d.ts.map +1 -1
  29. package/dist/commands/generate/plan-pipeline.js +35 -36
  30. package/dist/commands/generate/plan-pipeline.js.map +1 -1
  31. package/dist/commands/init.d.ts +2 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +21 -4
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/migrate/abandon.d.ts +39 -0
  36. package/dist/commands/migrate/abandon.d.ts.map +1 -0
  37. package/dist/commands/migrate/abandon.js +76 -0
  38. package/dist/commands/migrate/abandon.js.map +1 -0
  39. package/dist/commands/migrate/apply.d.ts +10 -1
  40. package/dist/commands/migrate/apply.d.ts.map +1 -1
  41. package/dist/commands/migrate/apply.js +108 -10
  42. package/dist/commands/migrate/apply.js.map +1 -1
  43. package/dist/commands/migrate/async-apply.d.ts +11 -3
  44. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  45. package/dist/commands/migrate/async-apply.js +113 -27
  46. package/dist/commands/migrate/async-apply.js.map +1 -1
  47. package/dist/commands/migrate/command.d.ts +46 -1
  48. package/dist/commands/migrate/command.d.ts.map +1 -1
  49. package/dist/commands/migrate/command.js +159 -35
  50. package/dist/commands/migrate/command.js.map +1 -1
  51. package/dist/commands/migrate/empty.d.ts +8 -0
  52. package/dist/commands/migrate/empty.d.ts.map +1 -0
  53. package/dist/commands/migrate/empty.js +17 -0
  54. package/dist/commands/migrate/empty.js.map +1 -0
  55. package/dist/commands/migrate/errors.d.ts +22 -0
  56. package/dist/commands/migrate/errors.d.ts.map +1 -0
  57. package/dist/commands/migrate/errors.js +31 -0
  58. package/dist/commands/migrate/errors.js.map +1 -0
  59. package/dist/commands/migrate/output.d.ts +31 -0
  60. package/dist/commands/migrate/output.d.ts.map +1 -1
  61. package/dist/commands/migrate/output.js +120 -9
  62. package/dist/commands/migrate/output.js.map +1 -1
  63. package/dist/commands/migrate/prompts.d.ts +1 -0
  64. package/dist/commands/migrate/prompts.d.ts.map +1 -1
  65. package/dist/commands/migrate/prompts.js +3 -0
  66. package/dist/commands/migrate/prompts.js.map +1 -1
  67. package/dist/commands/migrate/recovery.d.ts +90 -0
  68. package/dist/commands/migrate/recovery.d.ts.map +1 -0
  69. package/dist/commands/migrate/recovery.js +163 -0
  70. package/dist/commands/migrate/recovery.js.map +1 -0
  71. package/dist/commands/migrate/retry.d.ts +37 -0
  72. package/dist/commands/migrate/retry.d.ts.map +1 -0
  73. package/dist/commands/migrate/retry.js +46 -0
  74. package/dist/commands/migrate/retry.js.map +1 -0
  75. package/dist/commands/migrate/settings.d.ts +8 -0
  76. package/dist/commands/migrate/settings.d.ts.map +1 -0
  77. package/dist/commands/migrate/settings.js +40 -0
  78. package/dist/commands/migrate/settings.js.map +1 -0
  79. package/dist/commands/plugin.d.ts.map +1 -1
  80. package/dist/commands/plugin.js +28 -4
  81. package/dist/commands/plugin.js.map +1 -1
  82. package/dist/commands/query.d.ts.map +1 -1
  83. package/dist/commands/query.js +11 -15
  84. package/dist/commands/query.js.map +1 -1
  85. package/dist/commands/registry.d.ts +2 -0
  86. package/dist/commands/registry.d.ts.map +1 -0
  87. package/dist/commands/registry.js +228 -0
  88. package/dist/commands/registry.js.map +1 -0
  89. package/dist/commands/snapshot/command.d.ts +3 -0
  90. package/dist/commands/snapshot/command.d.ts.map +1 -0
  91. package/dist/commands/snapshot/command.js +32 -0
  92. package/dist/commands/snapshot/command.js.map +1 -0
  93. package/dist/commands/snapshot/output.d.ts +24 -0
  94. package/dist/commands/snapshot/output.d.ts.map +1 -0
  95. package/dist/commands/snapshot/output.js +86 -0
  96. package/dist/commands/snapshot/output.js.map +1 -0
  97. package/dist/commands/snapshot/rebuild.d.ts +19 -0
  98. package/dist/commands/snapshot/rebuild.d.ts.map +1 -0
  99. package/dist/commands/snapshot/rebuild.js +94 -0
  100. package/dist/commands/snapshot/rebuild.js.map +1 -0
  101. package/dist/internal-plugins/core/plugin.d.ts.map +1 -1
  102. package/dist/internal-plugins/core/plugin.js +2 -0
  103. package/dist/internal-plugins/core/plugin.js.map +1 -1
  104. package/dist/registry/build.d.ts +17 -0
  105. package/dist/registry/build.d.ts.map +1 -0
  106. package/dist/registry/build.js +94 -0
  107. package/dist/registry/build.js.map +1 -0
  108. package/dist/registry/dependencies.d.ts +19 -0
  109. package/dist/registry/dependencies.d.ts.map +1 -0
  110. package/dist/registry/dependencies.js +105 -0
  111. package/dist/registry/dependencies.js.map +1 -0
  112. package/dist/registry/files.d.ts +4 -0
  113. package/dist/registry/files.d.ts.map +1 -0
  114. package/dist/registry/files.js +33 -0
  115. package/dist/registry/files.js.map +1 -0
  116. package/dist/registry/install.d.ts +55 -0
  117. package/dist/registry/install.d.ts.map +1 -0
  118. package/dist/registry/install.js +175 -0
  119. package/dist/registry/install.js.map +1 -0
  120. package/dist/registry/model.d.ts +172 -0
  121. package/dist/registry/model.d.ts.map +1 -0
  122. package/dist/registry/model.js +161 -0
  123. package/dist/registry/model.js.map +1 -0
  124. package/dist/registry/project-config.d.ts +18 -0
  125. package/dist/registry/project-config.d.ts.map +1 -0
  126. package/dist/registry/project-config.js +337 -0
  127. package/dist/registry/project-config.js.map +1 -0
  128. package/dist/registry/resolve.d.ts +7 -0
  129. package/dist/registry/resolve.d.ts.map +1 -0
  130. package/dist/registry/resolve.js +136 -0
  131. package/dist/registry/resolve.js.map +1 -0
  132. package/dist/runtime/argv.d.ts +3 -0
  133. package/dist/runtime/argv.d.ts.map +1 -0
  134. package/dist/runtime/argv.js +29 -0
  135. package/dist/runtime/argv.js.map +1 -0
  136. package/dist/runtime/command-dispatch.d.ts +2 -1
  137. package/dist/runtime/command-dispatch.d.ts.map +1 -1
  138. package/dist/runtime/command-dispatch.js +15 -7
  139. package/dist/runtime/command-dispatch.js.map +1 -1
  140. package/dist/runtime/config-merge.d.ts.map +1 -1
  141. package/dist/runtime/config-merge.js +2 -1
  142. package/dist/runtime/config-merge.js.map +1 -1
  143. package/dist/runtime/config.d.ts.map +1 -1
  144. package/dist/runtime/config.js +2 -1
  145. package/dist/runtime/config.js.map +1 -1
  146. package/dist/runtime/global-flags.d.ts +4 -0
  147. package/dist/runtime/global-flags.d.ts.map +1 -1
  148. package/dist/runtime/global-flags.js +1 -0
  149. package/dist/runtime/global-flags.js.map +1 -1
  150. package/dist/runtime/help.d.ts +1 -1
  151. package/dist/runtime/help.d.ts.map +1 -1
  152. package/dist/runtime/help.js +13 -4
  153. package/dist/runtime/help.js.map +1 -1
  154. package/dist/runtime/journal-store.d.ts.map +1 -1
  155. package/dist/runtime/journal-store.js +178 -42
  156. package/dist/runtime/journal-store.js.map +1 -1
  157. package/dist/runtime/json-output.d.ts +15 -1
  158. package/dist/runtime/json-output.d.ts.map +1 -1
  159. package/dist/runtime/json-output.js +43 -2
  160. package/dist/runtime/json-output.js.map +1 -1
  161. package/dist/runtime/migration-store.d.ts +1 -1
  162. package/dist/runtime/migration-store.d.ts.map +1 -1
  163. package/dist/runtime/migration-store.js +17 -16
  164. package/dist/runtime/migration-store.js.map +1 -1
  165. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  166. package/dist/runtime/plugin-runtime/executor-debug.js +10 -8
  167. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  168. package/dist/runtime/plugin-runtime/loader.js +1 -1
  169. package/dist/runtime/plugin-runtime/loader.js.map +1 -1
  170. package/dist/runtime/safety-markers.d.ts +4 -2
  171. package/dist/runtime/safety-markers.d.ts.map +1 -1
  172. package/dist/runtime/safety-markers.js +4 -2
  173. package/dist/runtime/safety-markers.js.map +1 -1
  174. package/dist/runtime/schema-loader.d.ts +20 -1
  175. package/dist/runtime/schema-loader.d.ts.map +1 -1
  176. package/dist/runtime/schema-loader.js +26 -0
  177. package/dist/runtime/schema-loader.js.map +1 -1
  178. package/dist/runtime/snapshot-document.d.ts +33 -0
  179. package/dist/runtime/snapshot-document.d.ts.map +1 -0
  180. package/dist/runtime/snapshot-document.js +65 -0
  181. package/dist/runtime/snapshot-document.js.map +1 -0
  182. package/package.json +20 -7
  183. package/dist/bin/clickhouse-resource.d.ts +0 -4
  184. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  185. package/dist/bin/clickhouse-resource.js +0 -11
  186. package/dist/bin/clickhouse-resource.js.map +0 -1
  187. package/dist/bin/command-dispatch.d.ts +0 -13
  188. package/dist/bin/command-dispatch.d.ts.map +0 -1
  189. package/dist/bin/command-dispatch.js +0 -186
  190. package/dist/bin/command-dispatch.js.map +0 -1
  191. package/dist/bin/command-registry.d.ts +0 -34
  192. package/dist/bin/command-registry.d.ts.map +0 -1
  193. package/dist/bin/command-registry.js +0 -87
  194. package/dist/bin/command-registry.js.map +0 -1
  195. package/dist/bin/commands/check.d.ts +0 -3
  196. package/dist/bin/commands/check.d.ts.map +0 -1
  197. package/dist/bin/commands/check.js +0 -181
  198. package/dist/bin/commands/check.js.map +0 -1
  199. package/dist/bin/commands/codegen.d.ts +0 -2
  200. package/dist/bin/commands/codegen.d.ts.map +0 -1
  201. package/dist/bin/commands/codegen.js +0 -25
  202. package/dist/bin/commands/codegen.js.map +0 -1
  203. package/dist/bin/commands/drift.d.ts +0 -27
  204. package/dist/bin/commands/drift.d.ts.map +0 -1
  205. package/dist/bin/commands/drift.js +0 -220
  206. package/dist/bin/commands/drift.js.map +0 -1
  207. package/dist/bin/commands/generate/output.d.ts +0 -8
  208. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  209. package/dist/bin/commands/generate/output.js +0 -58
  210. package/dist/bin/commands/generate/output.js.map +0 -1
  211. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  212. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  213. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  214. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  215. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  216. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  217. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  218. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  219. package/dist/bin/commands/generate.d.ts +0 -3
  220. package/dist/bin/commands/generate.d.ts.map +0 -1
  221. package/dist/bin/commands/generate.js +0 -158
  222. package/dist/bin/commands/generate.js.map +0 -1
  223. package/dist/bin/commands/init.d.ts +0 -2
  224. package/dist/bin/commands/init.d.ts.map +0 -1
  225. package/dist/bin/commands/init.js +0 -12
  226. package/dist/bin/commands/init.js.map +0 -1
  227. package/dist/bin/commands/migrate.d.ts +0 -3
  228. package/dist/bin/commands/migrate.d.ts.map +0 -1
  229. package/dist/bin/commands/migrate.js +0 -288
  230. package/dist/bin/commands/migrate.js.map +0 -1
  231. package/dist/bin/commands/plugin-like.d.ts +0 -38
  232. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  233. package/dist/bin/commands/plugin-like.js +0 -101
  234. package/dist/bin/commands/plugin-like.js.map +0 -1
  235. package/dist/bin/commands/plugin.d.ts +0 -3
  236. package/dist/bin/commands/plugin.d.ts.map +0 -1
  237. package/dist/bin/commands/plugin.js +0 -148
  238. package/dist/bin/commands/plugin.js.map +0 -1
  239. package/dist/bin/commands/pull.d.ts +0 -2
  240. package/dist/bin/commands/pull.d.ts.map +0 -1
  241. package/dist/bin/commands/pull.js +0 -25
  242. package/dist/bin/commands/pull.js.map +0 -1
  243. package/dist/bin/commands/status.d.ts +0 -3
  244. package/dist/bin/commands/status.d.ts.map +0 -1
  245. package/dist/bin/commands/status.js +0 -63
  246. package/dist/bin/commands/status.js.map +0 -1
  247. package/dist/bin/commands/typegen.d.ts +0 -2
  248. package/dist/bin/commands/typegen.d.ts.map +0 -1
  249. package/dist/bin/commands/typegen.js +0 -25
  250. package/dist/bin/commands/typegen.js.map +0 -1
  251. package/dist/bin/config.d.ts +0 -13
  252. package/dist/bin/config.d.ts.map +0 -1
  253. package/dist/bin/config.js +0 -48
  254. package/dist/bin/config.js.map +0 -1
  255. package/dist/bin/debug.d.ts +0 -3
  256. package/dist/bin/debug.d.ts.map +0 -1
  257. package/dist/bin/debug.js +0 -14
  258. package/dist/bin/debug.js.map +0 -1
  259. package/dist/bin/global-flags.d.ts +0 -16
  260. package/dist/bin/global-flags.d.ts.map +0 -1
  261. package/dist/bin/global-flags.js +0 -7
  262. package/dist/bin/global-flags.js.map +0 -1
  263. package/dist/bin/help.d.ts +0 -5
  264. package/dist/bin/help.d.ts.map +0 -1
  265. package/dist/bin/help.js +0 -84
  266. package/dist/bin/help.js.map +0 -1
  267. package/dist/bin/internal-plugins/index.d.ts +0 -3
  268. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  269. package/dist/bin/internal-plugins/index.js +0 -5
  270. package/dist/bin/internal-plugins/index.js.map +0 -1
  271. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  272. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  273. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  274. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  275. package/dist/bin/journal-store.d.ts +0 -10
  276. package/dist/bin/journal-store.d.ts.map +0 -1
  277. package/dist/bin/journal-store.js +0 -137
  278. package/dist/bin/journal-store.js.map +0 -1
  279. package/dist/bin/json-output.d.ts +0 -5
  280. package/dist/bin/json-output.d.ts.map +0 -1
  281. package/dist/bin/json-output.js +0 -21
  282. package/dist/bin/json-output.js.map +0 -1
  283. package/dist/bin/lib.d.ts +0 -5
  284. package/dist/bin/lib.d.ts.map +0 -1
  285. package/dist/bin/lib.js +0 -5
  286. package/dist/bin/lib.js.map +0 -1
  287. package/dist/bin/logging.d.ts +0 -3
  288. package/dist/bin/logging.d.ts.map +0 -1
  289. package/dist/bin/logging.js +0 -31
  290. package/dist/bin/logging.js.map +0 -1
  291. package/dist/bin/migration-store.d.ts +0 -22
  292. package/dist/bin/migration-store.d.ts.map +0 -1
  293. package/dist/bin/migration-store.js +0 -60
  294. package/dist/bin/migration-store.js.map +0 -1
  295. package/dist/bin/plugin-runtime.d.ts +0 -45
  296. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  297. package/dist/bin/plugin-runtime.js +0 -513
  298. package/dist/bin/plugin-runtime.js.map +0 -1
  299. package/dist/bin/safety-markers.d.ts +0 -23
  300. package/dist/bin/safety-markers.d.ts.map +0 -1
  301. package/dist/bin/safety-markers.js +0 -85
  302. package/dist/bin/safety-markers.js.map +0 -1
  303. package/dist/bin/schema-loader.d.ts +0 -3
  304. package/dist/bin/schema-loader.d.ts.map +0 -1
  305. package/dist/bin/schema-loader.js +0 -11
  306. package/dist/bin/schema-loader.js.map +0 -1
  307. package/dist/bin/table-scope.d.ts +0 -38
  308. package/dist/bin/table-scope.d.ts.map +0 -1
  309. package/dist/bin/table-scope.js +0 -167
  310. package/dist/bin/table-scope.js.map +0 -1
  311. package/dist/bin/version.d.ts +0 -2
  312. package/dist/bin/version.d.ts.map +0 -1
  313. package/dist/bin/version.js +0 -5
  314. package/dist/bin/version.js.map +0 -1
  315. package/dist/drift-diff.d.ts +0 -8
  316. package/dist/drift-diff.d.ts.map +0 -1
  317. package/dist/drift-diff.js +0 -46
  318. package/dist/drift-diff.js.map +0 -1
  319. package/dist/drift.d.ts +0 -66
  320. package/dist/drift.d.ts.map +0 -1
  321. package/dist/drift.js +0 -220
  322. package/dist/drift.js.map +0 -1
@@ -5,13 +5,14 @@ import { resolveDirs } from '../../runtime/config.js';
5
5
  import { GLOBAL_FLAGS } from '../../runtime/global-flags.js';
6
6
  import { emitJson } from '../../runtime/json-output.js';
7
7
  import { readSnapshot } from '../../runtime/migration-store.js';
8
- import { loadSchemaDefinitions } from '../../runtime/schema-loader.js';
8
+ import { loadSchemaDefinitionsWithHooks } from '../../runtime/schema-loader.js';
9
9
  import { CLI_VERSION } from '../../runtime/version.js';
10
10
  import { buildScopedSnapshotDefinitions, filterPlanByTableScope, resolveTableScope, tableKeysFromDefinitions, } from '../../runtime/table-scope.js';
11
11
  import { detectDictionaryPasswordWarnings } from './dictionary-password-warnings.js';
12
12
  import { applyExplicitDictionaryRenames, applyExplicitTableRenames, applySelectedRenameSuggestions, assertCliColumnMappingsResolvable, buildExplicitColumnRenameSuggestions, } from './plan-pipeline.js';
13
13
  import { assertCliDictionaryMappingsResolvable, assertCliTableMappingsResolvable, assertNoConflictingColumnMappings, assertNoConflictingDictionaryMappings, assertNoConflictingTableMappings, collectSchemaRenameMappings, mergeColumnMappings, mergeDictionaryMappings, mergeTableMappings, parseRenameColumnMappings, parseRenameDictionaryMappings, parseRenameTableMappings, remapOldDefinitionsForDictionaryRenames, remapOldDefinitionsForTableRenames, resolveActiveDictionaryMappings, resolveActiveTableMappings, } from './rename-mappings.js';
14
14
  import { emitGenerateApplyOutput, emitGenerateEmptyOutput, emitGeneratePlanOutput } from './output.js';
15
+ import { applyCutovers, carryRetainedDefinitions, resolveCutoverFlags, summarizeCutover } from './cutover.js';
15
16
  import { debug } from '../../runtime/debug.js';
16
17
  const GENERATE_FLAGS = defineFlags([
17
18
  { name: '--name', type: 'string', description: 'Migration name', placeholder: '<name>' },
@@ -21,6 +22,10 @@ const GENERATE_FLAGS = defineFlags([
21
22
  { name: '--rename-dictionary', type: 'string[]', description: 'Explicit dictionary rename mapping', placeholder: '<mapping>' },
22
23
  { name: '--dryrun', type: 'boolean', description: 'Print plan without writing artifacts' },
23
24
  { name: '--empty', type: 'boolean', description: 'Scaffold a blank manual migration (no schema diff, snapshot untouched)' },
25
+ { name: '--cutover', type: 'string[]', description: 'Cut a structural table change over without downtime, keyed by a unique key', placeholder: '<database.table=key>' },
26
+ { name: '--cutover-copy', type: 'string', description: 'Where the cutover copies existing rows: migration (default) or backfill', placeholder: '<mode>' },
27
+ { name: '--cutover-old', type: 'string', description: 'What happens to the pre-cutover table: keep (default, as <table>_previous) or drop', placeholder: '<mode>' },
28
+ { name: '--drop-retained', type: 'string[]', description: 'Drop a table a cutover retained', placeholder: '<database.table>' },
24
29
  ]);
25
30
  export const generateCommand = {
26
31
  name: 'generate',
@@ -53,34 +58,31 @@ async function cmdGenerate(ctx) {
53
58
  emitGenerateEmptyOutput(result, jsonMode);
54
59
  return 0;
55
60
  }
56
- await pluginRuntime.runOnConfigLoaded({
57
- command: 'generate',
58
- config,
59
- configPath,
60
- tableScope: resolveTableScope(tableSelector, []),
61
- flags,
62
- });
63
- let definitions = await loadSchemaDefinitions(config.schema);
64
- definitions = await pluginRuntime.runOnSchemaLoaded({
65
- command: 'generate',
66
- config,
67
- tableScope: resolveTableScope(tableSelector, tableKeysFromDefinitions(definitions)),
68
- flags,
69
- jsonMode,
70
- definitions,
61
+ const cutoverFlags = resolveCutoverFlags({
62
+ cutover: f['--cutover'] ?? [],
63
+ copy: f['--cutover-copy'],
64
+ oldTable: f['--cutover-old'],
65
+ dropRetained: f['--drop-retained'] ?? [],
71
66
  });
67
+ const now = new Date();
68
+ const schemaDefinitions = await loadSchemaDefinitionsWithHooks({ command: 'generate', config, configPath, flags, jsonMode, tableSelector }, { pluginRuntime });
72
69
  const renameTableValues = f['--rename-table'] ?? [];
73
70
  const renameColumnValues = f['--rename-column'] ?? [];
74
71
  const renameDictionaryValues = f['--rename-dictionary'] ?? [];
75
72
  const cliTableMappings = parseRenameTableMappings(renameTableValues);
76
73
  const cliColumnMappings = parseRenameColumnMappings(renameColumnValues);
77
74
  const cliDictionaryMappings = parseRenameDictionaryMappings(renameDictionaryValues);
78
- const schemaMappings = collectSchemaRenameMappings(definitions);
75
+ const schemaMappings = collectSchemaRenameMappings(schemaDefinitions);
79
76
  const tableMappings = mergeTableMappings(schemaMappings.tableMappings, cliTableMappings);
80
77
  const columnMappings = mergeColumnMappings(schemaMappings.columnMappings, cliColumnMappings);
81
78
  const dictionaryMappings = mergeDictionaryMappings(schemaMappings.dictionaryMappings, cliDictionaryMappings);
82
79
  const { migrationsDir, metaDir } = dirs;
83
80
  const previousDefinitions = (await readSnapshot(metaDir))?.definitions ?? [];
81
+ const definitions = carryRetainedDefinitions({
82
+ previousDefinitions,
83
+ definitions: schemaDefinitions,
84
+ dropRetained: f['--drop-retained'] ?? [],
85
+ });
84
86
  const resolvedScope = resolveTableScope(tableSelector, [
85
87
  ...tableKeysFromDefinitions(previousDefinitions),
86
88
  ...tableKeysFromDefinitions(definitions),
@@ -116,18 +118,7 @@ async function cmdGenerate(ctx) {
116
118
  plan = planDiff(remappedPreviousDefinitions, definitions);
117
119
  }
118
120
  catch (error) {
119
- if (error instanceof ChxValidationError) {
120
- if (jsonMode) {
121
- emitJson('generate', {
122
- error: 'validation_failed',
123
- issues: error.issues,
124
- });
125
- return 1;
126
- }
127
- const details = error.issues.map((issue) => `- [${issue.code}] ${issue.message}`).join('\n');
128
- throw new Error(`${error.message}\n${details}`);
129
- }
130
- throw error;
121
+ return reportValidationError(error, jsonMode);
131
122
  }
132
123
  plan = applyExplicitTableRenames(plan, activeTableMappings);
133
124
  plan = applyExplicitDictionaryRenames(plan, activeDictionaryMappings);
@@ -144,15 +135,39 @@ async function cmdGenerate(ctx) {
144
135
  renameMappings: activeTableMappings,
145
136
  }).plan;
146
137
  }
138
+ // A cutover replaces the DROP + CREATE of a structural change with a
139
+ // zero-downtime copy and swap. It runs after scope filtering, so a table
140
+ // outside --table has no DROP + CREATE to replace.
141
+ let cutovers = [];
142
+ if (cutoverFlags.requests.length > 0) {
143
+ try {
144
+ ;
145
+ ({ plan, cutovers } = applyCutovers({
146
+ plan,
147
+ previousDefinitions: remappedPreviousDefinitions,
148
+ definitions,
149
+ cutovers: cutoverFlags,
150
+ cluster: config.clickhouse?.cluster,
151
+ stamp: migrationStamp(now),
152
+ }));
153
+ }
154
+ catch (error) {
155
+ return reportValidationError(error, jsonMode);
156
+ }
157
+ }
158
+ const cutoverSummaries = cutovers.map(summarizeCutover);
147
159
  // Cluster mode: stamp `ON CLUSTER <name>` onto every DDL statement as a final
148
160
  // post-pass, after all plan transforms (renames, plugins, scope filtering).
149
161
  plan = applyOnClusterToPlan(plan, config.clickhouse?.cluster);
150
- const dictionaryPasswordWarnings = detectDictionaryPasswordWarnings(plan);
162
+ const dictionaryPasswordWarnings = [
163
+ ...detectDictionaryPasswordWarnings(plan),
164
+ ...plan.operations.flatMap((operation) => operation.warning ? [operation.warning] : []),
165
+ ];
151
166
  if (planMode) {
152
- emitGeneratePlanOutput(plan, jsonMode, resolvedScope, dictionaryPasswordWarnings);
167
+ emitGeneratePlanOutput(plan, jsonMode, resolvedScope, dictionaryPasswordWarnings, cutoverSummaries);
153
168
  return 0;
154
169
  }
155
- const artifactDefinitions = resolvedScope.enabled
170
+ const scopedDefinitions = resolvedScope.enabled
156
171
  ? buildScopedSnapshotDefinitions({
157
172
  previousDefinitions,
158
173
  nextDefinitions: definitions,
@@ -160,6 +175,12 @@ async function cmdGenerate(ctx) {
160
175
  renameMappings: activeTableMappings,
161
176
  })
162
177
  : definitions;
178
+ // A keep-mode cutover leaves the old table as <table>_previous: record it so
179
+ // drift, check and the next generate treat it as managed.
180
+ const artifactDefinitions = [
181
+ ...scopedDefinitions,
182
+ ...cutovers.flatMap((cutover) => (cutover.retained ? [cutover.retained] : [])),
183
+ ];
163
184
  debug('generate', `plan: ${plan.operations.length} operations — writing artifacts`);
164
185
  const result = await generateArtifacts({
165
186
  definitions: artifactDefinitions,
@@ -169,6 +190,7 @@ async function cmdGenerate(ctx) {
169
190
  migrationId,
170
191
  plan,
171
192
  cliVersion: CLI_VERSION,
193
+ now,
172
194
  });
173
195
  const codegenPlugin = pluginRuntime.plugins.find((entry) => entry.plugin.manifest.name === 'codegen');
174
196
  const codegenRunOnGenerate = codegenPlugin ? codegenPlugin.options.runOnGenerate !== false : false;
@@ -186,7 +208,25 @@ async function cmdGenerate(ctx) {
186
208
  throw new Error(`Plugin "codegen" failed in generate integration with exit code ${codegenExitCode}.`);
187
209
  }
188
210
  }
189
- emitGenerateApplyOutput(result, artifactDefinitions, plan, jsonMode, resolvedScope, dictionaryPasswordWarnings);
211
+ emitGenerateApplyOutput(result, artifactDefinitions, plan, jsonMode, resolvedScope, dictionaryPasswordWarnings, cutoverSummaries);
190
212
  return 0;
191
213
  }
214
+ /** Prints a schema or cutover validation failure; rethrows anything else. */
215
+ function reportValidationError(error, jsonMode) {
216
+ if (!(error instanceof ChxValidationError))
217
+ throw error;
218
+ if (jsonMode) {
219
+ emitJson('generate', {
220
+ error: 'validation_failed',
221
+ issues: error.issues,
222
+ });
223
+ return 1;
224
+ }
225
+ const details = error.issues.map((issue) => `- [${issue.code}] ${issue.message}`).join('\n');
226
+ throw new Error(`${error.message}\n${details}`);
227
+ }
228
+ /** The migration file's timestamp prefix, `YYYYMMDDHHMMSS`; names a cutover's temporary objects. */
229
+ function migrationStamp(now) {
230
+ return now.toISOString().replace(/[-:TZ.]/g, '').slice(0, 14);
231
+ }
192
232
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/generate/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/commands/generate/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type CutoverCopyMode, type CutoverOldTableMode, type CutoverRequest, type MigrationPlan, type PlannedCutover, type SchemaDefinition } from '@chkit/core';
2
+ export interface CutoverFlags {
3
+ cutover: string[];
4
+ copy: string | undefined;
5
+ oldTable: string | undefined;
6
+ dropRetained: string[];
7
+ }
8
+ export interface ResolvedCutovers {
9
+ requests: CutoverRequest[];
10
+ copy: CutoverCopyMode;
11
+ oldTable: CutoverOldTableMode;
12
+ }
13
+ /** What `generate` reports for each cutover, in JSON and text. */
14
+ export interface CutoverSummary {
15
+ table: string;
16
+ key: string[];
17
+ copy: CutoverCopyMode;
18
+ oldTable: CutoverOldTableMode;
19
+ shadow: string;
20
+ mirror: string;
21
+ snapshot: string;
22
+ columns: string[];
23
+ retainedAs?: string;
24
+ nextSteps: string[];
25
+ }
26
+ /** Reads `--cutover`, `--cutover-copy` and `--cutover-old`; usage errors throw. */
27
+ export declare function resolveCutoverFlags(flags: CutoverFlags): ResolvedCutovers;
28
+ /**
29
+ * Tables a keep-mode cutover retained (`retainedBy` in the snapshot) stay
30
+ * planned as they are, so they never read as a pending drop. `--drop-retained`
31
+ * leaves one out, which plans its DROP like any removed table. A table the
32
+ * schema declares again is planned from the schema.
33
+ */
34
+ export declare function carryRetainedDefinitions(input: {
35
+ previousDefinitions: SchemaDefinition[];
36
+ definitions: SchemaDefinition[];
37
+ dropRetained: string[];
38
+ }): SchemaDefinition[];
39
+ /**
40
+ * Replaces the DROP + CREATE that `planDiff` emits for each cutover table with
41
+ * the cutover's operations, at the CREATE's position (after the drops, before
42
+ * objects created on top of the table).
43
+ */
44
+ export declare function applyCutovers(input: {
45
+ plan: MigrationPlan;
46
+ previousDefinitions: SchemaDefinition[];
47
+ definitions: SchemaDefinition[];
48
+ cutovers: ResolvedCutovers;
49
+ cluster: string | undefined;
50
+ stamp: string;
51
+ }): {
52
+ plan: MigrationPlan;
53
+ cutovers: PlannedCutover[];
54
+ };
55
+ export declare function summarizeCutover(cutover: PlannedCutover): CutoverSummary;
56
+ //# sourceMappingURL=cutover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cutover.d.ts","sourceRoot":"","sources":["../../../src/commands/generate/cutover.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;IACxB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,cAAc,EAAE,CAAA;IAC1B,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,mBAAmB,CAAA;CAC9B;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,EAAE,CAAA;IACb,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAoBzE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAA;CACvB,GAAG,gBAAgB,EAAE,CAmBrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,aAAa,CAAA;IACnB,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;IACvC,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAkCtD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc,CAuBxE"}
@@ -0,0 +1,138 @@
1
+ import { CUTOVER_COPY_MODES, CUTOVER_OLD_TABLE_MODES, parseCutoverRequest, planCutover, readsTable, } from '@chkit/core';
2
+ /** Reads `--cutover`, `--cutover-copy` and `--cutover-old`; usage errors throw. */
3
+ export function resolveCutoverFlags(flags) {
4
+ const requests = flags.cutover.map(parseCutoverRequest);
5
+ if (requests.length === 0 && (flags.copy !== undefined || flags.oldTable !== undefined)) {
6
+ throw new Error('--cutover-copy and --cutover-old apply to a cutover: add --cutover <database>.<table>=<key columns>.');
7
+ }
8
+ const seen = new Set();
9
+ for (const request of requests) {
10
+ const target = `${request.database}.${request.table}`;
11
+ if (seen.has(target))
12
+ throw new Error(`--cutover ${target} is given more than once.`);
13
+ seen.add(target);
14
+ }
15
+ const copy = flags.copy ?? 'migration';
16
+ if (!CUTOVER_COPY_MODES.includes(copy)) {
17
+ throw new Error(`Invalid --cutover-copy "${copy}". Expected ${CUTOVER_COPY_MODES.join(' or ')}.`);
18
+ }
19
+ const oldTable = flags.oldTable ?? 'keep';
20
+ if (!CUTOVER_OLD_TABLE_MODES.includes(oldTable)) {
21
+ throw new Error(`Invalid --cutover-old "${oldTable}". Expected ${CUTOVER_OLD_TABLE_MODES.join(' or ')}.`);
22
+ }
23
+ return { requests, copy: copy, oldTable: oldTable };
24
+ }
25
+ /**
26
+ * Tables a keep-mode cutover retained (`retainedBy` in the snapshot) stay
27
+ * planned as they are, so they never read as a pending drop. `--drop-retained`
28
+ * leaves one out, which plans its DROP like any removed table. A table the
29
+ * schema declares again is planned from the schema.
30
+ */
31
+ export function carryRetainedDefinitions(input) {
32
+ const retained = input.previousDefinitions.filter((def) => def.kind === 'table' && def.retainedBy !== undefined);
33
+ const retainedNames = new Set(retained.map((def) => `${def.database}.${def.name}`));
34
+ for (const name of input.dropRetained) {
35
+ if (!retainedNames.has(name)) {
36
+ const known = [...retainedNames];
37
+ throw new Error(`--drop-retained ${name}: no table retained by a cutover has that name${known.length > 0 ? ` (retained: ${known.join(', ')})` : ''}.`);
38
+ }
39
+ }
40
+ const drop = new Set(input.dropRetained);
41
+ const declared = new Set(input.definitions.map((def) => `${def.kind}:${def.database}.${def.name}`));
42
+ const carried = retained.filter((def) => !drop.has(`${def.database}.${def.name}`) && !declared.has(`table:${def.database}.${def.name}`));
43
+ return [...input.definitions, ...carried];
44
+ }
45
+ /**
46
+ * Replaces the DROP + CREATE that `planDiff` emits for each cutover table with
47
+ * the cutover's operations, at the CREATE's position (after the drops, before
48
+ * objects created on top of the table).
49
+ */
50
+ export function applyCutovers(input) {
51
+ const { cutovers } = input;
52
+ let operations = input.plan.operations;
53
+ const planned = [];
54
+ for (const request of cutovers.requests) {
55
+ const target = `${request.database}.${request.table}`;
56
+ const key = `table:${target}`;
57
+ const dropIndex = operations.findIndex((op) => op.type === 'drop_table' && op.key === key);
58
+ const createIndex = operations.findIndex((op) => op.type === 'create_table' && op.key === key);
59
+ if (dropIndex === -1 || createIndex === -1) {
60
+ throw new Error(`--cutover ${target}: the plan does not recreate ${target}. A cutover replaces the DROP TABLE and CREATE TABLE of a change to the engine, ORDER BY, PRIMARY KEY or PARTITION BY of an existing table${input.plan.operations.length === 0 ? '; the plan is empty' : ''}. Check the table name and the --table scope.`);
61
+ }
62
+ assertNoDependentRecreated(operations, [...input.previousDefinitions, ...input.definitions], request);
63
+ const oldDef = findTable(input.previousDefinitions, request);
64
+ const newDef = findTable(input.definitions, request);
65
+ if (!oldDef || !newDef)
66
+ throw new Error(`--cutover ${target}: the table is missing from the snapshot or the schema.`);
67
+ const cutover = planCutover({
68
+ oldDef,
69
+ newDef,
70
+ request,
71
+ options: { copy: cutovers.copy, oldTable: cutovers.oldTable, cluster: input.cluster, stamp: input.stamp },
72
+ definitions: input.definitions,
73
+ });
74
+ planned.push(cutover);
75
+ const drop = operations[dropIndex];
76
+ const create = operations[createIndex];
77
+ operations = operations.flatMap((op) => (op === create ? cutover.operations : op === drop ? [] : [op]));
78
+ }
79
+ return {
80
+ plan: { ...input.plan, operations, riskSummary: summarizeRisk(operations) },
81
+ cutovers: planned,
82
+ };
83
+ }
84
+ export function summarizeCutover(cutover) {
85
+ const { request, options, names } = cutover;
86
+ const target = `${request.database}.${request.table}`;
87
+ const nextSteps = options.copy === 'backfill'
88
+ ? [
89
+ 'chkit migrate --apply (creates the shadow table and the mirror, then stops at the copy check)',
90
+ `chkit plugin backfill plan --cutover ${target} (then run or submit the plan)`,
91
+ 'chkit migrate --apply (verifies the copy and swaps the tables)',
92
+ ]
93
+ : ['chkit migrate --apply'];
94
+ return {
95
+ table: target,
96
+ key: request.key,
97
+ copy: options.copy,
98
+ oldTable: options.oldTable,
99
+ shadow: `${request.database}.${names.shadow}`,
100
+ mirror: `${request.database}.${names.mirror}`,
101
+ snapshot: `${request.database}.${names.snapshot}`,
102
+ columns: cutover.columns,
103
+ ...(cutover.retained ? { retainedAs: `${request.database}.${names.previous}` } : {}),
104
+ nextSteps,
105
+ };
106
+ }
107
+ /**
108
+ * A view that reads from or writes into the cutover table and is dropped and
109
+ * recreated by the same migration would miss every INSERT of the cutover: the
110
+ * drop runs before the cutover's first step and the CREATE after its last.
111
+ */
112
+ function assertNoDependentRecreated(operations, definitions, request) {
113
+ const target = `${request.database}.${request.table}`;
114
+ const table = { database: request.database, name: request.table };
115
+ const dependents = new Set(definitions.flatMap((def) => {
116
+ if (def.kind === 'materialized_view') {
117
+ const writes = def.to.database === request.database && def.to.name === request.table;
118
+ return writes || readsTable(def.as, table, def.database) ? [`materialized_view:${def.database}.${def.name}`] : [];
119
+ }
120
+ if (def.kind === 'view')
121
+ return readsTable(def.as, table, def.database) ? [`view:${def.database}.${def.name}`] : [];
122
+ return [];
123
+ }));
124
+ const recreated = operations.find((op) => (op.type === 'drop_materialized_view' || op.type === 'drop_view') && dependents.has(op.key));
125
+ if (recreated) {
126
+ throw new Error(`--cutover ${target}: ${recreated.key.replace(/^\w+:/, '')} reads from or writes into ${target} and is recreated in the same migration, so it would miss every INSERT during the cutover. Change it in a separate migration, before or after the cutover.`);
127
+ }
128
+ }
129
+ function findTable(definitions, request) {
130
+ return definitions.find((def) => def.kind === 'table' && def.database === request.database && def.name === request.table);
131
+ }
132
+ function summarizeRisk(operations) {
133
+ const riskSummary = { safe: 0, caution: 0, danger: 0 };
134
+ for (const operation of operations)
135
+ riskSummary[operation.risk] += 1;
136
+ return riskSummary;
137
+ }
138
+ //# sourceMappingURL=cutover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cutover.js","sourceRoot":"","sources":["../../../src/commands/generate/cutover.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { MigrationPlan, SchemaDefinition } from '@chkit/core';
2
2
  import type { TableScope } from '../../runtime/table-scope.js';
3
+ import type { CutoverSummary } from './cutover.js';
3
4
  export declare function emitGenerateEmptyOutput(result: {
4
5
  migrationFile: string;
5
6
  }, jsonMode: boolean): void;
6
- export declare function emitGeneratePlanOutput(plan: MigrationPlan, jsonMode: boolean, scope: TableScope, warnings?: string[]): void;
7
+ export declare function emitGeneratePlanOutput(plan: MigrationPlan, jsonMode: boolean, scope: TableScope, warnings?: string[], cutovers?: CutoverSummary[]): void;
7
8
  export declare function emitGenerateApplyOutput(result: {
8
9
  migrationFile: string | null;
9
10
  snapshotFile: string;
10
- }, definitions: SchemaDefinition[], plan: MigrationPlan, jsonMode: boolean, scope: TableScope, warnings?: string[]): void;
11
+ }, definitions: SchemaDefinition[], plan: MigrationPlan, jsonMode: boolean, scope: TableScope, warnings?: string[], cutovers?: CutoverSummary[]): void;
11
12
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/commands/generate/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AA2B9D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAalG;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,MAAM,EAAO,GACtB,IAAI,CAgCN;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAC9D,WAAW,EAAE,gBAAgB,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,MAAM,EAAO,GACtB,IAAI,CAkCN"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../src/commands/generate/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAIlE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AA6BlD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAalG;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,MAAM,EAAO,EACvB,QAAQ,GAAE,cAAc,EAAO,GAC9B,IAAI,CAkCN;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAC9D,WAAW,EAAE,gBAAgB,EAAE,EAC/B,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,UAAU,EACjB,QAAQ,GAAE,MAAM,EAAO,EACvB,QAAQ,GAAE,cAAc,EAAO,GAC9B,IAAI,CAoCN"}
@@ -12,7 +12,7 @@ export function emitGenerateEmptyOutput(result, jsonMode) {
12
12
  console.log(`Generated empty migration: ${result.migrationFile}`);
13
13
  console.log('Snapshot unchanged. Add your SQL to the file, then run "chkit migrate".');
14
14
  }
15
- export function emitGeneratePlanOutput(plan, jsonMode, scope, warnings = []) {
15
+ export function emitGeneratePlanOutput(plan, jsonMode, scope, warnings = [], cutovers = []) {
16
16
  const payload = {
17
17
  scope,
18
18
  mode: 'plan',
@@ -21,6 +21,7 @@ export function emitGeneratePlanOutput(plan, jsonMode, scope, warnings = []) {
21
21
  operations: plan.operations,
22
22
  renameSuggestions: plan.renameSuggestions,
23
23
  warnings,
24
+ ...(cutovers.length > 0 ? { cutovers } : {}),
24
25
  };
25
26
  if (jsonMode) {
26
27
  emitJson('generate', payload);
@@ -32,6 +33,7 @@ export function emitGeneratePlanOutput(plan, jsonMode, scope, warnings = []) {
32
33
  console.log(`- ${line}`);
33
34
  for (const warning of payload.warnings)
34
35
  console.warn(`Warning: ${warning}`);
36
+ printCutovers(cutovers);
35
37
  if (payload.renameSuggestions.length > 0) {
36
38
  console.log('\nRename suggestions (review and confirm manually):');
37
39
  for (const suggestion of payload.renameSuggestions) {
@@ -41,7 +43,7 @@ export function emitGeneratePlanOutput(plan, jsonMode, scope, warnings = []) {
41
43
  }
42
44
  }
43
45
  }
44
- export function emitGenerateApplyOutput(result, definitions, plan, jsonMode, scope, warnings = []) {
46
+ export function emitGenerateApplyOutput(result, definitions, plan, jsonMode, scope, warnings = [], cutovers = []) {
45
47
  const payload = {
46
48
  scope,
47
49
  migrationFile: result.migrationFile,
@@ -50,6 +52,7 @@ export function emitGenerateApplyOutput(result, definitions, plan, jsonMode, sco
50
52
  operationCount: plan.operations.length,
51
53
  riskSummary: plan.riskSummary,
52
54
  warnings,
55
+ ...(cutovers.length > 0 ? { cutovers } : {}),
53
56
  };
54
57
  if (jsonMode) {
55
58
  emitJson('generate', payload);
@@ -73,5 +76,17 @@ export function emitGenerateApplyOutput(result, definitions, plan, jsonMode, sco
73
76
  console.log(`Risk summary: safe=${plan.riskSummary.safe}, caution=${plan.riskSummary.caution}, danger=${plan.riskSummary.danger}`);
74
77
  for (const warning of payload.warnings)
75
78
  console.warn(`Warning: ${warning}`);
79
+ printCutovers(cutovers);
80
+ }
81
+ function printCutovers(cutovers) {
82
+ for (const cutover of cutovers) {
83
+ console.log(`\nCutover ${cutover.table} (key ${cutover.key.join(', ')}, copy: ${cutover.copy}, old table: ${cutover.oldTable})`);
84
+ console.log(` shadow ${cutover.shadow}, mirror ${cutover.mirror}, snapshot ${cutover.snapshot}`);
85
+ if (cutover.retainedAs)
86
+ console.log(` the old table is kept as ${cutover.retainedAs}`);
87
+ console.log(' Next:');
88
+ for (const step of cutover.nextSteps)
89
+ console.log(` - ${step}`);
90
+ }
76
91
  }
77
92
  //# sourceMappingURL=output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/commands/generate/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/commands/generate/output.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plan-pipeline.d.ts","sourceRoot":"","sources":["../../../src/commands/generate/plan-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEtB,aAAa,EAEb,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE5G,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,mBAAmB,EAAE,sBAAsB,EAAE,GAC5C,aAAa,CAwCf;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,aAAa,CA8Cf;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,uBAAuB,EAAE,GAClC,aAAa,CA8Cf;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,sBAAsB,EAAE,CA2B1B;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,mBAAmB,EAAE,EAClC,IAAI,EAAE,aAAa,EACnB,eAAe,EAAE,gBAAgB,EAAE,GAClC,IAAI,CAsBN"}
1
+ {"version":3,"file":"plan-pipeline.d.ts","sourceRoot":"","sources":["../../../src/commands/generate/plan-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEtB,aAAa,EAEb,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAGpB,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAO5G,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,mBAAmB,EAAE,sBAAsB,EAAE,GAC5C,aAAa,CAoCf;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,aAAa,CA0Cf;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,uBAAuB,EAAE,GAClC,aAAa,CA0Cf;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,sBAAsB,EAAE,CA2B1B;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,mBAAmB,EAAE,EAClC,IAAI,EAAE,aAAa,EACnB,eAAe,EAAE,gBAAgB,EAAE,GAClC,IAAI,CAsBN"}