@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,399 +0,0 @@
1
- import type { AbstractQuery, TableToUpdateValues } from "../../query/query";
2
- import type { AnySchema, AnyTable } from "../../schema/create";
3
- import type {
4
- CompiledMutation,
5
- UOWDecoder,
6
- UOWExecutor,
7
- ValidIndexName,
8
- } from "../../query/unit-of-work";
9
- import { decodeResult } from "../../query/result-transform";
10
- import { createKyselyUOWCompiler } from "./kysely-uow-compiler";
11
- import { executeKyselyRetrievalPhase, executeKyselyMutationPhase } from "./kysely-uow-executor";
12
- import { UnitOfWork } from "../../query/unit-of-work";
13
- import type { CompiledQuery, Kysely } from "kysely";
14
- import type { TableNameMapper } from "./kysely-shared";
15
- import type { ConnectionPool } from "../../shared/connection-pool";
16
- import type { SQLProvider } from "../../shared/providers";
17
- import { createCursorFromRecord, Cursor, type CursorResult } from "../../query/cursor";
18
-
19
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
- type KyselyAny = Kysely<any>;
21
-
22
- /**
23
- * Configuration options for creating a Kysely Unit of Work
24
- */
25
- export interface KyselyUOWConfig {
26
- /**
27
- * Optional callback to receive compiled SQL queries for logging/debugging
28
- * This callback is invoked for each query as it's compiled
29
- */
30
- onQuery?: (query: CompiledQuery) => void;
31
- /**
32
- * If true, the query will not be executed and the query will be returned. Not respected for UOWs
33
- * since those have to be manually executed.
34
- */
35
- dryRun?: boolean;
36
- }
37
-
38
- /**
39
- * Special builder for updateMany operations that captures configuration
40
- */
41
- class UpdateManySpecialBuilder<TTable extends AnyTable> {
42
- #indexName?: string;
43
- #condition?: unknown;
44
- #setValues?: TableToUpdateValues<TTable>;
45
-
46
- whereIndex<TIndexName extends ValidIndexName<TTable>>(
47
- indexName: TIndexName,
48
- condition?: unknown,
49
- ): this {
50
- this.#indexName = indexName as string;
51
- this.#condition = condition;
52
- return this;
53
- }
54
-
55
- set(values: TableToUpdateValues<TTable>): this {
56
- this.#setValues = values;
57
- return this;
58
- }
59
-
60
- getConfig() {
61
- return {
62
- indexName: this.#indexName,
63
- condition: this.#condition,
64
- setValues: this.#setValues,
65
- };
66
- }
67
- }
68
-
69
- /**
70
- * Creates a Kysely-based query engine for the given schema.
71
- *
72
- * This is the main entry point for creating a database query interface using Kysely.
73
- * It uses a compiler-based architecture where queries are compiled to SQL and then executed,
74
- * enabling features like SQL snapshot testing.
75
- *
76
- * @param schema - The database schema definition
77
- * @param pool - Connection pool for acquiring database connections
78
- * @param provider - SQL provider (postgresql, mysql, sqlite, etc.)
79
- * @param mapper - Optional table name mapper for namespace prefixing
80
- * @param uowConfig - Optional UOW configuration
81
- * @param schemaNamespaceMap - Optional WeakMap for schema-to-namespace lookups
82
- * @returns An AbstractQuery instance for performing database operations
83
- *
84
- * @example
85
- * ```ts
86
- * const pool = createSimpleConnectionPool(kysely);
87
- * const queryEngine = fromKysely(mySchema, pool, 'postgresql');
88
- *
89
- * const users = await queryEngine.findMany('users', {
90
- * where: (b) => b('age', '>', 18),
91
- * orderBy: [['name', 'asc']]
92
- * });
93
- * ```
94
- */
95
- export function fromKysely<T extends AnySchema>(
96
- schema: T,
97
- pool: ConnectionPool<KyselyAny>,
98
- provider: SQLProvider,
99
- mapper?: TableNameMapper,
100
- uowConfig?: KyselyUOWConfig,
101
- schemaNamespaceMap?: WeakMap<AnySchema, string>,
102
- ): AbstractQuery<T, KyselyUOWConfig> {
103
- function createUOW(opts: { name?: string; config?: KyselyUOWConfig }) {
104
- const uowCompiler = createKyselyUOWCompiler(provider, mapper);
105
-
106
- const executor: UOWExecutor<CompiledQuery, unknown> = {
107
- async executeRetrievalPhase(retrievalBatch: CompiledQuery[]) {
108
- // In dryRun mode, skip execution and return empty results
109
- if (opts.config?.dryRun) {
110
- return retrievalBatch.map(() => []);
111
- }
112
-
113
- const conn = await pool.connect();
114
- try {
115
- return await executeKyselyRetrievalPhase(conn.db, retrievalBatch);
116
- } finally {
117
- await conn.release();
118
- }
119
- },
120
- async executeMutationPhase(mutationBatch: CompiledMutation<CompiledQuery>[]) {
121
- // In dryRun mode, skip execution and return success with mock internal IDs
122
- if (opts.config?.dryRun) {
123
- return {
124
- success: true,
125
- createdInternalIds: mutationBatch.map(() => null),
126
- };
127
- }
128
-
129
- const conn = await pool.connect();
130
- try {
131
- return await executeKyselyMutationPhase(conn.db, mutationBatch);
132
- } finally {
133
- await conn.release();
134
- }
135
- },
136
- };
137
-
138
- // Create a decoder function to transform raw results into application format
139
- const decoder: UOWDecoder<unknown> = (rawResults, ops) => {
140
- if (rawResults.length !== ops.length) {
141
- throw new Error("rawResults and ops must have the same length");
142
- }
143
-
144
- return rawResults.map((rows, index) => {
145
- const op = ops[index];
146
- if (!op) {
147
- throw new Error("op must be defined");
148
- }
149
-
150
- // Handle count operations differently - return the count number directly
151
- if (op.type === "count") {
152
- const rowArray = rows as Record<string, unknown>[];
153
- const firstRow = rowArray[0];
154
- if (!firstRow) {
155
- return 0;
156
- }
157
- const count = Number(firstRow["count"]);
158
- if (Number.isNaN(count)) {
159
- throw new Error(`Unexpected result for count, received: ${count}`);
160
- }
161
- return count;
162
- }
163
-
164
- // Each result is an array of rows - decode each row
165
- const rowArray = rows as Record<string, unknown>[];
166
- const decodedRows = rowArray.map((row) => decodeResult(row, op.table, provider));
167
-
168
- // If cursor generation is requested, wrap in CursorResult
169
- if (op.withCursor) {
170
- let cursor: Cursor | undefined;
171
- let hasNextPage = false;
172
- let items = decodedRows;
173
-
174
- // Check if there are more results (we fetched pageSize + 1)
175
- if (op.options.pageSize && decodedRows.length > op.options.pageSize) {
176
- hasNextPage = true;
177
- // Trim to requested pageSize
178
- items = decodedRows.slice(0, op.options.pageSize);
179
-
180
- // Generate cursor from the last item we're returning
181
- if (op.options.orderByIndex) {
182
- const lastItem = items[items.length - 1];
183
- const indexName = op.options.orderByIndex.indexName;
184
-
185
- // Get index columns
186
- let indexColumns;
187
- if (indexName === "_primary") {
188
- indexColumns = [op.table.getIdColumn()];
189
- } else {
190
- const index = op.table.indexes[indexName];
191
- if (index) {
192
- indexColumns = index.columns;
193
- }
194
- }
195
-
196
- if (indexColumns && lastItem) {
197
- cursor = createCursorFromRecord(lastItem as Record<string, unknown>, indexColumns, {
198
- indexName: op.options.orderByIndex.indexName,
199
- orderDirection: op.options.orderByIndex.direction,
200
- pageSize: op.options.pageSize,
201
- });
202
- }
203
- }
204
- }
205
-
206
- const result: CursorResult<unknown> = {
207
- items,
208
- cursor,
209
- hasNextPage,
210
- };
211
- return result;
212
- }
213
-
214
- return decodedRows;
215
- });
216
- };
217
-
218
- const { onQuery, ...restUowConfig } = opts.config ?? {};
219
-
220
- return new UnitOfWork(
221
- uowCompiler,
222
- executor,
223
- decoder,
224
- opts.name,
225
- {
226
- ...restUowConfig,
227
- onQuery: (query) => {
228
- // CompiledMutation has { query: CompiledQuery, expectedAffectedRows: number | null }
229
- // CompiledQuery has { query: QueryAST, sql: string, parameters: unknown[] }
230
- // Check for expectedAffectedRows to distinguish CompiledMutation from CompiledQuery
231
- const actualQuery =
232
- query && typeof query === "object" && "expectedAffectedRows" in query
233
- ? (query as CompiledMutation<CompiledQuery>).query
234
- : (query as CompiledQuery);
235
-
236
- opts.config?.onQuery?.(actualQuery);
237
- },
238
- },
239
- schemaNamespaceMap,
240
- ).forSchema(schema);
241
- }
242
-
243
- return {
244
- async find(tableName, builderFn) {
245
- const uow = createUOW({ config: uowConfig });
246
- // Safe: builderFn returns a FindBuilder (or void), which matches UnitOfWork signature
247
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
248
- uow.find(tableName, builderFn as any);
249
- // executeRetrieve returns an array of results (one per find operation)
250
- // Since we only have one find, unwrap the first result
251
- const [result]: unknown[][] = await uow.executeRetrieve();
252
- return result ?? [];
253
- },
254
-
255
- async findWithCursor(tableName, builderFn) {
256
- // Safe: builderFn returns a FindBuilder, which matches UnitOfWork signature
257
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
258
- const uow = createUOW({ config: uowConfig }).findWithCursor(tableName, builderFn as any);
259
- // executeRetrieve returns an array of results (one per find operation)
260
- // Since we only have one findWithCursor, unwrap the first result
261
- const [result] = await uow.executeRetrieve();
262
- return result as CursorResult<unknown>;
263
- },
264
-
265
- async findFirst(tableName, builderFn) {
266
- const uow = createUOW({ config: uowConfig });
267
- if (builderFn) {
268
- uow.find(tableName, (b) => {
269
- builderFn(b);
270
- return b.pageSize(1);
271
- });
272
- } else {
273
- uow.find(tableName, (b) => b.whereIndex("primary").pageSize(1));
274
- }
275
- // executeRetrieve runs an array of `find` operation results, which each return an array of rows
276
- const [result]: unknown[][] = await uow.executeRetrieve();
277
- return result?.[0] ?? null;
278
- },
279
-
280
- async create(tableName, values) {
281
- const uow = createUOW({ config: uowConfig });
282
- uow.create(tableName, values);
283
- const { success } = await uow.executeMutations();
284
- if (!success) {
285
- throw new Error("Failed to create record");
286
- }
287
-
288
- const createdIds = uow.getCreatedIds();
289
- const createdId = createdIds[0];
290
- if (!createdId) {
291
- throw new Error("Failed to get created ID");
292
- }
293
- return createdId;
294
- },
295
-
296
- async createMany(tableName, valuesArray) {
297
- const uow = createUOW({ config: uowConfig });
298
- for (const values of valuesArray) {
299
- uow.create(tableName, values);
300
- }
301
- const { success } = await uow.executeMutations();
302
- if (!success) {
303
- throw new Error("Failed to create records");
304
- }
305
-
306
- return uow.getCreatedIds();
307
- },
308
-
309
- async update(tableName, id, builderFn) {
310
- const uow = createUOW({ config: uowConfig });
311
- uow.update(tableName, id, builderFn);
312
- const { success } = await uow.executeMutations();
313
- if (!success) {
314
- throw new Error("Failed to update record (version conflict or record not found)");
315
- }
316
- },
317
-
318
- async updateMany(tableName, builderFn) {
319
- const table = schema.tables[tableName];
320
- if (!table) {
321
- throw new Error(`Table ${tableName} not found in schema`);
322
- }
323
-
324
- const specialBuilder = new UpdateManySpecialBuilder<typeof table>();
325
- builderFn(specialBuilder);
326
-
327
- const { indexName, condition, setValues } = specialBuilder.getConfig();
328
-
329
- if (!indexName) {
330
- throw new Error("whereIndex() must be called in updateMany");
331
- }
332
- if (!setValues) {
333
- throw new Error("set() must be called in updateMany");
334
- }
335
-
336
- const findUow = createUOW({ config: uowConfig });
337
- findUow.find(tableName, (b) => {
338
- if (condition) {
339
- // Safe: condition is captured from whereIndex call with proper typing
340
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
341
- return b.whereIndex(indexName as ValidIndexName<typeof table>, condition as any);
342
- }
343
- return b.whereIndex(indexName as ValidIndexName<typeof table>);
344
- });
345
- const [records]: unknown[][] = await findUow.executeRetrieve();
346
-
347
- if (!records || records.length === 0) {
348
- return;
349
- }
350
-
351
- const updateUow = createUOW({ config: uowConfig });
352
- for (const record of records as Array<{ id: unknown }>) {
353
- updateUow.update(tableName, record.id as string, (b) => b.set(setValues));
354
- }
355
- const { success } = await updateUow.executeMutations();
356
- if (!success) {
357
- throw new Error("Failed to update records (version conflict)");
358
- }
359
- },
360
-
361
- async delete(tableName, id, builderFn) {
362
- const uow = createUOW({ config: uowConfig });
363
- uow.delete(tableName, id, builderFn);
364
- const { success } = await uow.executeMutations();
365
- if (!success) {
366
- throw new Error("Failed to delete record (version conflict or record not found)");
367
- }
368
- },
369
-
370
- async deleteMany(tableName, builderFn) {
371
- const findUow = createUOW({ config: uowConfig });
372
- findUow.find(tableName, builderFn);
373
- const [records]: unknown[][] = await findUow.executeRetrieve();
374
-
375
- if (!records || records.length === 0) {
376
- return;
377
- }
378
-
379
- const deleteUow = createUOW({ config: uowConfig });
380
- for (const record of records as Array<{ id: unknown }>) {
381
- deleteUow.delete(tableName, record.id as string);
382
- }
383
- const { success } = await deleteUow.executeMutations();
384
- if (!success) {
385
- throw new Error("Failed to delete records (version conflict)");
386
- }
387
- },
388
-
389
- createUnitOfWork(name, nestedUowConfig) {
390
- return createUOW({
391
- name,
392
- config: {
393
- ...uowConfig,
394
- ...nestedUowConfig,
395
- },
396
- });
397
- },
398
- } as AbstractQuery<T, KyselyUOWConfig>;
399
- }
@@ -1,57 +0,0 @@
1
- import { Kysely } from "kysely";
2
- import type { SQLProvider } from "../../shared/providers";
3
- import { MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
4
-
5
- /**
6
- * Maps logical table names (used by fragment authors) to physical table names (with namespace suffix)
7
- */
8
- export interface TableNameMapper {
9
- toPhysical(logicalName: string): string;
10
- toLogical(physicalName: string): string;
11
- }
12
-
13
- /**
14
- * Creates a table name mapper for a given namespace.
15
- * Physical names have format: {logicalName}_{namespace}
16
- */
17
- export function createTableNameMapper(namespace: string): TableNameMapper {
18
- return {
19
- toPhysical: (logicalName: string) => `${logicalName}_${namespace}`,
20
- toLogical: (physicalName: string) => {
21
- if (physicalName.endsWith(`_${namespace}`)) {
22
- return physicalName.slice(0, -(namespace.length + 1));
23
- }
24
- return physicalName;
25
- },
26
- };
27
- }
28
-
29
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- type KyselyAny = Kysely<any>;
31
-
32
- /**
33
- * Creates a Kysely instance that can only build queries, not execute them.
34
- */
35
- export function createKysely(provider: SQLProvider): KyselyAny {
36
- // oxlint-disable-next-line no-explicit-any
37
- const fakeObj = {} as any;
38
- switch (provider) {
39
- case "postgresql":
40
- case "cockroachdb":
41
- return new Kysely({
42
- dialect: new PostgresDialect(fakeObj),
43
- });
44
-
45
- case "mysql":
46
- return new Kysely({
47
- dialect: new MysqlDialect(fakeObj),
48
- });
49
-
50
- case "sqlite":
51
- return new Kysely({
52
- dialect: new SqliteDialect(fakeObj),
53
- });
54
- }
55
-
56
- throw new Error(`Unsupported provider: ${provider}`);
57
- }