sqlew 3.6.10 → 3.7.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 (372) hide show
  1. package/CHANGELOG.md +346 -0
  2. package/README.md +54 -39
  3. package/assets/config.example.toml +93 -0
  4. package/assets/kanban-visualizer.png +0 -0
  5. package/assets/sample-agents/sqlew-architect.md +32 -13
  6. package/assets/sample-agents/sqlew-researcher.md +70 -17
  7. package/assets/sample-agents/sqlew-scrum-master.md +60 -25
  8. package/assets/schema.sql +2 -2
  9. package/dist/adapters/auth/auth-factory.d.ts +86 -0
  10. package/dist/adapters/auth/auth-factory.d.ts.map +1 -0
  11. package/dist/adapters/auth/auth-factory.js +103 -0
  12. package/dist/adapters/auth/auth-factory.js.map +1 -0
  13. package/dist/adapters/auth/auth-types.d.ts +30 -0
  14. package/dist/adapters/auth/auth-types.d.ts.map +1 -0
  15. package/dist/adapters/auth/auth-types.js +30 -0
  16. package/dist/adapters/auth/auth-types.js.map +1 -0
  17. package/dist/adapters/auth/base-auth-provider.d.ts +327 -0
  18. package/dist/adapters/auth/base-auth-provider.d.ts.map +1 -0
  19. package/dist/adapters/auth/base-auth-provider.js +111 -0
  20. package/dist/adapters/auth/base-auth-provider.js.map +1 -0
  21. package/dist/adapters/auth/direct-auth-provider.d.ts +356 -0
  22. package/dist/adapters/auth/direct-auth-provider.d.ts.map +1 -0
  23. package/dist/adapters/auth/direct-auth-provider.js +406 -0
  24. package/dist/adapters/auth/direct-auth-provider.js.map +1 -0
  25. package/dist/adapters/base-adapter.d.ts +638 -0
  26. package/dist/adapters/base-adapter.d.ts.map +1 -0
  27. package/dist/adapters/base-adapter.js +557 -0
  28. package/dist/adapters/base-adapter.js.map +1 -0
  29. package/dist/adapters/index.d.ts +13 -2
  30. package/dist/adapters/index.d.ts.map +1 -1
  31. package/dist/adapters/index.js +27 -5
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/adapters/mysql-adapter.d.ts +547 -6
  34. package/dist/adapters/mysql-adapter.d.ts.map +1 -1
  35. package/dist/adapters/mysql-adapter.js +651 -32
  36. package/dist/adapters/mysql-adapter.js.map +1 -1
  37. package/dist/adapters/postgresql-adapter.d.ts +15 -4
  38. package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
  39. package/dist/adapters/postgresql-adapter.js +19 -2
  40. package/dist/adapters/postgresql-adapter.js.map +1 -1
  41. package/dist/adapters/sqlite-adapter.d.ts +35 -5
  42. package/dist/adapters/sqlite-adapter.d.ts.map +1 -1
  43. package/dist/adapters/sqlite-adapter.js +57 -18
  44. package/dist/adapters/sqlite-adapter.js.map +1 -1
  45. package/dist/cli/db-dump.d.ts +32 -0
  46. package/dist/cli/db-dump.d.ts.map +1 -0
  47. package/dist/cli/db-dump.js +409 -0
  48. package/dist/cli/db-dump.js.map +1 -0
  49. package/dist/cli.js +24 -14
  50. package/dist/cli.js.map +1 -1
  51. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
  52. package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.js +7 -2
  53. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
  54. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
  55. package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.js +49 -50
  56. package/dist/config/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
  57. package/dist/config/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
  58. package/dist/config/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
  59. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
  60. package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.js +11 -6
  61. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
  62. package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
  63. package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.js +66 -14
  64. package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -0
  65. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  66. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +22 -0
  67. package/dist/config/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  68. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  69. package/dist/config/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  70. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
  71. package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.js +6 -0
  72. package/dist/config/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
  73. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  74. package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js +6 -0
  75. package/dist/config/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  76. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
  77. package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.js +6 -0
  78. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
  79. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  80. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
  81. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  82. package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js +7 -0
  83. package/dist/config/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  84. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
  85. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js +62 -0
  86. package/dist/config/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
  87. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
  88. package/dist/config/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
  89. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
  90. package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.js +6 -0
  91. package/dist/config/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
  92. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
  93. package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.js +6 -0
  94. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
  95. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts +13 -0
  96. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.d.ts.map +1 -0
  97. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js +48 -0
  98. package/dist/config/knex/enhancements/20251031000000_drop_orphaned_message_view.js.map +1 -0
  99. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts +24 -0
  100. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.d.ts.map +1 -0
  101. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js +189 -0
  102. package/dist/config/knex/enhancements/20251104000003_rename_constraints_created_by_to_agent_id.js.map +1 -0
  103. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts +16 -0
  104. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -0
  105. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +65 -0
  106. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -0
  107. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts +23 -0
  108. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.d.ts.map +1 -0
  109. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js +118 -0
  110. package/dist/config/knex/enhancements/20251105000001_rename_decision_context_decided_by_to_agent_id.js.map +1 -0
  111. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
  112. package/dist/config/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
  113. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
  114. package/dist/config/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
  115. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
  116. package/dist/config/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
  117. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
  118. package/dist/config/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
  119. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
  120. package/dist/config/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
  121. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
  122. package/dist/config/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
  123. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
  124. package/dist/config/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
  125. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts +49 -0
  126. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -0
  127. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +864 -0
  128. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -0
  129. package/dist/config/loader.d.ts +19 -1
  130. package/dist/config/loader.d.ts.map +1 -1
  131. package/dist/config/loader.js +149 -4
  132. package/dist/config/loader.js.map +1 -1
  133. package/dist/config/types.d.ts +261 -2
  134. package/dist/config/types.d.ts.map +1 -1
  135. package/dist/config/types.js.map +1 -1
  136. package/dist/config/writer.d.ts +65 -0
  137. package/dist/config/writer.d.ts.map +1 -0
  138. package/dist/config/writer.js +139 -0
  139. package/dist/config/writer.js.map +1 -0
  140. package/dist/database.d.ts +11 -2
  141. package/dist/database.d.ts.map +1 -1
  142. package/dist/database.js +62 -6
  143. package/dist/database.js.map +1 -1
  144. package/dist/index.js +173 -39
  145. package/dist/index.js.map +1 -1
  146. package/dist/knexfile.d.ts.map +1 -1
  147. package/dist/knexfile.js +88 -12
  148. package/dist/knexfile.js.map +1 -1
  149. package/dist/tests/all-features.test.js +15 -3
  150. package/dist/tests/all-features.test.js.map +1 -1
  151. package/dist/tests/config-loader.test.d.ts +6 -0
  152. package/dist/tests/config-loader.test.d.ts.map +1 -0
  153. package/dist/tests/config-loader.test.js +201 -0
  154. package/dist/tests/config-loader.test.js.map +1 -0
  155. package/dist/tests/connection-manager-integration.test.d.ts +2 -0
  156. package/dist/tests/connection-manager-integration.test.d.ts.map +1 -0
  157. package/dist/tests/connection-manager-integration.test.js +431 -0
  158. package/dist/tests/connection-manager-integration.test.js.map +1 -0
  159. package/dist/tests/connection-manager.test.d.ts +2 -0
  160. package/dist/tests/connection-manager.test.d.ts.map +1 -0
  161. package/dist/tests/connection-manager.test.js +361 -0
  162. package/dist/tests/connection-manager.test.js.map +1 -0
  163. package/dist/tests/dump-import.test.d.ts +15 -0
  164. package/dist/tests/dump-import.test.d.ts.map +1 -0
  165. package/dist/tests/dump-import.test.js +430 -0
  166. package/dist/tests/dump-import.test.js.map +1 -0
  167. package/dist/tests/migration-idempotency.test.d.ts +2 -0
  168. package/dist/tests/migration-idempotency.test.d.ts.map +1 -0
  169. package/dist/tests/migration-idempotency.test.js +330 -0
  170. package/dist/tests/migration-idempotency.test.js.map +1 -0
  171. package/dist/tests/migration-upgrade-paths.test.d.ts +2 -0
  172. package/dist/tests/migration-upgrade-paths.test.d.ts.map +1 -0
  173. package/dist/tests/migration-upgrade-paths.test.js +248 -0
  174. package/dist/tests/migration-upgrade-paths.test.js.map +1 -0
  175. package/dist/tests/migrations/test-all-versions-real.js +3 -0
  176. package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
  177. package/dist/tests/multi-project-migration.test.d.ts +17 -0
  178. package/dist/tests/multi-project-migration.test.d.ts.map +1 -0
  179. package/dist/tests/multi-project-migration.test.js +399 -0
  180. package/dist/tests/multi-project-migration.test.js.map +1 -0
  181. package/dist/tests/multi-project.test.d.ts +5 -0
  182. package/dist/tests/multi-project.test.d.ts.map +1 -0
  183. package/dist/tests/multi-project.test.js +238 -0
  184. package/dist/tests/multi-project.test.js.map +1 -0
  185. package/dist/tests/schema-migration.test.d.ts +8 -0
  186. package/dist/tests/schema-migration.test.d.ts.map +1 -0
  187. package/dist/tests/schema-migration.test.js +108 -0
  188. package/dist/tests/schema-migration.test.js.map +1 -0
  189. package/dist/tests/sql-dump-converters.test.d.ts +7 -0
  190. package/dist/tests/sql-dump-converters.test.d.ts.map +1 -0
  191. package/dist/tests/sql-dump-converters.test.js +314 -0
  192. package/dist/tests/sql-dump-converters.test.js.map +1 -0
  193. package/dist/tests/sql-dump-cross-database.test.d.ts +21 -0
  194. package/dist/tests/sql-dump-cross-database.test.d.ts.map +1 -0
  195. package/dist/tests/sql-dump-cross-database.test.js +314 -0
  196. package/dist/tests/sql-dump-cross-database.test.js.map +1 -0
  197. package/dist/tests/sql-dump-default-conversions.test.d.ts +8 -0
  198. package/dist/tests/sql-dump-default-conversions.test.d.ts.map +1 -0
  199. package/dist/tests/sql-dump-default-conversions.test.js +141 -0
  200. package/dist/tests/sql-dump-default-conversions.test.js.map +1 -0
  201. package/dist/tests/sql-dump-fk-constraints.test.d.ts +13 -0
  202. package/dist/tests/sql-dump-fk-constraints.test.d.ts.map +1 -0
  203. package/dist/tests/sql-dump-fk-constraints.test.js +381 -0
  204. package/dist/tests/sql-dump-fk-constraints.test.js.map +1 -0
  205. package/dist/tests/sql-dump-indexes.test.d.ts +12 -0
  206. package/dist/tests/sql-dump-indexes.test.d.ts.map +1 -0
  207. package/dist/tests/sql-dump-indexes.test.js +269 -0
  208. package/dist/tests/sql-dump-indexes.test.js.map +1 -0
  209. package/dist/tests/sql-dump-integration.test.d.ts +16 -0
  210. package/dist/tests/sql-dump-integration.test.d.ts.map +1 -0
  211. package/dist/tests/sql-dump-integration.test.js +342 -0
  212. package/dist/tests/sql-dump-integration.test.js.map +1 -0
  213. package/dist/tests/sql-dump-table-ordering.test.d.ts +8 -0
  214. package/dist/tests/sql-dump-table-ordering.test.d.ts.map +1 -0
  215. package/dist/tests/sql-dump-table-ordering.test.js +253 -0
  216. package/dist/tests/sql-dump-table-ordering.test.js.map +1 -0
  217. package/dist/tests/tasks.link-file-backward-compat.test.js +11 -1
  218. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  219. package/dist/tests/tasks.watch-files-action.test.js +11 -1
  220. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  221. package/dist/tests/type-conversion.test.d.ts +8 -0
  222. package/dist/tests/type-conversion.test.d.ts.map +1 -0
  223. package/dist/tests/type-conversion.test.js +312 -0
  224. package/dist/tests/type-conversion.test.js.map +1 -0
  225. package/dist/tests/utils/test-helpers.d.ts +93 -0
  226. package/dist/tests/utils/test-helpers.d.ts.map +1 -0
  227. package/dist/tests/utils/test-helpers.js +407 -0
  228. package/dist/tests/utils/test-helpers.js.map +1 -0
  229. package/dist/tools/config.d.ts +58 -0
  230. package/dist/tools/config.d.ts.map +1 -0
  231. package/dist/tools/config.js +281 -0
  232. package/dist/tools/config.js.map +1 -0
  233. package/dist/tools/constraints.d.ts.map +1 -1
  234. package/dist/tools/constraints.js +138 -122
  235. package/dist/tools/constraints.js.map +1 -1
  236. package/dist/tools/context.d.ts.map +1 -1
  237. package/dist/tools/context.js +216 -109
  238. package/dist/tools/context.js.map +1 -1
  239. package/dist/tools/files.d.ts.map +1 -1
  240. package/dist/tools/files.js +123 -102
  241. package/dist/tools/files.js.map +1 -1
  242. package/dist/tools/tasks.d.ts.map +1 -1
  243. package/dist/tools/tasks.js +593 -518
  244. package/dist/tools/tasks.js.map +1 -1
  245. package/dist/tools/utils.d.ts +5 -0
  246. package/dist/tools/utils.d.ts.map +1 -1
  247. package/dist/tools/utils.js +176 -122
  248. package/dist/tools/utils.js.map +1 -1
  249. package/dist/types.d.ts +9 -26
  250. package/dist/types.d.ts.map +1 -1
  251. package/dist/utils/cleanup.d.ts +3 -0
  252. package/dist/utils/cleanup.d.ts.map +1 -1
  253. package/dist/utils/cleanup.js +14 -2
  254. package/dist/utils/cleanup.js.map +1 -1
  255. package/dist/utils/connection-manager.d.ts +59 -0
  256. package/dist/utils/connection-manager.d.ts.map +1 -0
  257. package/dist/utils/connection-manager.js +178 -0
  258. package/dist/utils/connection-manager.js.map +1 -0
  259. package/dist/utils/debug-logger.d.ts +8 -4
  260. package/dist/utils/debug-logger.d.ts.map +1 -1
  261. package/dist/utils/debug-logger.js +27 -7
  262. package/dist/utils/debug-logger.js.map +1 -1
  263. package/dist/utils/error-handler.d.ts +6 -4
  264. package/dist/utils/error-handler.d.ts.map +1 -1
  265. package/dist/utils/error-handler.js +34 -9
  266. package/dist/utils/error-handler.js.map +1 -1
  267. package/dist/utils/parameter-validator.d.ts.map +1 -1
  268. package/dist/utils/parameter-validator.js +50 -16
  269. package/dist/utils/parameter-validator.js.map +1 -1
  270. package/dist/utils/project-context.d.ts +111 -0
  271. package/dist/utils/project-context.d.ts.map +1 -0
  272. package/dist/utils/project-context.js +187 -0
  273. package/dist/utils/project-context.js.map +1 -0
  274. package/dist/utils/sql-dump-converters.d.ts +188 -0
  275. package/dist/utils/sql-dump-converters.d.ts.map +1 -0
  276. package/dist/utils/sql-dump-converters.js +311 -0
  277. package/dist/utils/sql-dump-converters.js.map +1 -0
  278. package/dist/utils/sql-dump.d.ts +102 -0
  279. package/dist/utils/sql-dump.d.ts.map +1 -0
  280. package/dist/utils/sql-dump.js +1550 -0
  281. package/dist/utils/sql-dump.js.map +1 -0
  282. package/dist/utils/vcs-adapter.d.ts +42 -0
  283. package/dist/utils/vcs-adapter.d.ts.map +1 -1
  284. package/dist/utils/vcs-adapter.js +154 -0
  285. package/dist/utils/vcs-adapter.js.map +1 -1
  286. package/docs/BASEADAPTER_IMPLEMENTATION.md +399 -0
  287. package/docs/DATABASE_AUTH.md +445 -0
  288. package/docs/DATABASE_MIGRATION.md +247 -0
  289. package/docs/MULTI_PROJECT_ARCHITECTURE.md +497 -0
  290. package/package.json +12 -4
  291. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +0 -1
  292. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +0 -1
  293. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +0 -1
  294. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +0 -1
  295. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +0 -1
  296. package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +0 -1
  297. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +0 -1
  298. package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +0 -1
  299. package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +0 -1
  300. package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +0 -1
  301. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
  302. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js +0 -15
  303. package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
  304. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
  305. package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +0 -1
  306. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +0 -1
  307. package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +0 -1
  308. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
  309. package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
  310. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +0 -1
  311. package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +0 -1
  312. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
  313. package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +0 -1
  314. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
  315. package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
  316. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
  317. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js +0 -34
  318. package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +0 -1
  319. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
  320. package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
  321. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +0 -1
  322. package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +0 -1
  323. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +0 -1
  324. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +0 -1
  325. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +0 -1
  326. package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +0 -1
  327. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +0 -1
  328. package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +0 -1
  329. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +0 -1
  330. package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +0 -1
  331. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +0 -1
  332. package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +0 -1
  333. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +0 -1
  334. package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +0 -1
  335. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +0 -1
  336. package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +0 -1
  337. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +0 -1
  338. package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +0 -1
  339. /package/dist/{migrations → config}/knex/bootstrap/20251025020452_create_master_tables.d.ts +0 -0
  340. /package/dist/{migrations → config}/knex/bootstrap/20251025021152_create_transaction_tables.d.ts +0 -0
  341. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.d.ts +0 -0
  342. /package/dist/{migrations → config}/knex/bootstrap/20251025021351_create_indexes.js +0 -0
  343. /package/dist/{migrations → config}/knex/bootstrap/20251025021416_seed_master_data.d.ts +0 -0
  344. /package/dist/{migrations → config}/knex/bootstrap/20251025070349_create_views.d.ts +0 -0
  345. /package/dist/{migrations → config}/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts +0 -0
  346. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts +0 -0
  347. /package/dist/{migrations → config}/knex/enhancements/20251025082220_fix_task_dependencies_columns.js +0 -0
  348. /package/dist/{migrations → config}/knex/enhancements/20251025090000_create_help_system_tables.d.ts +0 -0
  349. /package/dist/{migrations → config}/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts +0 -0
  350. /package/dist/{migrations → config}/knex/enhancements/20251025100000_seed_help_metadata.d.ts +0 -0
  351. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts +0 -0
  352. /package/dist/{migrations → config}/knex/enhancements/20251025100100_seed_remaining_use_cases.js +0 -0
  353. /package/dist/{migrations → config}/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts +0 -0
  354. /package/dist/{migrations → config}/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts +0 -0
  355. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts +0 -0
  356. /package/dist/{migrations → config}/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js +0 -0
  357. /package/dist/{migrations → config}/knex/enhancements/20251027020000_update_agent_reusability.d.ts +0 -0
  358. /package/dist/{migrations → config}/knex/enhancements/20251028000000_simplify_agent_system.d.ts +0 -0
  359. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +0 -0
  360. /package/dist/{migrations → config}/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +0 -0
  361. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +0 -0
  362. /package/dist/{migrations → config}/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +0 -0
  363. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +0 -0
  364. /package/dist/{migrations → config}/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +0 -0
  365. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +0 -0
  366. /package/dist/{migrations → config}/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +0 -0
  367. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +0 -0
  368. /package/dist/{migrations → config}/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +0 -0
  369. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +0 -0
  370. /package/dist/{migrations → config}/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +0 -0
  371. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +0 -0
  372. /package/dist/{migrations → config}/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +0 -0
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Cross-database migration integration tests
3
+ *
4
+ * Tests full migration workflow:
5
+ * 1. Generate SQL dump from SQLite
6
+ * 2. Import to PostgreSQL
7
+ * 3. Import to MySQL
8
+ * 4. Verify data integrity
9
+ *
10
+ * Prerequisites:
11
+ * - Docker installed and running
12
+ * - Run: docker-compose -f docker/docker-compose.test.yml up -d
13
+ */
14
+ import knex from 'knex';
15
+ import { generateSqlDump } from '../utils/sql-dump.js';
16
+ import { describe, it, before, after } from 'node:test';
17
+ import assert from 'node:assert';
18
+ import { writeFileSync, unlinkSync } from 'node:fs';
19
+ import { exec } from 'node:child_process';
20
+ import { promisify } from 'node:util';
21
+ const execAsync = promisify(exec);
22
+ // Test database configurations
23
+ const configs = {
24
+ sqlite: {
25
+ client: 'better-sqlite3',
26
+ connection: { filename: '.sqlew/sqlew.db' },
27
+ useNullAsDefault: true,
28
+ },
29
+ postgresql: {
30
+ client: 'pg',
31
+ connection: {
32
+ host: 'localhost',
33
+ port: 5433,
34
+ user: 'testuser',
35
+ password: 'testpass',
36
+ database: 'sqlew_test',
37
+ },
38
+ },
39
+ mysql: {
40
+ client: 'mysql2',
41
+ connection: {
42
+ host: 'localhost',
43
+ port: 3308,
44
+ user: 'testuser',
45
+ password: 'testpass',
46
+ database: 'sqlew_test',
47
+ },
48
+ },
49
+ };
50
+ describe('Cross-Database Migration Tests', () => {
51
+ let sqliteDb;
52
+ let postgresDb;
53
+ let mysqlDb;
54
+ before(async () => {
55
+ // Connect to all databases
56
+ sqliteDb = knex(configs.sqlite);
57
+ postgresDb = knex(configs.postgresql);
58
+ mysqlDb = knex(configs.mysql);
59
+ // Verify connections
60
+ console.log(' Verifying database connections...');
61
+ await postgresDb.raw('SELECT 1');
62
+ await mysqlDb.raw('SELECT 1');
63
+ console.log(' ✅ All databases connected');
64
+ });
65
+ after(async () => {
66
+ // Cleanup
67
+ await sqliteDb.destroy();
68
+ await postgresDb.destroy();
69
+ await mysqlDb.destroy();
70
+ });
71
+ describe('SQLite → PostgreSQL Migration', () => {
72
+ it('should generate PostgreSQL dump from SQLite', async () => {
73
+ console.log(' Generating PostgreSQL dump...');
74
+ const dump = await generateSqlDump(sqliteDb, 'postgresql', {
75
+ includeHeader: true,
76
+ includeSchema: true,
77
+ chunkSize: 100,
78
+ });
79
+ assert.ok(dump.length > 0, 'Dump should not be empty');
80
+ assert.ok(dump.includes('CREATE TABLE') || dump.includes('create table'), 'Dump should contain CREATE TABLE statements');
81
+ assert.ok(dump.includes('INSERT INTO') || dump.includes('insert into'), 'Dump should contain INSERT statements');
82
+ console.log(` ✅ Generated ${dump.length} characters`);
83
+ });
84
+ it('should import dump to PostgreSQL', async () => {
85
+ console.log(' Importing to PostgreSQL...');
86
+ // Generate dump (exclude knex_ tables as they have timestamp conversion issues)
87
+ const allTables = await sqliteDb.raw(`
88
+ SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'knex_%'
89
+ `);
90
+ const pgTables = allTables.map((row) => row.name);
91
+ const dump = await generateSqlDump(sqliteDb, 'postgresql', {
92
+ tables: pgTables,
93
+ includeSchema: true,
94
+ chunkSize: 50,
95
+ });
96
+ // Drop existing tables
97
+ await postgresDb.raw('DROP SCHEMA public CASCADE');
98
+ await postgresDb.raw('CREATE SCHEMA public');
99
+ // Write dump to temporary file and import using docker exec psql
100
+ const tempFile = '/tmp/sqlew-pg-test.sql';
101
+ writeFileSync(tempFile, dump);
102
+ try {
103
+ // Copy file to container and execute
104
+ await execAsync(`docker cp ${tempFile} mcp-sqlew_postgres_1:/tmp/import.sql`);
105
+ await execAsync(`docker exec mcp-sqlew_postgres_1 psql -U testuser -d sqlew_test -f /tmp/import.sql -v ON_ERROR_STOP=1 -q`, { maxBuffer: 10 * 1024 * 1024 });
106
+ }
107
+ finally {
108
+ unlinkSync(tempFile);
109
+ }
110
+ // Verify tables exist
111
+ const tables = await postgresDb.raw(`
112
+ SELECT tablename FROM pg_tables WHERE schemaname = 'public'
113
+ `);
114
+ assert.ok(tables.rows.length > 0, 'Tables should be created');
115
+ console.log(` ✅ Imported ${tables.rows.length} tables`);
116
+ });
117
+ it('should verify data integrity (row counts)', async () => {
118
+ console.log(' Verifying data integrity...');
119
+ const testTables = ['m_agents', 't_tasks', 't_decisions'];
120
+ for (const table of testTables) {
121
+ const sqliteCount = await sqliteDb(table).count('* as count').first();
122
+ const pgCount = await postgresDb(table).count('* as count').first();
123
+ // PostgreSQL returns bigint as string, convert both to numbers for comparison
124
+ assert.strictEqual(Number(pgCount?.count), Number(sqliteCount?.count), `Table ${table} row count should match`);
125
+ console.log(` ✅ ${table}: ${sqliteCount?.count} rows`);
126
+ }
127
+ });
128
+ });
129
+ describe('SQLite → MySQL Migration', () => {
130
+ it('should generate MySQL dump from SQLite', async () => {
131
+ console.log(' Generating MySQL dump...');
132
+ const dump = await generateSqlDump(sqliteDb, 'mysql', {
133
+ includeHeader: true,
134
+ includeSchema: true,
135
+ chunkSize: 100,
136
+ });
137
+ assert.ok(dump.length > 0, 'Dump should not be empty');
138
+ assert.ok(dump.includes('CREATE TABLE') || dump.includes('create table'), 'Dump should contain CREATE TABLE statements');
139
+ console.log(` ✅ Generated ${dump.length} characters`);
140
+ });
141
+ it('should import dump to MySQL', async () => {
142
+ console.log(' Importing to MySQL...');
143
+ // Generate dump (exclude knex_ tables as they have timestamp conversion issues)
144
+ const allTablesForMysql = await sqliteDb.raw(`
145
+ SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'knex_%'
146
+ `);
147
+ const mysqlTables = allTablesForMysql.map((row) => row.name);
148
+ const dump = await generateSqlDump(sqliteDb, 'mysql', {
149
+ tables: mysqlTables,
150
+ includeSchema: true,
151
+ chunkSize: 50,
152
+ });
153
+ // Drop existing views and tables (disable FK checks first)
154
+ await mysqlDb.raw('SET FOREIGN_KEY_CHECKS=0');
155
+ // Drop views first (SHOW FULL TABLES WHERE Table_type = 'VIEW')
156
+ const existingViews = await mysqlDb.raw(`SHOW FULL TABLES WHERE Table_type = 'VIEW'`);
157
+ for (const row of existingViews[0]) {
158
+ const viewName = Object.values(row)[0];
159
+ await mysqlDb.raw(`DROP VIEW IF EXISTS \`${viewName}\``);
160
+ }
161
+ // Then drop tables
162
+ const existingTables = await mysqlDb.raw('SHOW TABLES');
163
+ for (const row of existingTables[0]) {
164
+ const tableName = Object.values(row)[0];
165
+ await mysqlDb.raw(`DROP TABLE IF EXISTS \`${tableName}\``);
166
+ }
167
+ await mysqlDb.raw('SET FOREIGN_KEY_CHECKS=1');
168
+ // Write dump to temporary file and import using docker exec mysql
169
+ const tempFile = '/tmp/sqlew-mysql-test.sql';
170
+ writeFileSync(tempFile, dump);
171
+ try {
172
+ // Copy file to container and execute
173
+ await execAsync(`docker cp ${tempFile} mcp-sqlew_mysql_1:/tmp/import.sql`);
174
+ await execAsync(`docker exec mcp-sqlew_mysql_1 sh -c "mysql -u testuser -ptestpass sqlew_test < /tmp/import.sql"`, { maxBuffer: 10 * 1024 * 1024 });
175
+ }
176
+ finally {
177
+ unlinkSync(tempFile);
178
+ }
179
+ // Verify tables exist
180
+ const newTables = await mysqlDb.raw('SHOW TABLES');
181
+ assert.ok(newTables[0].length > 0, 'Tables should be created');
182
+ console.log(` ✅ Imported ${newTables[0].length} tables`);
183
+ });
184
+ it('should verify data integrity (row counts)', async () => {
185
+ console.log(' Verifying data integrity...');
186
+ const testTables = ['m_agents', 't_tasks', 't_decisions'];
187
+ for (const table of testTables) {
188
+ const sqliteCount = await sqliteDb(table).count('* as count').first();
189
+ const mysqlCount = await mysqlDb(table).count('* as count').first();
190
+ // MySQL may return bigint as string, convert both to numbers for comparison
191
+ assert.strictEqual(Number(mysqlCount?.count), Number(sqliteCount?.count), `Table ${table} row count should match`);
192
+ console.log(` ✅ ${table}: ${sqliteCount?.count} rows`);
193
+ }
194
+ });
195
+ });
196
+ describe('Data Value Verification', () => {
197
+ it('should verify boolean values converted correctly (PostgreSQL)', async () => {
198
+ console.log(' Verifying boolean conversions...');
199
+ const sqliteAgents = await sqliteDb('m_agents').select('*').limit(3);
200
+ const pgAgents = await postgresDb('m_agents').select('*').limit(3);
201
+ for (let i = 0; i < sqliteAgents.length; i++) {
202
+ // SQLite stores booleans as 0/1, PostgreSQL as TRUE/FALSE
203
+ assert.strictEqual(Boolean(sqliteAgents[i].in_use), pgAgents[i].in_use, 'Boolean in_use should match');
204
+ assert.strictEqual(Boolean(sqliteAgents[i].is_reusable), pgAgents[i].is_reusable, 'Boolean is_reusable should match');
205
+ }
206
+ console.log(' ✅ Boolean conversions verified');
207
+ });
208
+ it('should verify string values with quotes (SQL injection prevention)', async () => {
209
+ console.log(' Verifying string escaping...');
210
+ // Find tasks with quotes in titles
211
+ const sqliteTasks = await sqliteDb('t_tasks')
212
+ .select('*')
213
+ .whereRaw("title LIKE '%''%'")
214
+ .limit(3);
215
+ if (sqliteTasks.length > 0) {
216
+ const pgTasks = await postgresDb('t_tasks')
217
+ .select('*')
218
+ .whereIn('id', sqliteTasks.map(t => t.id));
219
+ for (let i = 0; i < sqliteTasks.length; i++) {
220
+ assert.strictEqual(sqliteTasks[i].title, pgTasks[i].title, 'Quoted strings should match');
221
+ }
222
+ console.log(` ✅ ${sqliteTasks.length} tasks with quotes verified`);
223
+ }
224
+ else {
225
+ console.log(' ℹ️ No tasks with quotes found (test skipped)');
226
+ }
227
+ });
228
+ });
229
+ describe('PostgreSQL Source Schema Export', () => {
230
+ it('should export PRIMARY KEY constraints from PostgreSQL', async () => {
231
+ console.log(' Testing PostgreSQL PRIMARY KEY export...');
232
+ // Get a table with PRIMARY KEY from PostgreSQL
233
+ const createSql = await generateSqlDump(postgresDb, 'postgresql', {
234
+ tables: ['m_agents'],
235
+ includeSchema: true,
236
+ chunkSize: 0, // Schema only
237
+ });
238
+ assert.ok(createSql.includes('PRIMARY KEY'), 'Should include PRIMARY KEY constraint');
239
+ console.log(' ✅ PRIMARY KEY exported');
240
+ });
241
+ it('should export FOREIGN KEY constraints from PostgreSQL', async () => {
242
+ console.log(' Testing PostgreSQL FOREIGN KEY export...');
243
+ // Get a table with FOREIGN KEY from PostgreSQL
244
+ const createSql = await generateSqlDump(postgresDb, 'postgresql', {
245
+ tables: ['t_tasks'],
246
+ includeSchema: true,
247
+ chunkSize: 0, // Schema only
248
+ });
249
+ assert.ok(createSql.includes('FOREIGN KEY') || createSql.includes('REFERENCES'), 'Should include FOREIGN KEY constraint');
250
+ console.log(' ✅ FOREIGN KEY exported');
251
+ });
252
+ it('should convert PostgreSQL → MySQL (with constraints)', async () => {
253
+ console.log(' Testing PostgreSQL → MySQL conversion...');
254
+ const dump = await generateSqlDump(postgresDb, 'mysql', {
255
+ tables: ['m_agents'],
256
+ includeSchema: true,
257
+ chunkSize: 0,
258
+ });
259
+ // Verify MySQL syntax
260
+ assert.ok(dump.includes('`'), 'Should use MySQL backtick quotes');
261
+ assert.ok(dump.includes('PRIMARY KEY'), 'Should preserve PRIMARY KEY');
262
+ console.log(' ✅ PostgreSQL → MySQL conversion works');
263
+ });
264
+ it('should convert PostgreSQL → SQLite (with SERIAL → AUTOINCREMENT)', async () => {
265
+ console.log(' Testing PostgreSQL → SQLite conversion...');
266
+ const dump = await generateSqlDump(postgresDb, 'sqlite', {
267
+ tables: ['m_agents'],
268
+ includeSchema: true,
269
+ chunkSize: 0,
270
+ });
271
+ // Verify SQLite syntax (SERIAL → INTEGER, IDENTITY → AUTOINCREMENT)
272
+ assert.ok(dump.includes('"'), 'Should use double quotes');
273
+ assert.ok(!dump.includes('SERIAL'), 'Should not contain SERIAL keyword');
274
+ console.log(' ✅ PostgreSQL → SQLite conversion works');
275
+ });
276
+ it('should handle multi-column PRIMARY KEY from PostgreSQL', async () => {
277
+ console.log(' Testing multi-column PRIMARY KEY...');
278
+ // Create a temporary table with multi-column PK
279
+ await postgresDb.raw(`
280
+ CREATE TABLE IF NOT EXISTS test_multi_pk (
281
+ col1 INTEGER NOT NULL,
282
+ col2 INTEGER NOT NULL,
283
+ value TEXT,
284
+ PRIMARY KEY (col1, col2)
285
+ )
286
+ `);
287
+ try {
288
+ const dump = await generateSqlDump(postgresDb, 'postgresql', {
289
+ tables: ['test_multi_pk'],
290
+ includeSchema: true,
291
+ chunkSize: 0,
292
+ });
293
+ assert.ok(dump.includes('PRIMARY KEY ("col1", "col2")') || dump.includes('PRIMARY KEY ('), 'Should include multi-column PRIMARY KEY');
294
+ console.log(' ✅ Multi-column PRIMARY KEY exported');
295
+ }
296
+ finally {
297
+ await postgresDb.raw('DROP TABLE IF EXISTS test_multi_pk');
298
+ }
299
+ });
300
+ it('should handle composite FOREIGN KEY from PostgreSQL', async () => {
301
+ console.log(' Testing composite FOREIGN KEY...');
302
+ // Create temporary tables with composite FK
303
+ await postgresDb.raw(`
304
+ CREATE TABLE IF NOT EXISTS test_parent (
305
+ id1 INTEGER NOT NULL,
306
+ id2 INTEGER NOT NULL,
307
+ PRIMARY KEY (id1, id2)
308
+ )
309
+ `);
310
+ await postgresDb.raw(`
311
+ CREATE TABLE IF NOT EXISTS test_child (
312
+ child_id SERIAL PRIMARY KEY,
313
+ parent_id1 INTEGER,
314
+ parent_id2 INTEGER,
315
+ FOREIGN KEY (parent_id1, parent_id2) REFERENCES test_parent(id1, id2)
316
+ )
317
+ `);
318
+ try {
319
+ const dump = await generateSqlDump(postgresDb, 'postgresql', {
320
+ tables: ['test_child'],
321
+ includeSchema: true,
322
+ chunkSize: 0,
323
+ });
324
+ assert.ok(dump.includes('FOREIGN KEY'), 'Should include FOREIGN KEY constraint');
325
+ console.log(' ✅ Composite FOREIGN KEY exported');
326
+ }
327
+ finally {
328
+ await postgresDb.raw('DROP TABLE IF EXISTS test_child');
329
+ await postgresDb.raw('DROP TABLE IF EXISTS test_parent');
330
+ }
331
+ });
332
+ it('should handle UNIQUE constraints from PostgreSQL', async () => {
333
+ console.log(' Testing UNIQUE constraints...');
334
+ // Create temporary table with UNIQUE constraint
335
+ await postgresDb.raw(`
336
+ CREATE TABLE IF NOT EXISTS test_unique (
337
+ id SERIAL PRIMARY KEY,
338
+ email TEXT UNIQUE,
339
+ username TEXT
340
+ )
341
+ `);
342
+ try {
343
+ const dump = await generateSqlDump(postgresDb, 'postgresql', {
344
+ tables: ['test_unique'],
345
+ includeSchema: true,
346
+ chunkSize: 0,
347
+ });
348
+ assert.ok(dump.includes('UNIQUE'), 'Should include UNIQUE constraint');
349
+ console.log(' ✅ UNIQUE constraint exported');
350
+ }
351
+ finally {
352
+ await postgresDb.raw('DROP TABLE IF EXISTS test_unique');
353
+ }
354
+ });
355
+ it('should handle ON DELETE/ON UPDATE rules from PostgreSQL', async () => {
356
+ console.log(' Testing FK ON DELETE/UPDATE rules...');
357
+ // Create temporary tables with FK rules
358
+ await postgresDb.raw(`
359
+ CREATE TABLE IF NOT EXISTS test_fk_parent (
360
+ id SERIAL PRIMARY KEY,
361
+ name TEXT
362
+ )
363
+ `);
364
+ await postgresDb.raw(`
365
+ CREATE TABLE IF NOT EXISTS test_fk_child (
366
+ id SERIAL PRIMARY KEY,
367
+ parent_id INTEGER,
368
+ FOREIGN KEY (parent_id) REFERENCES test_fk_parent(id) ON DELETE CASCADE ON UPDATE CASCADE
369
+ )
370
+ `);
371
+ try {
372
+ const dump = await generateSqlDump(postgresDb, 'postgresql', {
373
+ tables: ['test_fk_child'],
374
+ includeSchema: true,
375
+ chunkSize: 0,
376
+ });
377
+ assert.ok(dump.includes('ON DELETE CASCADE') || dump.includes('CASCADE'), 'Should include ON DELETE CASCADE');
378
+ assert.ok(dump.includes('ON UPDATE CASCADE') || dump.includes('CASCADE'), 'Should include ON UPDATE CASCADE');
379
+ console.log(' ✅ FK rules (ON DELETE/UPDATE) exported');
380
+ }
381
+ finally {
382
+ await postgresDb.raw('DROP TABLE IF EXISTS test_fk_child');
383
+ await postgresDb.raw('DROP TABLE IF EXISTS test_fk_parent');
384
+ }
385
+ });
386
+ it('should handle DEFAULT values from PostgreSQL (excluding nextval)', async () => {
387
+ console.log(' Testing DEFAULT value handling...');
388
+ // Create temporary table with various defaults
389
+ await postgresDb.raw(`
390
+ CREATE TABLE IF NOT EXISTS test_defaults (
391
+ id SERIAL PRIMARY KEY,
392
+ status TEXT DEFAULT 'active',
393
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
394
+ count INTEGER DEFAULT 0
395
+ )
396
+ `);
397
+ try {
398
+ const dump = await generateSqlDump(postgresDb, 'postgresql', {
399
+ tables: ['test_defaults'],
400
+ includeSchema: true,
401
+ chunkSize: 0,
402
+ });
403
+ assert.ok(dump.includes("DEFAULT 'active'") || dump.includes('DEFAULT'), 'Should include DEFAULT values');
404
+ assert.ok(!dump.includes('nextval'), 'Should skip nextval sequences');
405
+ console.log(' ✅ DEFAULT values exported (nextval skipped)');
406
+ }
407
+ finally {
408
+ await postgresDb.raw('DROP TABLE IF EXISTS test_defaults');
409
+ }
410
+ });
411
+ it('should generate idempotent PostgreSQL → PostgreSQL dump', async () => {
412
+ console.log(' Testing PostgreSQL idempotent dump...');
413
+ const dump1 = await generateSqlDump(postgresDb, 'postgresql', {
414
+ tables: ['m_agents'],
415
+ includeSchema: true,
416
+ chunkSize: 0,
417
+ });
418
+ const dump2 = await generateSqlDump(postgresDb, 'postgresql', {
419
+ tables: ['m_agents'],
420
+ includeSchema: true,
421
+ chunkSize: 0,
422
+ });
423
+ // Schema should be identical (modulo whitespace/comments)
424
+ const normalize = (sql) => sql.replace(/--.*$/gm, '').replace(/\s+/g, ' ').trim();
425
+ assert.strictEqual(normalize(dump1), normalize(dump2), 'Idempotent dumps should be identical');
426
+ console.log(' ✅ Idempotent PostgreSQL dump verified');
427
+ });
428
+ });
429
+ });
430
+ //# sourceMappingURL=dump-import.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump-import.test.js","sourceRoot":"","sources":["../../src/tests/dump-import.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migration-idempotency.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-idempotency.test.d.ts","sourceRoot":"","sources":["../../src/tests/migration-idempotency.test.ts"],"names":[],"mappings":""}