@fragno-dev/db 0.1.15 → 0.2.0

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 (407) hide show
  1. package/.turbo/turbo-build.log +242 -179
  2. package/CHANGELOG.md +23 -0
  3. package/README.md +123 -8
  4. package/dist/adapters/adapters.d.ts +5 -5
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -21
  8. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  9. package/dist/adapters/drizzle/drizzle-adapter.js +7 -54
  10. package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
  11. package/dist/adapters/drizzle/generate.d.ts +3 -0
  12. package/dist/adapters/drizzle/generate.d.ts.map +1 -1
  13. package/dist/adapters/drizzle/generate.js +36 -28
  14. package/dist/adapters/drizzle/generate.js.map +1 -1
  15. package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
  16. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
  17. package/dist/adapters/generic-sql/driver-config.js +94 -0
  18. package/dist/adapters/generic-sql/driver-config.js.map +1 -0
  19. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
  20. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
  21. package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
  22. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
  23. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
  24. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
  25. package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
  26. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
  27. package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
  28. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
  29. package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
  30. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
  31. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
  32. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
  33. package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
  34. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  35. package/dist/adapters/generic-sql/migration/executor.js +18 -0
  36. package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
  37. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  38. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  39. package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
  40. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
  41. package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
  42. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
  43. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
  44. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
  45. package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
  46. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
  47. package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
  48. package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
  49. package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
  50. package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
  51. package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
  52. package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
  53. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
  54. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
  55. package/dist/adapters/generic-sql/query/select-builder.js +69 -0
  56. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
  57. package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
  58. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
  59. package/dist/adapters/generic-sql/query/where-builder.js +129 -0
  60. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
  61. package/dist/adapters/generic-sql/result-interpreter.js +74 -0
  62. package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
  63. package/dist/adapters/generic-sql/uow-decoder.js +105 -0
  64. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
  65. package/dist/adapters/generic-sql/uow-encoder.js +93 -0
  66. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
  67. package/dist/adapters/kysely/kysely-adapter.d.ts +5 -18
  68. package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
  69. package/dist/adapters/kysely/kysely-adapter.js +6 -165
  70. package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
  71. package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +47 -61
  72. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
  73. package/dist/adapters/{drizzle/shared.d.ts → shared/table-name-mapper.d.ts} +2 -4
  74. package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
  75. package/dist/adapters/shared/table-name-mapper.js +43 -0
  76. package/dist/adapters/shared/table-name-mapper.js.map +1 -0
  77. package/dist/adapters/shared/uow-operation-compiler.js +105 -0
  78. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
  79. package/dist/db-fragment-definition-builder.d.ts +53 -19
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +89 -19
  82. package/dist/db-fragment-definition-builder.js.map +1 -1
  83. package/dist/fragments/internal-fragment.d.ts +39 -5
  84. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  85. package/dist/fragments/internal-fragment.js +82 -10
  86. package/dist/fragments/internal-fragment.js.map +1 -1
  87. package/dist/hooks/hooks.d.ts +51 -0
  88. package/dist/hooks/hooks.d.ts.map +1 -0
  89. package/dist/hooks/hooks.js +88 -0
  90. package/dist/hooks/hooks.js.map +1 -0
  91. package/dist/migration-engine/generation-engine.d.ts +0 -2
  92. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  93. package/dist/migration-engine/generation-engine.js +23 -61
  94. package/dist/migration-engine/generation-engine.js.map +1 -1
  95. package/dist/mod.d.ts +34 -10
  96. package/dist/mod.d.ts.map +1 -1
  97. package/dist/mod.js +47 -16
  98. package/dist/mod.js.map +1 -1
  99. package/dist/node_modules/.pnpm/{rou3@0.7.8 → rou3@0.7.10}/node_modules/rou3/dist/index.js +1 -1
  100. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
  101. package/dist/packages/fragno/dist/api/fragment-instantiator.js +69 -31
  102. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
  103. package/dist/query/column-defaults.js +27 -0
  104. package/dist/query/column-defaults.js.map +1 -0
  105. package/dist/query/cursor.d.ts +4 -4
  106. package/dist/query/cursor.d.ts.map +1 -1
  107. package/dist/query/cursor.js +8 -6
  108. package/dist/query/cursor.js.map +1 -1
  109. package/dist/query/orm/orm.d.ts +1 -1
  110. package/dist/query/orm/orm.js.map +1 -1
  111. package/dist/query/serialize/create-sql-serializer.js +30 -0
  112. package/dist/query/serialize/create-sql-serializer.js.map +1 -0
  113. package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
  114. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
  115. package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
  116. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
  117. package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
  118. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
  119. package/dist/query/serialize/sql-serializer.js +67 -0
  120. package/dist/query/serialize/sql-serializer.js.map +1 -0
  121. package/dist/query/{query.d.ts → simple-query-interface.d.ts} +5 -5
  122. package/dist/query/simple-query-interface.d.ts.map +1 -0
  123. package/dist/query/{execute-unit-of-work.d.ts → unit-of-work/execute-unit-of-work.d.ts} +13 -3
  124. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  125. package/dist/query/{execute-unit-of-work.js → unit-of-work/execute-unit-of-work.js} +17 -4
  126. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  127. package/dist/query/{retry-policy.d.ts → unit-of-work/retry-policy.d.ts} +1 -1
  128. package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
  129. package/dist/query/{retry-policy.js → unit-of-work/retry-policy.js} +1 -1
  130. package/dist/query/unit-of-work/retry-policy.js.map +1 -0
  131. package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +51 -18
  132. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  133. package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +58 -11
  134. package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
  135. package/dist/query/value-decoding.js +71 -0
  136. package/dist/query/value-decoding.js.map +1 -0
  137. package/dist/query/value-encoding.js +124 -0
  138. package/dist/query/value-encoding.js.map +1 -0
  139. package/dist/schema/create.d.ts +3 -0
  140. package/dist/schema/create.d.ts.map +1 -1
  141. package/dist/schema/create.js +4 -0
  142. package/dist/schema/create.js.map +1 -1
  143. package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
  144. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
  145. package/dist/schema/type-conversion/dialect/mysql.js +57 -0
  146. package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
  147. package/dist/schema/type-conversion/dialect/postgres.js +56 -0
  148. package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
  149. package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
  150. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
  151. package/dist/schema/type-conversion/type-mapping.js +63 -0
  152. package/dist/schema/type-conversion/type-mapping.js.map +1 -0
  153. package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
  154. package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
  155. package/dist/sql-driver/connection/connection-provider.js +19 -0
  156. package/dist/sql-driver/connection/connection-provider.js.map +1 -0
  157. package/dist/sql-driver/connection/single-connection-provider.js +23 -0
  158. package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
  159. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  160. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  161. package/dist/sql-driver/dialects/dialects.d.ts +2 -0
  162. package/dist/sql-driver/dialects/dialects.js +3 -0
  163. package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
  164. package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
  165. package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
  166. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
  167. package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
  168. package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  169. package/dist/sql-driver/driver/runtime-driver.js +56 -0
  170. package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
  171. package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
  172. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
  173. package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
  174. package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
  175. package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
  176. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
  177. package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
  178. package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  179. package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
  180. package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  181. package/dist/sql-driver/sql-driver-adapter.js +68 -0
  182. package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
  183. package/dist/sql-driver/sql-driver.d.ts +38 -0
  184. package/dist/sql-driver/sql-driver.d.ts.map +1 -0
  185. package/dist/sql-driver/sql-driver.js +1 -0
  186. package/dist/sql-driver/sql.js +50 -0
  187. package/dist/sql-driver/sql.js.map +1 -0
  188. package/dist/with-database.d.ts +6 -2
  189. package/dist/with-database.d.ts.map +1 -1
  190. package/dist/with-database.js +1 -1
  191. package/dist/with-database.js.map +1 -1
  192. package/package.json +37 -10
  193. package/src/adapters/adapters.ts +8 -5
  194. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +60 -169
  195. package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +31 -55
  196. package/src/adapters/drizzle/drizzle-adapter.ts +15 -107
  197. package/src/adapters/drizzle/generate.test.ts +2 -2
  198. package/src/adapters/drizzle/generate.ts +78 -34
  199. package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
  200. package/src/adapters/drizzle/shared.ts +0 -34
  201. package/src/adapters/drizzle/test-utils.ts +3 -3
  202. package/src/adapters/generic-sql/README.md +14 -0
  203. package/src/adapters/generic-sql/driver-config.ts +144 -0
  204. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
  205. package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
  206. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
  207. package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
  208. package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
  209. package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
  210. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
  211. package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
  212. package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
  213. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
  214. package/src/adapters/generic-sql/migration/executor.ts +33 -0
  215. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
  216. package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
  217. package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
  218. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
  219. package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
  220. package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
  221. package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
  222. package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
  223. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
  224. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
  225. package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
  226. package/src/adapters/generic-sql/query/select-builder.ts +137 -0
  227. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
  228. package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
  229. package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
  230. package/src/adapters/generic-sql/query/where-builder.ts +211 -0
  231. package/src/adapters/generic-sql/result-interpreter.ts +102 -0
  232. package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
  233. package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
  234. package/src/adapters/generic-sql/uow-decoder.ts +152 -0
  235. package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
  236. package/src/adapters/generic-sql/uow-encoder.ts +131 -0
  237. package/src/adapters/kysely/kysely-adapter-pglite.test.ts +26 -76
  238. package/src/adapters/kysely/{kysely-adapter-sqlite.test.ts → kysely-adapter-sqlocal.test.ts} +76 -17
  239. package/src/adapters/kysely/kysely-adapter.ts +10 -250
  240. package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +110 -104
  241. package/src/adapters/shared/table-name-mapper.ts +50 -0
  242. package/src/adapters/shared/uow-operation-compiler.ts +211 -0
  243. package/src/db-fragment-definition-builder.test.ts +2 -2
  244. package/src/db-fragment-definition-builder.ts +281 -50
  245. package/src/db-fragment-instantiator.test.ts +78 -2
  246. package/src/db-fragment-integration.test.ts +14 -16
  247. package/src/fragments/internal-fragment.test.ts +434 -45
  248. package/src/fragments/internal-fragment.ts +184 -20
  249. package/src/hooks/hooks.test.ts +575 -0
  250. package/src/hooks/hooks.ts +179 -0
  251. package/src/migration-engine/generation-engine.test.ts +44 -54
  252. package/src/migration-engine/generation-engine.ts +48 -94
  253. package/src/mod.ts +117 -29
  254. package/src/query/column-defaults.ts +49 -0
  255. package/src/query/cursor.test.ts +31 -6
  256. package/src/query/cursor.ts +11 -7
  257. package/src/query/orm/orm.ts +1 -1
  258. package/src/query/query-type.test.ts +9 -9
  259. package/src/query/serialize/create-sql-serializer.ts +34 -0
  260. package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
  261. package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
  262. package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
  263. package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
  264. package/src/query/serialize/sql-serializer.ts +143 -0
  265. package/src/query/{query.ts → simple-query-interface.ts} +2 -2
  266. package/src/query/{execute-unit-of-work.test.ts → unit-of-work/execute-unit-of-work.test.ts} +16 -16
  267. package/src/query/{execute-unit-of-work.ts → unit-of-work/execute-unit-of-work.ts} +49 -8
  268. package/src/query/{unit-of-work-coordinator.test.ts → unit-of-work/unit-of-work-coordinator.test.ts} +41 -43
  269. package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +5 -3
  270. package/src/query/{unit-of-work.test.ts → unit-of-work/unit-of-work.test.ts} +100 -9
  271. package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +135 -32
  272. package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -427
  273. package/src/query/value-decoding.ts +113 -0
  274. package/src/query/value-encoding.test.ts +390 -0
  275. package/src/query/value-encoding.ts +168 -0
  276. package/src/schema/create.test.ts +5 -1
  277. package/src/schema/create.ts +5 -0
  278. package/src/schema/serialize.test.ts +165 -407
  279. package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
  280. package/src/schema/type-conversion/dialect/mysql.ts +64 -0
  281. package/src/schema/type-conversion/dialect/postgres.ts +62 -0
  282. package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
  283. package/src/schema/type-conversion/type-mapping.test.ts +137 -0
  284. package/src/schema/type-conversion/type-mapping.ts +153 -0
  285. package/src/shared/connection-pool.ts +5 -5
  286. package/src/sql-driver/better-sqlite3.test.ts +126 -0
  287. package/src/sql-driver/connection/connection-provider.ts +27 -0
  288. package/src/sql-driver/connection/single-connection-provider.ts +42 -0
  289. package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
  290. package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
  291. package/src/sql-driver/dialects/dialects.ts +1 -0
  292. package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
  293. package/src/sql-driver/driver/runtime-driver.ts +91 -0
  294. package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
  295. package/src/sql-driver/query-executor/plugin.ts +22 -0
  296. package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
  297. package/src/sql-driver/query-executor/query-executor.ts +44 -0
  298. package/src/sql-driver/sql-driver-adapter.ts +96 -0
  299. package/src/sql-driver/sql-driver.ts +53 -0
  300. package/src/sql-driver/sql.ts +57 -0
  301. package/src/sql-driver/sqlocal.test.ts +117 -0
  302. package/src/with-database.ts +35 -23
  303. package/tsdown.config.ts +7 -2
  304. package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
  305. package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
  306. package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
  307. package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
  308. package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
  309. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
  310. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
  311. package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -334
  312. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
  313. package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -123
  314. package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
  315. package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -160
  316. package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
  317. package/dist/adapters/drizzle/join-column-utils.js +0 -28
  318. package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
  319. package/dist/adapters/drizzle/shared.d.ts.map +0 -1
  320. package/dist/adapters/drizzle/shared.js +0 -35
  321. package/dist/adapters/drizzle/shared.js.map +0 -1
  322. package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
  323. package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
  324. package/dist/adapters/kysely/kysely-query-builder.js +0 -321
  325. package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
  326. package/dist/adapters/kysely/kysely-query-compiler.js +0 -67
  327. package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
  328. package/dist/adapters/kysely/kysely-query.d.ts +0 -23
  329. package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
  330. package/dist/adapters/kysely/kysely-query.js +0 -230
  331. package/dist/adapters/kysely/kysely-query.js.map +0 -1
  332. package/dist/adapters/kysely/kysely-shared.d.ts +0 -14
  333. package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
  334. package/dist/adapters/kysely/kysely-shared.js +0 -33
  335. package/dist/adapters/kysely/kysely-shared.js.map +0 -1
  336. package/dist/adapters/kysely/kysely-uow-compiler.js +0 -193
  337. package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
  338. package/dist/adapters/kysely/kysely-uow-executor.js +0 -93
  339. package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
  340. package/dist/adapters/kysely/migration/execute-base.js +0 -128
  341. package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
  342. package/dist/adapters/kysely/migration/execute-factory.js +0 -34
  343. package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
  344. package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
  345. package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
  346. package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
  347. package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
  348. package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
  349. package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
  350. package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
  351. package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
  352. package/dist/adapters/kysely/migration/execute.js +0 -34
  353. package/dist/adapters/kysely/migration/execute.js.map +0 -1
  354. package/dist/migration-engine/create.d.ts +0 -37
  355. package/dist/migration-engine/create.d.ts.map +0 -1
  356. package/dist/migration-engine/create.js +0 -58
  357. package/dist/migration-engine/create.js.map +0 -1
  358. package/dist/migration-engine/shared.d.ts +0 -112
  359. package/dist/migration-engine/shared.d.ts.map +0 -1
  360. package/dist/node_modules/.pnpm/rou3@0.7.8/node_modules/rou3/dist/index.js.map +0 -1
  361. package/dist/query/execute-unit-of-work.d.ts.map +0 -1
  362. package/dist/query/execute-unit-of-work.js.map +0 -1
  363. package/dist/query/query.d.ts.map +0 -1
  364. package/dist/query/result-transform.js +0 -170
  365. package/dist/query/result-transform.js.map +0 -1
  366. package/dist/query/retry-policy.d.ts.map +0 -1
  367. package/dist/query/retry-policy.js.map +0 -1
  368. package/dist/query/unit-of-work.d.ts.map +0 -1
  369. package/dist/query/unit-of-work.js.map +0 -1
  370. package/dist/schema/serialize.js +0 -111
  371. package/dist/schema/serialize.js.map +0 -1
  372. package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -122
  373. package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
  374. package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
  375. package/src/adapters/drizzle/drizzle-uow-compiler-mysql.test.ts +0 -1442
  376. package/src/adapters/drizzle/drizzle-uow-compiler-sqlite.test.ts +0 -1414
  377. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1400
  378. package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -677
  379. package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -228
  380. package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -309
  381. package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
  382. package/src/adapters/drizzle/join-column-utils.ts +0 -39
  383. package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
  384. package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
  385. package/src/adapters/kysely/kysely-query-builder.ts +0 -666
  386. package/src/adapters/kysely/kysely-query-compiler.ts +0 -127
  387. package/src/adapters/kysely/kysely-query.test.ts +0 -498
  388. package/src/adapters/kysely/kysely-query.ts +0 -399
  389. package/src/adapters/kysely/kysely-shared.ts +0 -57
  390. package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -986
  391. package/src/adapters/kysely/kysely-uow-compiler.ts +0 -350
  392. package/src/adapters/kysely/kysely-uow-executor.ts +0 -164
  393. package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -794
  394. package/src/adapters/kysely/migration/execute-base.ts +0 -256
  395. package/src/adapters/kysely/migration/execute-factory.ts +0 -53
  396. package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
  397. package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
  398. package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
  399. package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
  400. package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
  401. package/src/adapters/kysely/migration/execute.ts +0 -50
  402. package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
  403. package/src/query/result-transform.ts +0 -274
  404. package/src/schema/serialize.ts +0 -407
  405. /package/dist/query/{query.js → simple-query-interface.js} +0 -0
  406. /package/src/query/{retry-policy.test.ts → unit-of-work/retry-policy.test.ts} +0 -0
  407. /package/src/query/{retry-policy.ts → unit-of-work/retry-policy.ts} +0 -0
@@ -1,234 +0,0 @@
1
- import { sql } from "kysely";
2
- import {
3
- type ColumnOperation,
4
- isUpdated,
5
- type MigrationOperation,
6
- } from "../../../migration-engine/shared";
7
- import type { TableNameMapper } from "../kysely-shared";
8
- import {
9
- BaseMigrationExecutor,
10
- createUniqueIndex,
11
- dropUniqueIndex,
12
- type ExecuteNode,
13
- getForeignKeyAction,
14
- } from "./execute-base";
15
-
16
- const errors = {
17
- IdColumnUpdate:
18
- "ID columns cannot be updated. Not every database supports updating primary keys and often requires workarounds.",
19
- } as const;
20
-
21
- /**
22
- * PostgreSQL/CockroachDB-specific migration executor.
23
- * Uses explicit USING clauses for type conversion.
24
- */
25
- export class PostgresMigrationExecutor extends BaseMigrationExecutor {
26
- executeOperation(
27
- operation: MigrationOperation,
28
- mapper?: TableNameMapper,
29
- ): ExecuteNode | ExecuteNode[] {
30
- switch (operation.type) {
31
- case "create-table":
32
- return this.createTable(operation, mapper);
33
- case "rename-table":
34
- return this.renameTable(operation, mapper);
35
- case "alter-table":
36
- return this.alterTable(operation, mapper);
37
- case "drop-table":
38
- return this.dropTable(operation, mapper);
39
- case "add-foreign-key":
40
- return this.addForeignKey(operation, mapper);
41
- case "drop-foreign-key":
42
- return this.dropForeignKey(operation, mapper);
43
- case "add-index":
44
- return this.addIndex(operation, mapper);
45
- case "drop-index":
46
- return this.dropIndex(operation, mapper);
47
- case "custom":
48
- return this.handleCustomOperation(operation);
49
- }
50
- }
51
-
52
- private createTable(
53
- operation: Extract<MigrationOperation, { type: "create-table" }>,
54
- mapper?: TableNameMapper,
55
- ): ExecuteNode {
56
- const tableName = this.getTableName(operation.name, mapper);
57
- let builder = this.db.schema.createTable(tableName);
58
-
59
- // Add columns
60
- for (const columnInfo of operation.columns) {
61
- builder = builder.addColumn(
62
- columnInfo.name,
63
- sql.raw(this.getDBType(columnInfo)),
64
- this.getColumnBuilderCallback(columnInfo),
65
- );
66
- }
67
-
68
- return builder;
69
- }
70
-
71
- private renameTable(
72
- operation: Extract<MigrationOperation, { type: "rename-table" }>,
73
- mapper?: TableNameMapper,
74
- ): ExecuteNode {
75
- return this.db.schema
76
- .alterTable(this.getTableName(operation.from, mapper))
77
- .renameTo(this.getTableName(operation.to, mapper));
78
- }
79
-
80
- private alterTable(
81
- operation: Extract<MigrationOperation, { type: "alter-table" }>,
82
- mapper?: TableNameMapper,
83
- ): ExecuteNode[] {
84
- const results: ExecuteNode[] = [];
85
- const tableName = this.getTableName(operation.name, mapper);
86
-
87
- for (const columnOp of operation.value) {
88
- results.push(...this.executeColumnOperation(tableName, columnOp));
89
- }
90
-
91
- return results;
92
- }
93
-
94
- private executeColumnOperation(tableName: string, operation: ColumnOperation): ExecuteNode[] {
95
- const next = () => this.db.schema.alterTable(tableName);
96
- const results: ExecuteNode[] = [];
97
-
98
- switch (operation.type) {
99
- case "rename-column":
100
- results.push(next().renameColumn(operation.from, operation.to));
101
- return results;
102
-
103
- case "drop-column":
104
- results.push(next().dropColumn(operation.name));
105
- return results;
106
-
107
- case "create-column": {
108
- const col = operation.value;
109
- results.push(
110
- next().addColumn(
111
- col.name,
112
- sql.raw(this.getDBType(col)),
113
- this.getColumnBuilderCallback(col),
114
- ),
115
- );
116
- return results;
117
- }
118
-
119
- case "update-column": {
120
- const col = operation.value;
121
-
122
- if (col.role === "external-id" || col.role === "internal-id") {
123
- throw new Error(errors.IdColumnUpdate);
124
- }
125
-
126
- if (!isUpdated(operation)) {
127
- return results;
128
- }
129
-
130
- // PostgreSQL/CockroachDB: Use explicit USING clause for type conversion
131
- if (operation.updateDataType) {
132
- const dbType = sql.raw(this.getDBType(col));
133
- results.push(
134
- this.rawToNode(
135
- sql`ALTER TABLE ${sql.ref(tableName)} ALTER COLUMN ${sql.ref(operation.name)} TYPE ${dbType} USING (${sql.ref(operation.name)}::${dbType})`,
136
- ),
137
- );
138
- }
139
-
140
- if (operation.updateNullable) {
141
- results.push(
142
- next().alterColumn(operation.name, (build) =>
143
- col.isNullable ? build.dropNotNull() : build.setNotNull(),
144
- ),
145
- );
146
- }
147
-
148
- if (operation.updateDefault) {
149
- const defaultValue = this.defaultValueToDB(col);
150
- results.push(
151
- next().alterColumn(operation.name, (build) => {
152
- if (!defaultValue) {
153
- return build.dropDefault();
154
- }
155
- return build.setDefault(defaultValue);
156
- }),
157
- );
158
- }
159
-
160
- return results;
161
- }
162
- }
163
- }
164
-
165
- private dropTable(
166
- operation: Extract<MigrationOperation, { type: "drop-table" }>,
167
- mapper?: TableNameMapper,
168
- ): ExecuteNode {
169
- return this.db.schema.dropTable(this.getTableName(operation.name, mapper));
170
- }
171
-
172
- private addForeignKey(
173
- operation: Extract<MigrationOperation, { type: "add-foreign-key" }>,
174
- mapper?: TableNameMapper,
175
- ): ExecuteNode {
176
- const { table, value } = operation;
177
- const action = getForeignKeyAction(this.provider);
178
-
179
- return this.db.schema
180
- .alterTable(this.getTableName(table, mapper))
181
- .addForeignKeyConstraint(
182
- value.name,
183
- value.columns,
184
- this.getTableName(value.referencedTable, mapper),
185
- value.referencedColumns,
186
- (b) => b.onUpdate(action).onDelete(action),
187
- );
188
- }
189
-
190
- private dropForeignKey(
191
- operation: Extract<MigrationOperation, { type: "drop-foreign-key" }>,
192
- mapper?: TableNameMapper,
193
- ): ExecuteNode {
194
- const { table, name } = operation;
195
- return this.db.schema
196
- .alterTable(this.getTableName(table, mapper))
197
- .dropConstraint(name)
198
- .ifExists();
199
- }
200
-
201
- private addIndex(
202
- operation: Extract<MigrationOperation, { type: "add-index" }>,
203
- mapper?: TableNameMapper,
204
- ): ExecuteNode {
205
- const tableName = this.getTableName(operation.table, mapper);
206
-
207
- if (operation.unique) {
208
- return createUniqueIndex(
209
- this.db,
210
- operation.name,
211
- tableName,
212
- operation.columns,
213
- this.provider,
214
- );
215
- }
216
-
217
- return this.db.schema.createIndex(operation.name).on(tableName).columns(operation.columns);
218
- }
219
-
220
- private dropIndex(
221
- operation: Extract<MigrationOperation, { type: "drop-index" }>,
222
- mapper?: TableNameMapper,
223
- ): ExecuteNode {
224
- const tableName = this.getTableName(operation.table, mapper);
225
- return dropUniqueIndex(this.db, operation.name, tableName, this.provider);
226
- }
227
-
228
- private handleCustomOperation(
229
- operation: Extract<MigrationOperation, { type: "custom" }>,
230
- ): ExecuteNode {
231
- const statement = sql.raw(operation["sql"] as string);
232
- return this.rawToNode(statement);
233
- }
234
- }
@@ -1,247 +0,0 @@
1
- import { sql } from "kysely";
2
- import type {
3
- ColumnOperation,
4
- MigrationOperation,
5
- SqliteCreateTableMetadata,
6
- } from "../../../migration-engine/shared";
7
- import type { TableNameMapper } from "../kysely-shared";
8
- import {
9
- BaseMigrationExecutor,
10
- createUniqueIndex,
11
- dropUniqueIndex,
12
- type ExecuteNode,
13
- } from "./execute-base";
14
-
15
- const errors = {
16
- IdColumnUpdate:
17
- "ID columns cannot be updated. Not every database supports updating primary keys and often requires workarounds.",
18
- SQLiteUpdateColumn: "SQLite doesn't support updating columns. Recreate the table instead.",
19
- SQLiteUpdateForeignKeys:
20
- "SQLite doesn't support modifying foreign keys directly. Use `recreate-table` instead.",
21
- } as const;
22
-
23
- /**
24
- * SQLite-specific migration executor.
25
- * Handles SQLite's limitations around foreign keys and column updates.
26
- */
27
- export class SqliteMigrationExecutor extends BaseMigrationExecutor<SqliteCreateTableMetadata> {
28
- /**
29
- * SQLite preprocessing: merge add-foreign-key operations into create-table operations
30
- * when both exist in the same batch.
31
- *
32
- * SQLite requires foreign keys to be defined at table creation time. This preprocessing
33
- * step identifies create-table + add-foreign-key pairs and merges them.
34
- */
35
- preprocessOperations(
36
- operations: MigrationOperation[],
37
- ): MigrationOperation<SqliteCreateTableMetadata>[] {
38
- const result: MigrationOperation<SqliteCreateTableMetadata>[] = [];
39
- const createTableIndices = new Map<string, number>(); // table name -> index in result
40
- const foreignKeysByTable = new Map<string, (typeof operations)[number][]>();
41
-
42
- // First pass: identify create-table operations and collect foreign keys
43
- for (const op of operations) {
44
- if (op.type === "create-table") {
45
- createTableIndices.set(op.name, result.length);
46
- result.push(op);
47
- } else if (op.type === "add-foreign-key") {
48
- if (!foreignKeysByTable.has(op.table)) {
49
- foreignKeysByTable.set(op.table, []);
50
- }
51
- foreignKeysByTable.get(op.table)!.push(op);
52
- } else {
53
- result.push(op);
54
- }
55
- }
56
-
57
- // Second pass: attach foreign keys as metadata to create-table ops
58
- for (const [tableName, fkOps] of foreignKeysByTable.entries()) {
59
- const createTableIdx = createTableIndices.get(tableName);
60
-
61
- if (createTableIdx !== undefined) {
62
- // Table is being created in this batch - attach FKs as metadata
63
- const createOp = result[createTableIdx];
64
- if (createOp.type === "create-table") {
65
- result[createTableIdx] = {
66
- ...createOp,
67
- metadata: {
68
- ...createOp.metadata,
69
- inlineForeignKeys: fkOps.map((fkOp) => {
70
- if (fkOp.type === "add-foreign-key") {
71
- return fkOp.value;
72
- }
73
- throw new Error("Unexpected operation type");
74
- }),
75
- },
76
- };
77
- }
78
- } else {
79
- // Table already exists - keep add-foreign-key operations (will throw error during execution)
80
- result.push(...fkOps);
81
- }
82
- }
83
-
84
- return result;
85
- }
86
-
87
- executeOperation(
88
- operation: MigrationOperation<SqliteCreateTableMetadata>,
89
- mapper?: TableNameMapper,
90
- ): ExecuteNode | ExecuteNode[] {
91
- switch (operation.type) {
92
- case "create-table":
93
- return this.createTable(operation, mapper);
94
- case "rename-table":
95
- return this.renameTable(operation, mapper);
96
- case "alter-table":
97
- return this.alterTable(operation, mapper);
98
- case "drop-table":
99
- return this.dropTable(operation, mapper);
100
- case "add-foreign-key":
101
- throw new Error(errors.SQLiteUpdateForeignKeys);
102
- case "drop-foreign-key":
103
- throw new Error(errors.SQLiteUpdateForeignKeys);
104
- case "add-index":
105
- return this.addIndex(operation, mapper);
106
- case "drop-index":
107
- return this.dropIndex(operation, mapper);
108
- case "custom":
109
- return this.handleCustomOperation(operation);
110
- }
111
- }
112
-
113
- private createTable(
114
- operation: Extract<MigrationOperation<SqliteCreateTableMetadata>, { type: "create-table" }>,
115
- mapper?: TableNameMapper,
116
- ): ExecuteNode {
117
- const tableName = this.getTableName(operation.name, mapper);
118
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
- let builder: any = this.db.schema.createTable(tableName);
120
-
121
- // Add columns
122
- for (const columnInfo of operation.columns) {
123
- builder = builder.addColumn(
124
- columnInfo.name,
125
- sql.raw(this.getDBType(columnInfo)),
126
- this.getColumnBuilderCallback(columnInfo),
127
- );
128
- }
129
-
130
- // Add inline foreign keys from metadata (SQLite-specific)
131
- const inlineForeignKeys = operation.metadata?.inlineForeignKeys;
132
- if (inlineForeignKeys) {
133
- for (const fk of inlineForeignKeys) {
134
- builder = builder.addForeignKeyConstraint(
135
- fk.name,
136
- fk.columns,
137
- this.getTableName(fk.referencedTable, mapper),
138
- fk.referencedColumns,
139
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
140
- (cb: any) => cb.onUpdate("restrict").onDelete("restrict"),
141
- );
142
- }
143
- }
144
-
145
- return builder;
146
- }
147
-
148
- private renameTable(
149
- operation: Extract<MigrationOperation, { type: "rename-table" }>,
150
- mapper?: TableNameMapper,
151
- ): ExecuteNode {
152
- return this.db.schema
153
- .alterTable(this.getTableName(operation.from, mapper))
154
- .renameTo(this.getTableName(operation.to, mapper));
155
- }
156
-
157
- private alterTable(
158
- operation: Extract<MigrationOperation, { type: "alter-table" }>,
159
- mapper?: TableNameMapper,
160
- ): ExecuteNode[] {
161
- const results: ExecuteNode[] = [];
162
- const tableName = this.getTableName(operation.name, mapper);
163
-
164
- for (const columnOp of operation.value) {
165
- results.push(...this.executeColumnOperation(tableName, columnOp));
166
- }
167
-
168
- return results;
169
- }
170
-
171
- private executeColumnOperation(tableName: string, operation: ColumnOperation): ExecuteNode[] {
172
- const next = () => this.db.schema.alterTable(tableName);
173
- const results: ExecuteNode[] = [];
174
-
175
- switch (operation.type) {
176
- case "rename-column":
177
- results.push(next().renameColumn(operation.from, operation.to));
178
- return results;
179
-
180
- case "drop-column":
181
- results.push(next().dropColumn(operation.name));
182
- return results;
183
-
184
- case "create-column": {
185
- const col = operation.value;
186
- results.push(
187
- next().addColumn(
188
- col.name,
189
- sql.raw(this.getDBType(col)),
190
- this.getColumnBuilderCallback(col),
191
- ),
192
- );
193
- return results;
194
- }
195
-
196
- case "update-column": {
197
- const col = operation.value;
198
- // Check for ID columns first to provide a more specific error message
199
- if (col.role === "external-id" || col.role === "internal-id") {
200
- throw new Error(errors.IdColumnUpdate);
201
- }
202
- throw new Error(errors.SQLiteUpdateColumn);
203
- }
204
- }
205
- }
206
-
207
- private dropTable(
208
- operation: Extract<MigrationOperation, { type: "drop-table" }>,
209
- mapper?: TableNameMapper,
210
- ): ExecuteNode {
211
- return this.db.schema.dropTable(this.getTableName(operation.name, mapper));
212
- }
213
-
214
- private addIndex(
215
- operation: Extract<MigrationOperation, { type: "add-index" }>,
216
- mapper?: TableNameMapper,
217
- ): ExecuteNode {
218
- const tableName = this.getTableName(operation.table, mapper);
219
-
220
- if (operation.unique) {
221
- return createUniqueIndex(
222
- this.db,
223
- operation.name,
224
- tableName,
225
- operation.columns,
226
- this.provider,
227
- );
228
- }
229
-
230
- return this.db.schema.createIndex(operation.name).on(tableName).columns(operation.columns);
231
- }
232
-
233
- private dropIndex(
234
- operation: Extract<MigrationOperation, { type: "drop-index" }>,
235
- mapper?: TableNameMapper,
236
- ): ExecuteNode {
237
- const tableName = this.getTableName(operation.table, mapper);
238
- return dropUniqueIndex(this.db, operation.name, tableName, this.provider);
239
- }
240
-
241
- private handleCustomOperation(
242
- operation: Extract<MigrationOperation, { type: "custom" }>,
243
- ): ExecuteNode {
244
- const statement = sql.raw(operation["sql"] as string);
245
- return this.rawToNode(statement);
246
- }
247
- }
@@ -1,50 +0,0 @@
1
- import type { CustomOperation, MigrationOperation } from "../../../migration-engine/shared";
2
- import type { KyselyConfig } from "../kysely-adapter";
3
- import type { TableNameMapper } from "../kysely-shared";
4
- import type { ExecuteNode } from "./execute-base";
5
- import { createMigrationExecutor } from "./execute-factory";
6
-
7
- export type { ExecuteNode };
8
-
9
- /**
10
- * Execute a single migration operation using the appropriate provider-specific executor.
11
- *
12
- * @param operation - The migration operation to execute
13
- * @param config - Kysely configuration with database instance and provider
14
- * @param onCustomNode - Handler for custom operations
15
- * @param mapper - Optional table name mapper for namespacing
16
- * @returns ExecuteNode(s) that can be compiled to SQL or executed
17
- */
18
- export function execute(
19
- operation: MigrationOperation,
20
- config: KyselyConfig,
21
- onCustomNode: (op: CustomOperation) => ExecuteNode | ExecuteNode[],
22
- mapper?: TableNameMapper,
23
- ): ExecuteNode | ExecuteNode[] {
24
- // For custom operations, use the provided handler
25
- if (operation.type === "custom") {
26
- return onCustomNode(operation);
27
- }
28
-
29
- const executor = createMigrationExecutor(config);
30
- return executor.executeOperation(operation, mapper);
31
- }
32
-
33
- /**
34
- * Preprocess a batch of migration operations.
35
- * This allows provider-specific transformations before execution.
36
- *
37
- * For example, SQLite merges add-foreign-key operations into create-table operations
38
- * since foreign keys must be defined at table creation time.
39
- *
40
- * @param operations - The migration operations to preprocess
41
- * @param config - Kysely configuration with database instance and provider
42
- * @returns Preprocessed migration operations
43
- */
44
- export function preprocessOperations(
45
- operations: MigrationOperation[],
46
- config: KyselyConfig,
47
- ): MigrationOperation[] {
48
- const executor = createMigrationExecutor(config);
49
- return executor.preprocessOperations(operations);
50
- }