@fragno-dev/db 0.1.7 → 0.1.9

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 (119) hide show
  1. package/.turbo/turbo-build.log +103 -101
  2. package/CHANGELOG.md +12 -0
  3. package/dist/adapters/drizzle/drizzle-adapter.js +1 -1
  4. package/dist/adapters/drizzle/drizzle-query.d.ts +5 -0
  5. package/dist/adapters/drizzle/drizzle-query.js +40 -16
  6. package/dist/adapters/drizzle/drizzle-query.js.map +1 -1
  7. package/dist/adapters/drizzle/drizzle-uow-compiler.js +14 -24
  8. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +1 -1
  9. package/dist/adapters/drizzle/drizzle-uow-executor.js +3 -3
  10. package/dist/adapters/drizzle/generate.d.ts +24 -0
  11. package/dist/adapters/drizzle/generate.d.ts.map +1 -0
  12. package/dist/adapters/drizzle/generate.js +34 -18
  13. package/dist/adapters/drizzle/generate.js.map +1 -1
  14. package/dist/adapters/drizzle/shared.js +13 -4
  15. package/dist/adapters/drizzle/shared.js.map +1 -1
  16. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js +1 -1
  17. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/alias.js.map +1 -1
  18. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js +1 -1
  19. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/casing.js.map +1 -1
  20. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js +1 -1
  21. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column-builder.js.map +1 -1
  22. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js +1 -1
  23. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/column.js.map +1 -1
  24. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js +1 -1
  25. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/entity.js.map +1 -1
  26. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js +1 -1
  27. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/errors.js.map +1 -1
  28. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js +1 -1
  29. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/common.js.map +1 -1
  30. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js +1 -1
  31. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/columns/enum.js.map +1 -1
  32. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js +1 -1
  33. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/foreign-keys.js.map +1 -1
  34. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js +1 -1
  35. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/unique-constraint.js.map +1 -1
  36. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js +1 -1
  37. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/pg-core/utils/array.js.map +1 -1
  38. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js +1 -1
  39. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-builders/query-builder.js.map +1 -1
  40. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js +1 -1
  41. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/query-promise.js.map +1 -1
  42. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js +1 -1
  43. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/relations.js.map +1 -1
  44. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js +1 -1
  45. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/selection-proxy.js.map +1 -1
  46. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js +1 -1
  47. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/conditions.js.map +1 -1
  48. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js +1 -1
  49. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/expressions/select.js.map +1 -1
  50. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js +1 -1
  51. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/functions/aggregate.js.map +1 -1
  52. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js +1 -1
  53. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sql/sql.js.map +1 -1
  54. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js +1 -1
  55. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/columns/common.js.map +1 -1
  56. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js +1 -1
  57. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/db.js.map +1 -1
  58. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js +1 -1
  59. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/dialect.js.map +1 -1
  60. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js +1 -1
  61. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/foreign-keys.js.map +1 -1
  62. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js +1 -1
  63. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/count.js.map +1 -1
  64. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js +1 -1
  65. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/delete.js.map +1 -1
  66. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js +1 -1
  67. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/insert.js.map +1 -1
  68. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js +1 -1
  69. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query-builder.js.map +1 -1
  70. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js +1 -1
  71. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/query.js.map +1 -1
  72. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js +1 -1
  73. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/raw.js.map +1 -1
  74. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js +1 -1
  75. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/select.js.map +1 -1
  76. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js +1 -1
  77. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/query-builders/update.js.map +1 -1
  78. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js +1 -1
  79. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/table.js.map +1 -1
  80. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js +1 -1
  81. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/unique-constraint.js.map +1 -1
  82. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js +1 -1
  83. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/utils.js.map +1 -1
  84. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js +1 -1
  85. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/sqlite-core/view-base.js.map +1 -1
  86. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js +1 -1
  87. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/subquery.js.map +1 -1
  88. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js +1 -1
  89. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.js.map +1 -1
  90. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/table.utils.js +6 -0
  91. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/table.utils.js.map +1 -1
  92. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing-utils.js +8 -0
  93. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing-utils.js.map +1 -1
  94. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d/node_modules/drizzle-orm/tracing.js +8 -0
  95. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/tracing.js.map +1 -1
  96. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js +1 -1
  97. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/utils.js.map +1 -1
  98. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js +1 -1
  99. package/dist/node_modules/.pnpm/{drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260 → drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_d581c715d15ad795b3728767f4706e8d}/node_modules/drizzle-orm/view-common.js.map +1 -1
  100. package/dist/query/unit-of-work.d.ts +6 -2
  101. package/dist/query/unit-of-work.d.ts.map +1 -1
  102. package/dist/query/unit-of-work.js +19 -3
  103. package/dist/query/unit-of-work.js.map +1 -1
  104. package/package.json +8 -3
  105. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +54 -0
  106. package/src/adapters/drizzle/drizzle-adapter.test.ts +3 -3
  107. package/src/adapters/drizzle/drizzle-query.test.ts +449 -0
  108. package/src/adapters/drizzle/drizzle-query.ts +58 -21
  109. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +222 -0
  110. package/src/adapters/drizzle/drizzle-uow-compiler.ts +23 -15
  111. package/src/adapters/drizzle/generate.test.ts +168 -56
  112. package/src/adapters/drizzle/generate.ts +80 -21
  113. package/src/adapters/drizzle/shared.ts +14 -4
  114. package/src/adapters/drizzle/test-utils.ts +1 -0
  115. package/src/query/unit-of-work.ts +28 -0
  116. package/tsdown.config.ts +1 -0
  117. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/table.utils.js +0 -6
  118. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing-utils.js +0 -8
  119. package/dist/node_modules/.pnpm/drizzle-orm@0.44.7_@electric-sql_pglite@0.3.11_@libsql_client@0.15.15_@types_better-sql_aee8b50e4fe3dba0cf9f533329f36260/node_modules/drizzle-orm/tracing.js +0 -8
@@ -388,6 +388,131 @@ describe("drizzle-uow-compiler", () => {
388
388
  ]);
389
389
  });
390
390
 
391
+ it("should compile create operation with external id string for reference column", () => {
392
+ const uow = createTestUOW();
393
+ // Create a post with userId as just an external id string
394
+ uow.create("posts", {
395
+ title: "Test Post",
396
+ content: "Post content",
397
+ userId: "user_external_id_123",
398
+ viewCount: 5,
399
+ });
400
+
401
+ const compiler = createDrizzleUOWCompiler(testSchema, pool, "postgresql");
402
+ const compiled = uow.compile(compiler);
403
+ const [batch] = compiled.mutationBatch;
404
+ assert(batch);
405
+ expect(batch.expectedAffectedRows).toBeNull();
406
+ expect(batch.query.sql).toMatchInlineSnapshot(
407
+ `"insert into "posts" ("id", "title", "content", "userId", "viewCount", "_internalId", "_version") values ($1, $2, $3, (select "_internalId" from "users" where "id" = $4 limit 1), $5, default, default)"`,
408
+ );
409
+ expect(batch.query.params).toMatchObject([
410
+ expect.any(String), // auto-generated post ID
411
+ "Test Post",
412
+ "Post content",
413
+ "user_external_id_123", // external id string
414
+ 5, // viewCount
415
+ ]);
416
+ });
417
+
418
+ it("should compile create operation with bigint for reference column (no subquery)", () => {
419
+ const uow = createTestUOW();
420
+ // Create a post with userId as a bigint directly (internal ID)
421
+ uow.create("posts", {
422
+ title: "Direct ID Post",
423
+ content: "Content with direct bigint",
424
+ userId: 12345n,
425
+ });
426
+
427
+ const compiler = createDrizzleUOWCompiler(testSchema, pool, "postgresql");
428
+ const compiled = uow.compile(compiler);
429
+ const [batch] = compiled.mutationBatch;
430
+ assert(batch);
431
+ expect(batch.expectedAffectedRows).toBeNull();
432
+ // Should NOT have a subquery when using bigint directly
433
+ expect(batch.query.sql).not.toMatch(/\(select.*from.*users/i);
434
+ expect(batch.query.sql).toMatchInlineSnapshot(
435
+ `"insert into "posts" ("id", "title", "content", "userId", "viewCount", "_internalId", "_version") values ($1, $2, $3, $4, default, default, default)"`,
436
+ );
437
+ expect(batch.query.params).toMatchObject([
438
+ expect.any(String), // auto-generated post ID
439
+ "Direct ID Post",
440
+ "Content with direct bigint",
441
+ 12345n, // bigint internal ID directly
442
+ ]);
443
+ });
444
+
445
+ it("should compile create operation with FragnoId object for reference column", () => {
446
+ const uow = createTestUOW();
447
+ const userId = FragnoId.fromExternal("user_ext_789", 0);
448
+ // Create a post with userId as a FragnoId object
449
+ uow.create("posts", {
450
+ title: "Post with FragnoId",
451
+ content: "Content",
452
+ userId,
453
+ });
454
+
455
+ const compiler = createDrizzleUOWCompiler(testSchema, pool, "postgresql");
456
+ const compiled = uow.compile(compiler);
457
+ const [batch] = compiled.mutationBatch;
458
+ assert(batch);
459
+ expect(batch.expectedAffectedRows).toBeNull();
460
+ // FragnoId should use internal ID directly (no subquery needed if available)
461
+ // But since we don't have the internal ID populated in the test, it should serialize
462
+ expect(batch.query.sql).toMatchInlineSnapshot(
463
+ `"insert into "posts" ("id", "title", "content", "userId", "viewCount", "_internalId", "_version") values ($1, $2, $3, $4, default, default, default)"`,
464
+ );
465
+ });
466
+
467
+ it("should compile update operation with external id string for reference column", () => {
468
+ const uow = createTestUOW();
469
+ const postId = FragnoId.fromExternal("post123", 0);
470
+ uow.update("posts", postId, (b) =>
471
+ b.set({
472
+ userId: "new_user_external_id_456",
473
+ }),
474
+ );
475
+
476
+ const compiler = createDrizzleUOWCompiler(testSchema, pool, "postgresql");
477
+ const compiled = uow.compile(compiler);
478
+ const [batch] = compiled.mutationBatch;
479
+ assert(batch);
480
+ expect(batch.expectedAffectedRows).toBeNull();
481
+ // Should generate a subquery for the string external ID in UPDATE
482
+ expect(batch.query.sql).toMatchInlineSnapshot(
483
+ `"update "posts" set "userId" = (select "_internalId" from "users" where "id" = $1 limit 1), "_version" = COALESCE(_version, 0) + 1 where "posts"."id" = $2"`,
484
+ );
485
+ expect(batch.query.params).toMatchObject([
486
+ "new_user_external_id_456", // external id string
487
+ "post123", // post external id
488
+ ]);
489
+ });
490
+
491
+ it("should compile update operation with bigint for reference column (no subquery)", () => {
492
+ const uow = createTestUOW();
493
+ const postId = FragnoId.fromExternal("post456", 0);
494
+ uow.update("posts", postId, (b) =>
495
+ b.set({
496
+ userId: 99999n,
497
+ }),
498
+ );
499
+
500
+ const compiler = createDrizzleUOWCompiler(testSchema, pool, "postgresql");
501
+ const compiled = uow.compile(compiler);
502
+ const [batch] = compiled.mutationBatch;
503
+ assert(batch);
504
+ expect(batch.expectedAffectedRows).toBeNull();
505
+ // Should NOT have a subquery when using bigint directly
506
+ expect(batch.query.sql).not.toMatch(/\(select.*from.*users/i);
507
+ expect(batch.query.sql).toMatchInlineSnapshot(
508
+ `"update "posts" set "userId" = $1, "_version" = COALESCE(_version, 0) + 1 where "posts"."id" = $2"`,
509
+ );
510
+ expect(batch.query.params).toMatchObject([
511
+ 99999n, // bigint internal ID directly
512
+ "post456", // post external id
513
+ ]);
514
+ });
515
+
391
516
  it("should compile update operation with ID", () => {
392
517
  const uow = createTestUOW();
393
518
  const userId = FragnoId.fromExternal("user123", 0);
@@ -1082,4 +1207,101 @@ describe("drizzle-uow-compiler", () => {
1082
1207
  );
1083
1208
  });
1084
1209
  });
1210
+
1211
+ describe("auth schema with session joins", () => {
1212
+ const authSchema = schema((s) => {
1213
+ return s
1214
+ .addTable("user", (t) => {
1215
+ return t
1216
+ .addColumn("id", idColumn())
1217
+ .addColumn("email", column("string"))
1218
+ .addColumn("passwordHash", column("string"))
1219
+ .addColumn(
1220
+ "createdAt",
1221
+ column("timestamp").defaultTo$((b) => b.now()),
1222
+ )
1223
+ .createIndex("idx_user_email", ["email"]);
1224
+ })
1225
+ .addTable("session", (t) => {
1226
+ return t
1227
+ .addColumn("id", idColumn())
1228
+ .addColumn("userId", referenceColumn())
1229
+ .addColumn("expiresAt", column("timestamp"))
1230
+ .addColumn(
1231
+ "createdAt",
1232
+ column("timestamp").defaultTo$((b) => b.now()),
1233
+ )
1234
+ .createIndex("idx_session_user", ["userId"]);
1235
+ })
1236
+ .addReference("sessionOwner", {
1237
+ from: {
1238
+ table: "session",
1239
+ column: "userId",
1240
+ },
1241
+ to: {
1242
+ table: "user",
1243
+ column: "id",
1244
+ },
1245
+ type: "one",
1246
+ });
1247
+ });
1248
+
1249
+ let authDb: DBType;
1250
+ let authPool: ConnectionPool<DBType>;
1251
+
1252
+ beforeAll(async () => {
1253
+ // Write schema to file and dynamically import it
1254
+ const { schemaModule, cleanup } = await writeAndLoadSchema(
1255
+ "drizzle-uow-compiler-auth",
1256
+ authSchema,
1257
+ "postgresql",
1258
+ );
1259
+
1260
+ // Create Drizzle instance with PGLite (in-memory Postgres)
1261
+ authDb = drizzle({
1262
+ schema: schemaModule,
1263
+ }) as unknown as DBType;
1264
+
1265
+ // Wrap in connection pool
1266
+ authPool = createDrizzleConnectionPool(authDb);
1267
+
1268
+ return async () => {
1269
+ await cleanup();
1270
+ };
1271
+ }, 12000);
1272
+
1273
+ function createAuthUOW(name?: string) {
1274
+ const compiler = createDrizzleUOWCompiler(authSchema, authPool, "postgresql");
1275
+ const mockExecutor = {
1276
+ executeRetrievalPhase: async () => [],
1277
+ executeMutationPhase: async () => ({ success: true, createdInternalIds: [] }),
1278
+ };
1279
+ const mockDecoder: UOWDecoder<typeof authSchema> = (rawResults, operations) => {
1280
+ if (rawResults.length !== operations.length) {
1281
+ throw new Error("rawResults and ops must have the same length");
1282
+ }
1283
+ return rawResults;
1284
+ };
1285
+ return new UnitOfWork(authSchema, compiler, mockExecutor, mockDecoder, name);
1286
+ }
1287
+
1288
+ it("should compile find session with user join", () => {
1289
+ const uow = createAuthUOW();
1290
+ const sessionId = "session123";
1291
+ uow.find("session", (b) =>
1292
+ b
1293
+ .whereIndex("primary", (eb) => eb("id", "=", sessionId))
1294
+ .join((j) => j.sessionOwner((b) => b.select(["id", "email"]))),
1295
+ );
1296
+
1297
+ const compiler = createDrizzleUOWCompiler(authSchema, authPool, "postgresql");
1298
+ const compiled = uow.compile(compiler);
1299
+
1300
+ expect(compiled.retrievalBatch).toHaveLength(1);
1301
+ expect(compiled.retrievalBatch[0].sql).toMatchInlineSnapshot(
1302
+ `"select "session"."id", "session"."userId", "session"."expiresAt", "session"."createdAt", "session"."_internalId", "session"."_version", "session_sessionOwner"."data" as "sessionOwner" from "session" "session" left join lateral (select json_build_array("session_sessionOwner"."id", "session_sessionOwner"."email", "session_sessionOwner"."_internalId", "session_sessionOwner"."_version") as "data" from (select * from "user" "session_sessionOwner" where "session_sessionOwner"."_internalId" = "session"."userId" limit $1) "session_sessionOwner") "session_sessionOwner" on true where "session"."id" = $2"`,
1303
+ );
1304
+ expect(compiled.retrievalBatch[0].params).toEqual([1, sessionId]);
1305
+ });
1306
+ });
1085
1307
  });
@@ -37,7 +37,6 @@ export type DrizzleCompiledQuery = {
37
37
  * @param pool - Connection pool for acquiring database connections
38
38
  * @param provider - SQL provider (sqlite, mysql, postgresql)
39
39
  * @param mapper - Optional table name mapper for namespace prefixing
40
- * @param onQuery - Optional callback to receive compiled queries for logging/debugging
41
40
  * @returns A UOWCompiler instance for Drizzle
42
41
  */
43
42
  export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
@@ -45,7 +44,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
45
44
  pool: ConnectionPool<DBType>,
46
45
  provider: "sqlite" | "mysql" | "postgresql",
47
46
  mapper?: TableNameMapper,
48
- onQuery?: (query: DrizzleCompiledQuery) => void,
49
47
  ): UOWCompiler<TSchema, DrizzleCompiledQuery> {
50
48
  // Get db synchronously for compilation (doesn't execute, just builds SQL)
51
49
  // TODO: We don't even need a Drizzle instance with a db client attached here. `drizzle({ schema })` is enough.
@@ -185,16 +183,15 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
185
183
  const externalId = value.externalIdValue;
186
184
  const internalIdCol = refTable.getInternalIdColumn();
187
185
  const idCol = refTable.getIdColumn();
188
- const drizzleRefTable = toDrizzleTable(refTable);
189
- const drizzleIdCol = toDrizzleColumn(idCol);
190
186
 
191
- // Create a parameterized SQL subquery using Drizzle's query builder
187
+ // Map logical table name to physical table name using the mapper
188
+ const physicalTableName = mapper ? mapper.toPhysical(refTable.ormName) : refTable.ormName;
189
+
190
+ // Build a SQL subquery using Drizzle's sql template
191
+ // This creates a subquery: (SELECT _internalId FROM table WHERE id = ? LIMIT 1)
192
192
  // Safe cast: we're building a SQL subquery that returns a single bigint value
193
- processed[key] = db
194
- .select({ value: drizzleRefTable[internalIdCol.ormName] })
195
- .from(drizzleRefTable)
196
- .where(Drizzle.eq(drizzleIdCol, externalId))
197
- .limit(1) as unknown;
193
+ processed[key] =
194
+ Drizzle.sql`(select ${Drizzle.sql.identifier(internalIdCol.name)} from ${Drizzle.sql.identifier(physicalTableName)} where ${Drizzle.sql.identifier(idCol.name)} = ${externalId} limit 1)`;
198
195
  } else {
199
196
  processed[key] = value;
200
197
  }
@@ -315,7 +312,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
315
312
  const query = db.select({ count: Drizzle.count() }).from(drizzleTable);
316
313
 
317
314
  const compiledQuery = whereClause ? query.where(whereClause).toSQL() : query.toSQL();
318
- onQuery?.(compiledQuery);
319
315
  return compiledQuery;
320
316
  }
321
317
 
@@ -452,7 +448,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
452
448
 
453
449
  const physicalTableName = mapper ? mapper.toPhysical(op.table.ormName) : op.table.ormName;
454
450
  const compiledQuery = db.query[physicalTableName].findMany(queryConfig).toSQL();
455
- onQuery?.(compiledQuery);
456
451
  return compiledQuery;
457
452
  }
458
453
  }
@@ -470,7 +465,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
470
465
  const values = processReferenceSubqueries(encodedValues);
471
466
 
472
467
  const compiledQuery = db.insert(drizzleTable).values(values).toSQL();
473
- onQuery?.(compiledQuery);
474
468
  return {
475
469
  query: compiledQuery,
476
470
  expectedAffectedRows: null, // creates don't need affected row checks
@@ -514,7 +508,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
514
508
  ) as unknown;
515
509
 
516
510
  const compiledQuery = db.update(drizzleTable).set(setValues).where(whereClause).toSQL();
517
- onQuery?.(compiledQuery);
518
511
  return {
519
512
  query: compiledQuery,
520
513
  expectedAffectedRows: op.checkVersion ? 1 : null,
@@ -527,7 +520,23 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
527
520
  const versionColumn = table.getVersionColumn();
528
521
  const drizzleTable = toDrizzleTable(table);
529
522
 
523
+ if (!op.id) {
524
+ throw new Error(
525
+ `[Drizzle] Delete operation on table "${op.table}" has undefined id. ` +
526
+ `Make sure you're passing a valid FragnoId or string ID.`,
527
+ );
528
+ }
529
+
530
530
  const externalId = typeof op.id === "string" ? op.id : op.id.externalId;
531
+
532
+ if (!externalId) {
533
+ throw new Error(
534
+ `[Drizzle] Delete operation on table "${op.table}" has invalid id. ` +
535
+ `The FragnoId object exists but has no externalId. ` +
536
+ `Received: ${JSON.stringify(op.id)}. ` +
537
+ `Make sure the record was properly loaded from the database.`,
538
+ );
539
+ }
531
540
  const versionToCheck = getVersionToCheck(op.id, op.checkVersion);
532
541
 
533
542
  // Build WHERE clause that filters by ID and optionally by version
@@ -550,7 +559,6 @@ export function createDrizzleUOWCompiler<TSchema extends AnySchema>(
550
559
  const whereClause = condition === true ? undefined : buildWhere(condition);
551
560
 
552
561
  const compiledQuery = db.delete(drizzleTable).where(whereClause).toSQL();
553
- onQuery?.(compiledQuery);
554
562
  return {
555
563
  query: compiledQuery,
556
564
  expectedAffectedRows: op.checkVersion ? 1 : null,