@fragno-dev/db 0.2.2 → 0.3.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 (355) hide show
  1. package/.turbo/turbo-build.log +202 -140
  2. package/CHANGELOG.md +35 -0
  3. package/README.md +30 -9
  4. package/dist/adapters/adapters.d.ts +23 -21
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/generic-sql/driver-config.d.ts +16 -1
  8. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -1
  9. package/dist/adapters/generic-sql/driver-config.js +23 -1
  10. package/dist/adapters/generic-sql/driver-config.js.map +1 -1
  11. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +27 -9
  12. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
  13. package/dist/adapters/generic-sql/generic-sql-adapter.js +55 -16
  14. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
  15. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +129 -3
  16. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
  17. package/dist/adapters/generic-sql/migration/dialect/mysql.js +24 -5
  18. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
  19. package/dist/adapters/generic-sql/migration/dialect/postgres.js +6 -5
  20. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
  21. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +21 -10
  22. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
  23. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
  24. package/dist/adapters/generic-sql/migration/prepared-migrations.js +8 -8
  25. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
  26. package/dist/adapters/generic-sql/migration/sql-generator.js +74 -51
  27. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
  28. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +6 -5
  29. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
  30. package/dist/adapters/generic-sql/query/cursor-utils.js +42 -4
  31. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
  32. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +25 -17
  33. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
  34. package/dist/adapters/generic-sql/query/select-builder.js +5 -3
  35. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
  36. package/dist/adapters/generic-sql/query/sql-query-compiler.js +15 -12
  37. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
  38. package/dist/adapters/generic-sql/query/where-builder.js +39 -29
  39. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
  40. package/dist/adapters/generic-sql/sqlite-storage.d.ts +13 -0
  41. package/dist/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  42. package/dist/adapters/generic-sql/sqlite-storage.js +15 -0
  43. package/dist/adapters/generic-sql/sqlite-storage.js.map +1 -0
  44. package/dist/adapters/generic-sql/uow-decoder.js +7 -3
  45. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
  46. package/dist/adapters/generic-sql/uow-encoder.js +28 -8
  47. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
  48. package/dist/adapters/in-memory/condition-evaluator.js +131 -0
  49. package/dist/adapters/in-memory/condition-evaluator.js.map +1 -0
  50. package/dist/adapters/in-memory/errors.d.ts +13 -0
  51. package/dist/adapters/in-memory/errors.d.ts.map +1 -0
  52. package/dist/adapters/in-memory/errors.js +23 -0
  53. package/dist/adapters/in-memory/errors.js.map +1 -0
  54. package/dist/adapters/in-memory/in-memory-adapter.d.ts +27 -0
  55. package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -0
  56. package/dist/adapters/in-memory/in-memory-adapter.js +176 -0
  57. package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -0
  58. package/dist/adapters/in-memory/in-memory-uow.js +648 -0
  59. package/dist/adapters/in-memory/in-memory-uow.js.map +1 -0
  60. package/dist/adapters/in-memory/index.d.ts +4 -0
  61. package/dist/adapters/in-memory/index.js +4 -0
  62. package/dist/adapters/in-memory/options.d.ts +28 -0
  63. package/dist/adapters/in-memory/options.d.ts.map +1 -0
  64. package/dist/adapters/in-memory/options.js +61 -0
  65. package/dist/adapters/in-memory/options.js.map +1 -0
  66. package/dist/adapters/in-memory/reference-resolution.js +26 -0
  67. package/dist/adapters/in-memory/reference-resolution.js.map +1 -0
  68. package/dist/adapters/in-memory/sorted-array-index.js +129 -0
  69. package/dist/adapters/in-memory/sorted-array-index.js.map +1 -0
  70. package/dist/adapters/in-memory/store.js +71 -0
  71. package/dist/adapters/in-memory/store.js.map +1 -0
  72. package/dist/adapters/in-memory/value-comparison.js +28 -0
  73. package/dist/adapters/in-memory/value-comparison.js.map +1 -0
  74. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
  75. package/dist/adapters/shared/uow-operation-compiler.js +11 -11
  76. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
  77. package/dist/adapters/sql/index.d.ts +5 -0
  78. package/dist/adapters/sql/index.js +4 -0
  79. package/dist/db-fragment-definition-builder.d.ts +18 -7
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +116 -54
  82. package/dist/db-fragment-definition-builder.js.map +1 -1
  83. package/dist/dispatchers/cloudflare-do/index.d.ts +26 -0
  84. package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -0
  85. package/dist/dispatchers/cloudflare-do/index.js +63 -0
  86. package/dist/dispatchers/cloudflare-do/index.js.map +1 -0
  87. package/dist/dispatchers/node/index.d.ts +17 -0
  88. package/dist/dispatchers/node/index.d.ts.map +1 -0
  89. package/dist/dispatchers/node/index.js +59 -0
  90. package/dist/dispatchers/node/index.js.map +1 -0
  91. package/dist/fragments/internal-fragment.d.ts +79 -2
  92. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  93. package/dist/fragments/internal-fragment.js +150 -32
  94. package/dist/fragments/internal-fragment.js.map +1 -1
  95. package/dist/fragments/internal-fragment.routes.js +29 -0
  96. package/dist/fragments/internal-fragment.routes.js.map +1 -0
  97. package/dist/fragments/internal-fragment.schema.d.ts +9 -0
  98. package/dist/fragments/internal-fragment.schema.d.ts.map +1 -0
  99. package/dist/fragments/internal-fragment.schema.js +22 -0
  100. package/dist/fragments/internal-fragment.schema.js.map +1 -0
  101. package/dist/hooks/durable-hooks-processor.d.ts +14 -0
  102. package/dist/hooks/durable-hooks-processor.d.ts.map +1 -0
  103. package/dist/hooks/durable-hooks-processor.js +32 -0
  104. package/dist/hooks/durable-hooks-processor.js.map +1 -0
  105. package/dist/hooks/hooks.d.ts +42 -1
  106. package/dist/hooks/hooks.d.ts.map +1 -1
  107. package/dist/hooks/hooks.js +72 -6
  108. package/dist/hooks/hooks.js.map +1 -1
  109. package/dist/migration-engine/auto-from-schema.js +14 -11
  110. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  111. package/dist/migration-engine/generation-engine.d.ts +16 -10
  112. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  113. package/dist/migration-engine/generation-engine.js +72 -33
  114. package/dist/migration-engine/generation-engine.js.map +1 -1
  115. package/dist/migration-engine/shared.js.map +1 -1
  116. package/dist/mod.d.ts +15 -8
  117. package/dist/mod.d.ts.map +1 -1
  118. package/dist/mod.js +14 -8
  119. package/dist/mod.js.map +1 -1
  120. package/dist/naming/sql-naming.d.ts +19 -0
  121. package/dist/naming/sql-naming.d.ts.map +1 -0
  122. package/dist/naming/sql-naming.js +116 -0
  123. package/dist/naming/sql-naming.js.map +1 -0
  124. package/dist/node_modules/.pnpm/{rou3@0.7.10 → rou3@0.7.12}/node_modules/rou3/dist/index.js +8 -5
  125. package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.js.map +1 -0
  126. package/dist/outbox/outbox-builder.js +156 -0
  127. package/dist/outbox/outbox-builder.js.map +1 -0
  128. package/dist/outbox/outbox.d.ts +52 -0
  129. package/dist/outbox/outbox.d.ts.map +1 -0
  130. package/dist/outbox/outbox.js +37 -0
  131. package/dist/outbox/outbox.js.map +1 -0
  132. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +3 -2
  133. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +1 -1
  134. package/dist/packages/fragno/dist/api/fragment-instantiator.js +164 -20
  135. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
  136. package/dist/packages/fragno/dist/api/request-input-context.js +67 -0
  137. package/dist/packages/fragno/dist/api/request-input-context.js.map +1 -1
  138. package/dist/packages/fragno/dist/api/route.js +14 -1
  139. package/dist/packages/fragno/dist/api/route.js.map +1 -1
  140. package/dist/packages/fragno/dist/internal/trace-context.js +12 -0
  141. package/dist/packages/fragno/dist/internal/trace-context.js.map +1 -0
  142. package/dist/query/column-defaults.js +20 -4
  143. package/dist/query/column-defaults.js.map +1 -1
  144. package/dist/query/cursor.d.ts +3 -1
  145. package/dist/query/cursor.d.ts.map +1 -1
  146. package/dist/query/cursor.js +45 -14
  147. package/dist/query/cursor.js.map +1 -1
  148. package/dist/query/db-now.d.ts +8 -0
  149. package/dist/query/db-now.d.ts.map +1 -0
  150. package/dist/query/db-now.js +7 -0
  151. package/dist/query/db-now.js.map +1 -0
  152. package/dist/query/serialize/create-sql-serializer.js +3 -2
  153. package/dist/query/serialize/create-sql-serializer.js.map +1 -1
  154. package/dist/query/serialize/dialect/mysql-serializer.js +12 -6
  155. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
  156. package/dist/query/serialize/dialect/postgres-serializer.js +25 -7
  157. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
  158. package/dist/query/serialize/dialect/sqlite-serializer.js +55 -11
  159. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
  160. package/dist/query/serialize/sql-serializer.js +2 -2
  161. package/dist/query/serialize/sql-serializer.js.map +1 -1
  162. package/dist/query/simple-query-interface.d.ts +6 -1
  163. package/dist/query/simple-query-interface.d.ts.map +1 -1
  164. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
  165. package/dist/query/unit-of-work/execute-unit-of-work.js +11 -6
  166. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  167. package/dist/query/unit-of-work/unit-of-work.d.ts +50 -14
  168. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  169. package/dist/query/unit-of-work/unit-of-work.js +86 -5
  170. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  171. package/dist/query/value-decoding.js +9 -6
  172. package/dist/query/value-decoding.js.map +1 -1
  173. package/dist/query/value-encoding.js +29 -9
  174. package/dist/query/value-encoding.js.map +1 -1
  175. package/dist/schema/create.d.ts +38 -14
  176. package/dist/schema/create.d.ts.map +1 -1
  177. package/dist/schema/create.js +81 -42
  178. package/dist/schema/create.js.map +1 -1
  179. package/dist/schema/generate-id.js +2 -2
  180. package/dist/schema/generate-id.js.map +1 -1
  181. package/dist/schema/type-conversion/create-sql-type-mapper.js +3 -2
  182. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  183. package/dist/schema/type-conversion/dialect/sqlite.js +9 -0
  184. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  185. package/dist/schema/validator.d.ts +10 -0
  186. package/dist/schema/validator.d.ts.map +1 -0
  187. package/dist/schema/validator.js +123 -0
  188. package/dist/schema/validator.js.map +1 -0
  189. package/dist/schema-output/drizzle.d.ts +30 -0
  190. package/dist/schema-output/drizzle.d.ts.map +1 -0
  191. package/dist/{adapters/drizzle/generate.js → schema-output/drizzle.js} +82 -56
  192. package/dist/schema-output/drizzle.js.map +1 -0
  193. package/dist/schema-output/prisma.d.ts +17 -0
  194. package/dist/schema-output/prisma.d.ts.map +1 -0
  195. package/dist/schema-output/prisma.js +296 -0
  196. package/dist/schema-output/prisma.js.map +1 -0
  197. package/dist/util/default-database-adapter.js +61 -0
  198. package/dist/util/default-database-adapter.js.map +1 -0
  199. package/dist/with-database.d.ts +1 -1
  200. package/dist/with-database.d.ts.map +1 -1
  201. package/dist/with-database.js +12 -3
  202. package/dist/with-database.js.map +1 -1
  203. package/package.json +43 -28
  204. package/src/adapters/adapters.ts +30 -24
  205. package/src/adapters/drizzle/migrate-drizzle.test.ts +54 -33
  206. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +599 -0
  207. package/src/adapters/drizzle/test-utils.ts +12 -8
  208. package/src/adapters/generic-sql/driver-config.ts +38 -0
  209. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -5
  210. package/src/adapters/generic-sql/generic-sql-adapter.ts +110 -24
  211. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +54 -0
  212. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +231 -3
  213. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +118 -0
  214. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +26 -8
  215. package/src/adapters/generic-sql/migration/dialect/mysql.ts +46 -8
  216. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +25 -7
  217. package/src/adapters/generic-sql/migration/dialect/postgres.ts +8 -4
  218. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +47 -8
  219. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +27 -12
  220. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +128 -39
  221. package/src/adapters/generic-sql/migration/prepared-migrations.ts +15 -8
  222. package/src/adapters/generic-sql/migration/sql-generator.ts +142 -65
  223. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +9 -6
  224. package/src/adapters/generic-sql/query/cursor-utils.test.ts +271 -0
  225. package/src/adapters/generic-sql/query/cursor-utils.ts +41 -6
  226. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +27 -27
  227. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +38 -24
  228. package/src/adapters/generic-sql/query/select-builder.test.ts +15 -11
  229. package/src/adapters/generic-sql/query/select-builder.ts +6 -2
  230. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +52 -2
  231. package/src/adapters/generic-sql/query/sql-query-compiler.ts +50 -15
  232. package/src/adapters/generic-sql/query/where-builder.test.ts +91 -17
  233. package/src/adapters/generic-sql/query/where-builder.ts +90 -38
  234. package/src/adapters/{kysely/kysely-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-migrations.test.ts} +6 -6
  235. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +806 -0
  236. package/src/adapters/{drizzle/drizzle-adapter-pglite.test.ts → generic-sql/sql-adapter-pglite-queries.test.ts} +11 -11
  237. package/src/adapters/generic-sql/{test/generic-drizzle-adapter-sqlite3.test.ts → sql-adapter-sqlite3-driver.test.ts} +10 -10
  238. package/src/adapters/{drizzle/drizzle-adapter-sqlite3.test.ts → generic-sql/sql-adapter-sqlite3-uow.test.ts} +7 -7
  239. package/src/adapters/{kysely/kysely-adapter-sqlocal.test.ts → generic-sql/sql-adapter-sqlocal.test.ts} +6 -6
  240. package/src/adapters/generic-sql/sqlite-storage.ts +20 -0
  241. package/src/adapters/generic-sql/uow-decoder.test.ts +1 -1
  242. package/src/adapters/generic-sql/uow-decoder.ts +21 -3
  243. package/src/adapters/generic-sql/uow-encoder.test.ts +33 -2
  244. package/src/adapters/generic-sql/uow-encoder.ts +50 -11
  245. package/src/adapters/in-memory/condition-evaluator.test.ts +193 -0
  246. package/src/adapters/in-memory/condition-evaluator.ts +275 -0
  247. package/src/adapters/in-memory/errors.ts +20 -0
  248. package/src/adapters/in-memory/in-memory-adapter.ts +277 -0
  249. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +296 -0
  250. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +100 -0
  251. package/src/adapters/in-memory/in-memory-uow.ts +1348 -0
  252. package/src/adapters/in-memory/index.ts +3 -0
  253. package/src/adapters/in-memory/options.test.ts +41 -0
  254. package/src/adapters/in-memory/options.ts +87 -0
  255. package/src/adapters/in-memory/reference-resolution.test.ts +50 -0
  256. package/src/adapters/in-memory/reference-resolution.ts +67 -0
  257. package/src/adapters/in-memory/sorted-array-index.test.ts +123 -0
  258. package/src/adapters/in-memory/sorted-array-index.ts +228 -0
  259. package/src/adapters/in-memory/store.test.ts +68 -0
  260. package/src/adapters/in-memory/store.ts +145 -0
  261. package/src/adapters/in-memory/value-comparison.ts +53 -0
  262. package/src/adapters/in-memory/value-normalization.test.ts +57 -0
  263. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +1163 -0
  264. package/src/adapters/shared/from-unit-of-work-compiler.ts +3 -1
  265. package/src/adapters/shared/uow-operation-compiler.ts +26 -16
  266. package/src/adapters/sql/index.ts +12 -0
  267. package/src/db-fragment-definition-builder.test.ts +30 -12
  268. package/src/db-fragment-definition-builder.ts +142 -73
  269. package/src/db-fragment-instantiator.test.ts +105 -13
  270. package/src/db-fragment-integration.test.ts +9 -7
  271. package/src/dispatchers/cloudflare-do/index.test.ts +73 -0
  272. package/src/dispatchers/cloudflare-do/index.ts +104 -0
  273. package/src/dispatchers/node/index.test.ts +91 -0
  274. package/src/dispatchers/node/index.ts +87 -0
  275. package/src/fragments/internal-fragment.routes.ts +42 -0
  276. package/src/fragments/internal-fragment.schema.ts +51 -0
  277. package/src/fragments/internal-fragment.test.ts +458 -8
  278. package/src/fragments/internal-fragment.ts +322 -63
  279. package/src/hooks/durable-hooks-processor.test.ts +117 -0
  280. package/src/hooks/durable-hooks-processor.ts +67 -0
  281. package/src/hooks/hooks.test.ts +165 -5
  282. package/src/hooks/hooks.ts +197 -9
  283. package/src/migration-engine/auto-from-schema.test.ts +14 -14
  284. package/src/migration-engine/auto-from-schema.ts +5 -2
  285. package/src/migration-engine/create.test.ts +2 -2
  286. package/src/migration-engine/generation-engine.test.ts +229 -104
  287. package/src/migration-engine/generation-engine.ts +94 -64
  288. package/src/migration-engine/shared.ts +1 -0
  289. package/src/mod.ts +64 -26
  290. package/src/naming/sql-naming.ts +180 -0
  291. package/src/outbox/outbox-builder.ts +241 -0
  292. package/src/outbox/outbox.test.ts +253 -0
  293. package/src/outbox/outbox.ts +137 -0
  294. package/src/query/column-defaults.ts +41 -3
  295. package/src/query/condition-builder.test.ts +3 -3
  296. package/src/query/cursor.test.ts +116 -18
  297. package/src/query/cursor.ts +75 -26
  298. package/src/query/db-now.ts +6 -0
  299. package/src/query/query-type.test.ts +2 -2
  300. package/src/query/serialize/create-sql-serializer.ts +7 -2
  301. package/src/query/serialize/dialect/mysql-serializer.ts +12 -4
  302. package/src/query/serialize/dialect/postgres-serializer.ts +34 -4
  303. package/src/query/serialize/dialect/sqlite-serializer.test.ts +51 -1
  304. package/src/query/serialize/dialect/sqlite-serializer.ts +92 -9
  305. package/src/query/serialize/sql-serializer.ts +4 -4
  306. package/src/query/simple-query-interface.ts +5 -0
  307. package/src/query/unit-of-work/execute-unit-of-work.test.ts +25 -1
  308. package/src/query/unit-of-work/execute-unit-of-work.ts +25 -8
  309. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +12 -12
  310. package/src/query/unit-of-work/unit-of-work-types.test.ts +1 -1
  311. package/src/query/unit-of-work/unit-of-work.test.ts +168 -37
  312. package/src/query/unit-of-work/unit-of-work.ts +203 -18
  313. package/src/query/value-decoding.test.ts +13 -2
  314. package/src/query/value-decoding.ts +17 -4
  315. package/src/query/value-encoding.test.ts +85 -2
  316. package/src/query/value-encoding.ts +56 -6
  317. package/src/schema/create.test.ts +129 -42
  318. package/src/schema/create.ts +185 -47
  319. package/src/schema/generate-id.test.ts +2 -2
  320. package/src/schema/generate-id.ts +2 -2
  321. package/src/schema/serialize.test.ts +14 -2
  322. package/src/schema/type-conversion/create-sql-type-mapper.ts +7 -2
  323. package/src/schema/type-conversion/dialect/sqlite.ts +18 -0
  324. package/src/schema/type-conversion/type-mapping.test.ts +25 -1
  325. package/src/schema/validator.test.ts +197 -0
  326. package/src/schema/validator.ts +231 -0
  327. package/src/{adapters/drizzle/generate.test.ts → schema-output/drizzle.test.ts} +179 -129
  328. package/src/{adapters/drizzle/generate.ts → schema-output/drizzle.ts} +143 -93
  329. package/src/schema-output/prisma.test.ts +536 -0
  330. package/src/schema-output/prisma.ts +573 -0
  331. package/src/util/default-database-adapter.ts +106 -0
  332. package/src/with-database.ts +22 -3
  333. package/tsdown.config.ts +6 -4
  334. package/dist/adapters/drizzle/drizzle-adapter.d.ts +0 -20
  335. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +0 -1
  336. package/dist/adapters/drizzle/drizzle-adapter.js +0 -27
  337. package/dist/adapters/drizzle/drizzle-adapter.js.map +0 -1
  338. package/dist/adapters/drizzle/generate.d.ts +0 -30
  339. package/dist/adapters/drizzle/generate.d.ts.map +0 -1
  340. package/dist/adapters/drizzle/generate.js.map +0 -1
  341. package/dist/adapters/kysely/kysely-adapter.d.ts +0 -19
  342. package/dist/adapters/kysely/kysely-adapter.d.ts.map +0 -1
  343. package/dist/adapters/kysely/kysely-adapter.js +0 -17
  344. package/dist/adapters/kysely/kysely-adapter.js.map +0 -1
  345. package/dist/adapters/shared/table-name-mapper.d.ts +0 -12
  346. package/dist/adapters/shared/table-name-mapper.d.ts.map +0 -1
  347. package/dist/adapters/shared/table-name-mapper.js +0 -43
  348. package/dist/adapters/shared/table-name-mapper.js.map +0 -1
  349. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +0 -1
  350. package/dist/schema-generator/schema-generator.d.ts +0 -15
  351. package/dist/schema-generator/schema-generator.d.ts.map +0 -1
  352. package/src/adapters/drizzle/drizzle-adapter.ts +0 -39
  353. package/src/adapters/kysely/kysely-adapter.ts +0 -27
  354. package/src/adapters/shared/table-name-mapper.ts +0 -50
  355. package/src/schema-generator/schema-generator.ts +0 -12
@@ -1,20 +1,25 @@
1
- import { importGenerator } from "../../util/import-generator";
2
- import { ident, parseVarchar } from "../../util/parse";
1
+ import { importGenerator } from "../util/import-generator";
2
+ import { ident, parseVarchar } from "../util/parse";
3
3
  import {
4
4
  type AnyColumn,
5
5
  type AnySchema,
6
6
  type AnyTable,
7
7
  type Relation,
8
8
  InternalIdColumn,
9
- } from "../../schema/create";
10
- import type { SQLProvider } from "../../shared/providers";
9
+ } from "../schema/create";
11
10
  import {
12
- createTableNameMapper,
11
+ createNamingResolver,
13
12
  sanitizeNamespace,
14
- type TableNameMapper,
15
- } from "../shared/table-name-mapper";
16
- import { type DatabaseTypeLiteral } from "../../schema/type-conversion/type-mapping";
17
- import { createSQLTypeMapper } from "../../schema/type-conversion/create-sql-type-mapper";
13
+ type NamingResolver,
14
+ type SqlNamingStrategy,
15
+ } from "../naming/sql-naming";
16
+ import { internalSchema } from "../fragments/internal-fragment.schema";
17
+ import { type DatabaseTypeLiteral } from "../schema/type-conversion/type-mapping";
18
+ import { createSQLTypeMapper } from "../schema/type-conversion/create-sql-type-mapper";
19
+ import {
20
+ defaultNamingStrategyForDatabase,
21
+ type SupportedDatabase,
22
+ } from "../adapters/generic-sql/driver-config";
18
23
 
19
24
  // ============================================================================
20
25
  // PROVIDER CONFIGURATION
@@ -32,7 +37,7 @@ const PROVIDER_TABLE_FUNCTIONS = {
32
37
  sqlite: "sqliteTable",
33
38
  } as const;
34
39
 
35
- export type SupportedProvider = Exclude<SQLProvider, "cockroachdb" | "mssql">;
40
+ export type SupportedProvider = SupportedDatabase;
36
41
 
37
42
  // ============================================================================
38
43
  // CONTEXT
@@ -47,7 +52,7 @@ interface GeneratorContext {
47
52
  }
48
53
 
49
54
  function createContext(
50
- provider: SupportedProvider,
55
+ provider: SupportedDatabase,
51
56
  idGeneratorImport?: { name: string; from: string },
52
57
  ): GeneratorContext {
53
58
  return {
@@ -224,7 +229,7 @@ function mapDBTypeToDrizzleFunction(
224
229
  case "text":
225
230
  // Check if it's JSON
226
231
  if (column.type === "json") {
227
- return { name: "blob", params: [`{ mode: "json" }`] };
232
+ return { name: "text", params: [`{ mode: "json" }`] };
228
233
  }
229
234
  return { name: "text" };
230
235
  case "real":
@@ -243,17 +248,10 @@ function mapDBTypeToDrizzleFunction(
243
248
  // ============================================================================
244
249
 
245
250
  /**
246
- * Get the physical table name (with namespace suffix) using the mapper if available
251
+ * Get the physical table name using the naming resolver if available
247
252
  */
248
- function getPhysicalTableName(
249
- logicalName: string,
250
- namespace: string | undefined,
251
- mapper: TableNameMapper | undefined,
252
- ): string {
253
- if (!namespace) {
254
- return logicalName;
255
- }
256
- return mapper ? mapper.toPhysical(logicalName) : `${logicalName}_${sanitizeNamespace(namespace)}`;
253
+ function getPhysicalTableName(logicalName: string, resolver?: NamingResolver): string {
254
+ return resolver ? resolver.getTableName(logicalName) : logicalName;
257
255
  }
258
256
 
259
257
  // ============================================================================
@@ -264,12 +262,13 @@ function generateColumnDefinition(
264
262
  ctx: GeneratorContext,
265
263
  column: AnyColumn,
266
264
  customTypes: string[],
265
+ physicalColumnName: string,
267
266
  ): string {
268
267
  const parts: string[] = [];
269
268
  const typeFn = getColumnTypeFunction(ctx, column, customTypes);
270
269
 
271
270
  // Column type with parameters
272
- const params: string[] = [`"${column.name}"`, ...(typeFn.params ?? [])];
271
+ const params: string[] = [`"${physicalColumnName}"`, ...(typeFn.params ?? [])];
273
272
  if (!typeFn.isCustomType) {
274
273
  ctx.imports.addImport(typeFn.name, ctx.importSource);
275
274
  }
@@ -295,6 +294,11 @@ function generateColumnDefinition(
295
294
  parts.push("notNull()");
296
295
  }
297
296
 
297
+ // External IDs are unique by definition in Fragno's SQL migrations.
298
+ if (column.role === "external-id") {
299
+ parts.push("unique()");
300
+ }
301
+
298
302
  // Default values
299
303
  if (column.default) {
300
304
  if ("value" in column.default) {
@@ -310,7 +314,12 @@ function generateColumnDefinition(
310
314
  } else if ("dbSpecial" in column.default) {
311
315
  // Database-level special functions: defaultTo(b => b.now())
312
316
  if (column.default.dbSpecial === "now") {
313
- parts.push("defaultNow()");
317
+ if (ctx.provider === "mysql") {
318
+ ctx.imports.addImport("sql", "drizzle-orm");
319
+ parts.push("default(sql`(now())`)");
320
+ } else {
321
+ parts.push("defaultNow()");
322
+ }
314
323
  }
315
324
  } else if ("runtime" in column.default) {
316
325
  // Runtime defaults: defaultTo$()
@@ -326,16 +335,22 @@ function generateColumnDefinition(
326
335
  }
327
336
  }
328
337
 
329
- return ` ${column.ormName}: ${parts.join(".")}`;
338
+ return ` ${column.name}: ${parts.join(".")}`;
330
339
  }
331
340
 
332
341
  function generateAllColumns(
333
342
  ctx: GeneratorContext,
334
343
  table: AnyTable,
335
344
  customTypes: string[],
345
+ resolver?: NamingResolver,
336
346
  ): string[] {
337
347
  return Object.values(table.columns).map((column) =>
338
- generateColumnDefinition(ctx, column, customTypes),
348
+ generateColumnDefinition(
349
+ ctx,
350
+ column,
351
+ customTypes,
352
+ resolver ? resolver.getColumnName(table.name, column.name) : column.name,
353
+ ),
339
354
  );
340
355
  }
341
356
 
@@ -346,8 +361,8 @@ function generateAllColumns(
346
361
  function generateForeignKeys(
347
362
  ctx: GeneratorContext,
348
363
  table: AnyTable,
349
- namespace?: string,
350
- mapper?: TableNameMapper,
364
+ namespace?: string | null,
365
+ resolver?: NamingResolver,
351
366
  ): string[] {
352
367
  const keys: string[] = [];
353
368
 
@@ -360,7 +375,7 @@ function generateForeignKeys(
360
375
 
361
376
  const columns: string[] = [];
362
377
  const foreignColumns: string[] = [];
363
- const isSelfReference = relation.table.ormName === table.ormName;
378
+ const isSelfReference = relation.table.name === table.name;
364
379
 
365
380
  for (const [localCol, refCol] of relation.on) {
366
381
  columns.push(`table.${localCol}`);
@@ -372,18 +387,21 @@ function generateForeignKeys(
372
387
  } else {
373
388
  // Use sanitized TypeScript export name for identifier reference
374
389
  const foreignTableRef = namespace
375
- ? `${relation.table.ormName}_${sanitizeNamespace(namespace)}`
376
- : relation.table.ormName;
390
+ ? `${relation.table.name}_${sanitizeNamespace(namespace)}`
391
+ : relation.table.name;
377
392
  foreignColumns.push(`${foreignTableRef}.${actualRefCol}`);
378
393
  }
379
394
  }
380
395
 
381
396
  ctx.imports.addImport("foreignKey", ctx.importSource);
382
397
  // Include namespace in FK name to avoid collisions
383
- const fkName =
384
- namespace && mapper
385
- ? "fk_" + mapper.toPhysical(`${table.ormName}_${relation.table.ormName}_${relation.name}`)
386
- : `${table.ormName}_${relation.table.ormName}_${relation.name}_fk`;
398
+ const fkName = resolver
399
+ ? resolver.getForeignKeyName({
400
+ logicalTable: table.name,
401
+ logicalReferencedTable: relation.table.name,
402
+ referenceName: relation.name,
403
+ })
404
+ : `${table.name}_${relation.table.name}_${relation.name}_fk`;
387
405
 
388
406
  keys.push(`foreignKey({
389
407
  columns: [${columns.join(", ")}],
@@ -395,14 +413,24 @@ function generateForeignKeys(
395
413
  return keys;
396
414
  }
397
415
 
398
- function generateIndexes(ctx: GeneratorContext, table: AnyTable, namespace?: string): string[] {
416
+ function generateIndexes(
417
+ ctx: GeneratorContext,
418
+ table: AnyTable,
419
+ namespace?: string | null,
420
+ resolver?: NamingResolver,
421
+ ): string[] {
399
422
  const indexes: string[] = [];
400
423
 
401
424
  for (const idx of Object.values(table.indexes)) {
402
- const columns = idx.columns.map((col) => `table.${col.ormName}`).join(", ");
425
+ const columns = idx.columns.map((col) => `table.${col.name}`).join(", ");
403
426
 
404
- // Include namespace in index name to avoid collisions
405
- const indexName = namespace ? `${idx.name}_${namespace}` : idx.name;
427
+ const indexName = resolver
428
+ ? idx.unique
429
+ ? resolver.getUniqueIndexName(idx.name, table.name)
430
+ : resolver.getIndexName(idx.name, table.name)
431
+ : namespace
432
+ ? `${idx.name}_${namespace}`
433
+ : idx.name;
406
434
 
407
435
  if (idx.unique) {
408
436
  ctx.imports.addImport("uniqueIndex", ctx.importSource);
@@ -419,13 +447,30 @@ function generateIndexes(ctx: GeneratorContext, table: AnyTable, namespace?: str
419
447
  function generateTableConstraints(
420
448
  ctx: GeneratorContext,
421
449
  table: AnyTable,
422
- namespace?: string,
423
- mapper?: TableNameMapper,
450
+ namespace?: string | null,
451
+ resolver?: NamingResolver,
424
452
  ): string[] {
425
- return [
426
- ...generateForeignKeys(ctx, table, namespace, mapper),
427
- ...generateIndexes(ctx, table, namespace),
453
+ const constraints: string[] = [
454
+ ...generateForeignKeys(ctx, table, namespace, resolver),
455
+ ...generateIndexes(ctx, table, namespace, resolver),
428
456
  ];
457
+
458
+ if (ctx.provider === "sqlite") {
459
+ const externalIdColumn = Object.values(table.columns).find(
460
+ (column) => column.role === "external-id",
461
+ );
462
+ if (externalIdColumn) {
463
+ const indexName = resolver
464
+ ? resolver.getUniqueIndexName(`idx_${table.name}_external_id`, table.name)
465
+ : namespace
466
+ ? `idx_${table.name}_external_id_${namespace}`
467
+ : `idx_${table.name}_external_id`;
468
+ ctx.imports.addImport("uniqueIndex", ctx.importSource);
469
+ constraints.push(`uniqueIndex("${indexName}").on(table.${externalIdColumn.name})`);
470
+ }
471
+ }
472
+
473
+ return constraints;
429
474
  }
430
475
 
431
476
  // ============================================================================
@@ -436,19 +481,22 @@ function generateTable(
436
481
  ctx: GeneratorContext,
437
482
  table: AnyTable,
438
483
  customTypes: string[],
439
- namespace?: string,
440
- mapper?: TableNameMapper,
484
+ namespace?: string | null,
485
+ resolver?: NamingResolver,
486
+ schemaRef?: string,
441
487
  ): string {
442
- const tableFn = PROVIDER_TABLE_FUNCTIONS[ctx.provider];
443
- ctx.imports.addImport(tableFn, ctx.importSource);
488
+ const tableFn = schemaRef ? `${schemaRef}.table` : PROVIDER_TABLE_FUNCTIONS[ctx.provider];
489
+ if (!schemaRef) {
490
+ ctx.imports.addImport(tableFn, ctx.importSource);
491
+ }
444
492
 
445
- const columns = generateAllColumns(ctx, table, customTypes);
446
- const constraints = generateTableConstraints(ctx, table, namespace, mapper);
493
+ const columns = generateAllColumns(ctx, table, customTypes, resolver);
494
+ const constraints = generateTableConstraints(ctx, table, namespace, resolver);
447
495
 
448
496
  // Physical table name in the database (respects mapper configuration)
449
- const physicalTableName = getPhysicalTableName(table.ormName, namespace, mapper);
497
+ const physicalTableName = getPhysicalTableName(table.name, resolver);
450
498
  // TypeScript export name must always be sanitized to be a valid JavaScript identifier
451
- const exportName = namespace ? `${table.ormName}_${sanitizeNamespace(namespace)}` : table.ormName;
499
+ const exportName = namespace ? `${table.name}_${sanitizeNamespace(namespace)}` : table.name;
452
500
 
453
501
  const args: string[] = [`"${physicalTableName}"`, `{\n${columns.join(",\n")}\n}`];
454
502
 
@@ -466,9 +514,9 @@ function generateTable(
466
514
  function generateRelation(
467
515
  ctx: GeneratorContext,
468
516
  table: AnyTable,
469
- namespace?: string,
517
+ namespace?: string | null,
470
518
  inverseRelations?: Array<{ fromTable: AnyTable; relation: Relation }>,
471
- _mapper?: TableNameMapper,
519
+ _resolver?: NamingResolver,
472
520
  ): string | undefined {
473
521
  const relations: string[] = [];
474
522
  let hasOne = false;
@@ -491,12 +539,10 @@ function generateRelation(
491
539
  const references: string[] = [];
492
540
 
493
541
  // Use sanitized TypeScript export names for identifier references
494
- const tableRef = namespace
495
- ? `${table.ormName}_${sanitizeNamespace(namespace)}`
496
- : table.ormName;
542
+ const tableRef = namespace ? `${table.name}_${sanitizeNamespace(namespace)}` : table.name;
497
543
  const relatedTableRef = namespace
498
- ? `${relation.table.ormName}_${sanitizeNamespace(namespace)}`
499
- : relation.table.ormName;
544
+ ? `${relation.table.name}_${sanitizeNamespace(namespace)}`
545
+ : relation.table.name;
500
546
 
501
547
  for (const [left, right] of relation.on) {
502
548
  fields.push(`${tableRef}.${left}`);
@@ -509,8 +555,8 @@ function generateRelation(
509
555
  }
510
556
 
511
557
  const relatedTableRef = namespace
512
- ? `${relation.table.ormName}_${sanitizeNamespace(namespace)}`
513
- : relation.table.ormName;
558
+ ? `${relation.table.name}_${sanitizeNamespace(namespace)}`
559
+ : relation.table.name;
514
560
 
515
561
  const args: string[] = [relatedTableRef];
516
562
  if (options.length > 0) {
@@ -530,12 +576,12 @@ function generateRelation(
530
576
 
531
577
  // Use sanitized TypeScript export name for identifier reference
532
578
  const fromTableRef = namespace
533
- ? `${fromTable.ormName}_${sanitizeNamespace(namespace)}`
534
- : fromTable.ormName;
579
+ ? `${fromTable.name}_${sanitizeNamespace(namespace)}`
580
+ : fromTable.name;
535
581
 
536
582
  // Generate inverse relation name with consistent suffix
537
583
  // e.g., if session has "sessionOwner" relation to user, user gets "sessionList" inverse relation
538
- const inverseRelationName = `${fromTable.ormName}List`;
584
+ const inverseRelationName = `${fromTable.name}List`;
539
585
 
540
586
  const options: string[] = [`relationName: "${relation.id}"`];
541
587
  const args: string[] = [fromTableRef, `{\n${ident(options.join(",\n"))}\n}`];
@@ -560,10 +606,8 @@ function generateRelation(
560
606
  const relationParams = params.length > 0 ? `{ ${params.join(", ")} }` : "{}";
561
607
 
562
608
  // Use sanitized names for TypeScript export identifiers
563
- const exportTableRef = namespace
564
- ? `${table.ormName}_${sanitizeNamespace(namespace)}`
565
- : table.ormName;
566
- const relationsName = namespace ? `${exportTableRef}Relations` : `${table.ormName}Relations`;
609
+ const exportTableRef = namespace ? `${table.name}_${sanitizeNamespace(namespace)}` : table.name;
610
+ const relationsName = namespace ? `${exportTableRef}Relations` : `${table.name}Relations`;
567
611
 
568
612
  ctx.imports.addImport("relations", "drizzle-orm");
569
613
  return `export const ${relationsName} = relations(${exportTableRef}, (${relationParams}) => ({
@@ -581,24 +625,22 @@ ${relations.join(",\n")}
581
625
  */
582
626
  function generateFragmentSchemaExport(
583
627
  schema: AnySchema,
584
- namespace: string,
628
+ namespace: string | null,
585
629
  tablesWithRelations?: Set<string>,
586
- _mapper?: TableNameMapper,
630
+ _resolver?: NamingResolver,
587
631
  ): string {
588
632
  const drizzleEntries: string[] = [];
589
633
 
590
634
  for (const table of Object.values(schema.tables)) {
591
635
  // TypeScript export name (always sanitized for valid JS identifiers)
592
- const exportName = namespace
593
- ? `${table.ormName}_${sanitizeNamespace(namespace)}`
594
- : table.ormName;
636
+ const exportName = namespace ? `${table.name}_${sanitizeNamespace(namespace)}` : table.name;
595
637
 
596
638
  // Add physical table name to drizzle schema
597
639
  drizzleEntries.push(` ${exportName}: ${exportName}`);
598
640
 
599
641
  // Include relations for this table if they exist (either explicit or inverse)
600
642
  if (tablesWithRelations?.has(table.name)) {
601
- const relationsName = namespace ? `${exportName}Relations` : `${table.ormName}Relations`;
643
+ const relationsName = namespace ? `${exportName}Relations` : `${table.name}Relations`;
602
644
 
603
645
  drizzleEntries.push(` ${relationsName}: ${relationsName}`);
604
646
  }
@@ -607,12 +649,12 @@ function generateFragmentSchemaExport(
607
649
  // The key insight: Drizzle needs BOTH the table alias AND its relations alias
608
650
  // in the same schema object for relational queries to work
609
651
  if (namespace) {
610
- drizzleEntries.push(` ${table.ormName}: ${exportName}`);
652
+ drizzleEntries.push(` ${table.name}: ${exportName}`);
611
653
 
612
654
  // Also add the relations under the aliased name if they exist
613
655
  if (tablesWithRelations?.has(table.name)) {
614
656
  const physicalRelationsName = `${exportName}Relations`;
615
- const aliasRelationsName = `${table.ormName}Relations`;
657
+ const aliasRelationsName = `${table.name}Relations`;
616
658
  drizzleEntries.push(` ${aliasRelationsName}: ${physicalRelationsName}`);
617
659
  }
618
660
  }
@@ -639,8 +681,8 @@ export interface GenerateSchemaOptions {
639
681
  /** Module to import from */
640
682
  from: string;
641
683
  };
642
- /** Optional mapper factory for creating table name mappers with custom sanitization */
643
- mapperFactory?: (namespace: string | undefined) => TableNameMapper | undefined;
684
+ /** Optional naming strategy override for physical names */
685
+ namingStrategy?: SqlNamingStrategy;
644
686
  }
645
687
 
646
688
  /**
@@ -649,35 +691,45 @@ export interface GenerateSchemaOptions {
649
691
  /**
650
692
  * Generate a schema file from one or more fragments with automatic de-duplication
651
693
  */
652
- export function generateSchema(
653
- fragments: { namespace: string; schema: AnySchema }[],
654
- provider: SupportedProvider,
694
+ export function generateDrizzleSchema(
695
+ fragments: { namespace: string | null; schema: AnySchema }[],
696
+ provider: SupportedDatabase,
655
697
  options?: GenerateSchemaOptions,
656
698
  ): string {
657
699
  const ctx = createContext(provider, options?.idGeneratorImport);
658
700
  const customTypes: string[] = [];
659
701
  const sections: string[] = [];
660
- const getMapper =
661
- options?.mapperFactory ||
662
- ((ns: string | undefined) => (ns ? createTableNameMapper(ns, true) : undefined));
702
+ const namingStrategy = options?.namingStrategy ?? defaultNamingStrategyForDatabase(provider);
663
703
 
664
704
  for (const { schema, namespace } of fragments) {
665
705
  const fragmentTables: string[] = [];
666
- const mapper = getMapper(namespace);
706
+ const resolver = createNamingResolver(schema, namespace, namingStrategy);
707
+ const schemaName = resolver.getSchemaName();
708
+ const schemaRef =
709
+ ctx.provider === "postgresql" && schemaName
710
+ ? `schema_${sanitizeNamespace(schemaName)}`
711
+ : undefined;
667
712
 
668
713
  // Add section header
669
714
  fragmentTables.push("");
670
715
  fragmentTables.push(
671
716
  "// ============================================================================",
672
717
  );
673
- fragmentTables.push(`// Fragment: ${namespace}`);
718
+ const namespaceLabel = namespace ?? "(none)";
719
+ fragmentTables.push(`// Fragment: ${namespaceLabel}`);
674
720
  fragmentTables.push(
675
721
  "// ============================================================================",
676
722
  );
677
723
 
724
+ if (schemaRef && schemaName) {
725
+ ctx.imports.addImport("pgSchema", ctx.importSource);
726
+ fragmentTables.push("");
727
+ fragmentTables.push(`const ${schemaRef} = pgSchema("${schemaName}");`);
728
+ }
729
+
678
730
  // Generate tables for this fragment
679
731
  for (const table of Object.values(schema.tables)) {
680
- const tableCode = generateTable(ctx, table, customTypes, namespace, mapper);
732
+ const tableCode = generateTable(ctx, table, customTypes, namespace, resolver, schemaRef);
681
733
  fragmentTables.push("");
682
734
  fragmentTables.push(tableCode);
683
735
  }
@@ -704,7 +756,7 @@ export function generateSchema(
704
756
  table,
705
757
  namespace,
706
758
  inverseRelations.get(table.name),
707
- mapper,
759
+ resolver,
708
760
  );
709
761
  if (relationCode) {
710
762
  fragmentTables.push("");
@@ -713,12 +765,10 @@ export function generateSchema(
713
765
  }
714
766
  }
715
767
 
716
- // Generate schema export object (skip for empty namespace to avoid duplicate _schema exports)
717
- if (namespace !== "") {
768
+ // Generate schema export object (skip for internal fragment to avoid duplicate _schema exports)
769
+ if (!(namespace === null && schema.name === internalSchema.name)) {
718
770
  fragmentTables.push("");
719
- fragmentTables.push(
720
- generateFragmentSchemaExport(schema, namespace, tablesWithRelations, mapper),
721
- );
771
+ fragmentTables.push(generateFragmentSchemaExport(schema, namespace, tablesWithRelations));
722
772
  }
723
773
 
724
774
  sections.push(...fragmentTables);