uql-orm 0.9.5 → 0.10.2

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 (681) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +3 -2
  3. package/dist/browser/http/bus.d.ts +4 -0
  4. package/dist/browser/http/bus.d.ts.map +1 -0
  5. package/dist/browser/http/bus.js +14 -0
  6. package/dist/browser/http/bus.js.map +1 -0
  7. package/dist/browser/http/http.d.ts +22 -0
  8. package/dist/browser/http/http.d.ts.map +1 -0
  9. package/dist/browser/http/http.js +70 -0
  10. package/dist/browser/http/http.js.map +1 -0
  11. package/dist/browser/http/index.d.ts +3 -0
  12. package/dist/browser/http/index.d.ts.map +1 -0
  13. package/dist/browser/http/index.js +3 -0
  14. package/dist/browser/http/index.js.map +1 -0
  15. package/dist/browser/index.d.ts +5 -0
  16. package/dist/browser/index.d.ts.map +1 -0
  17. package/dist/browser/index.js +5 -0
  18. package/dist/browser/index.js.map +1 -0
  19. package/dist/browser/options.d.ts +5 -0
  20. package/dist/browser/options.d.ts.map +1 -0
  21. package/dist/browser/options.js +14 -0
  22. package/dist/browser/options.js.map +1 -0
  23. package/dist/browser/querier/httpQuerier.d.ts +38 -0
  24. package/dist/browser/querier/httpQuerier.d.ts.map +1 -0
  25. package/dist/browser/querier/httpQuerier.js +83 -0
  26. package/dist/browser/querier/httpQuerier.js.map +1 -0
  27. package/dist/browser/querier/index.d.ts +2 -0
  28. package/dist/browser/querier/index.d.ts.map +1 -0
  29. package/dist/browser/querier/index.js +2 -0
  30. package/dist/browser/querier/index.js.map +1 -0
  31. package/dist/browser/type/clientQuerier.d.ts +28 -0
  32. package/dist/browser/type/clientQuerier.d.ts.map +1 -0
  33. package/dist/browser/type/clientQuerier.js +2 -0
  34. package/dist/browser/type/clientQuerier.js.map +1 -0
  35. package/dist/browser/type/clientQuerierPool.d.ts +5 -0
  36. package/dist/browser/type/clientQuerierPool.d.ts.map +1 -0
  37. package/dist/browser/type/clientQuerierPool.js +2 -0
  38. package/dist/browser/type/clientQuerierPool.js.map +1 -0
  39. package/dist/browser/type/index.d.ts +4 -0
  40. package/dist/browser/type/index.d.ts.map +1 -0
  41. package/dist/browser/type/index.js +4 -0
  42. package/dist/browser/type/index.js.map +1 -0
  43. package/dist/browser/type/request.d.ts +28 -0
  44. package/dist/browser/type/request.d.ts.map +1 -0
  45. package/dist/browser/type/request.js +2 -0
  46. package/dist/browser/type/request.js.map +1 -0
  47. package/dist/browser/uql-browser.min.js +2 -7029
  48. package/dist/browser/uql-browser.min.js.map +17 -1
  49. package/dist/bunSql/bunSql.util.d.ts +30 -0
  50. package/dist/bunSql/bunSql.util.d.ts.map +1 -0
  51. package/dist/bunSql/bunSql.util.js +101 -0
  52. package/dist/bunSql/bunSql.util.js.map +1 -0
  53. package/dist/bunSql/bunSqlPostgresDialect.d.ts +12 -0
  54. package/dist/bunSql/bunSqlPostgresDialect.d.ts.map +1 -0
  55. package/dist/bunSql/bunSqlPostgresDialect.js +21 -0
  56. package/dist/bunSql/bunSqlPostgresDialect.js.map +1 -0
  57. package/dist/bunSql/bunSqlQuerier.d.ts +14 -0
  58. package/dist/bunSql/bunSqlQuerier.d.ts.map +1 -0
  59. package/dist/bunSql/bunSqlQuerier.js +37 -0
  60. package/dist/bunSql/bunSqlQuerier.js.map +1 -0
  61. package/dist/bunSql/bunSqlQuerierPool.d.ts +19 -0
  62. package/dist/bunSql/bunSqlQuerierPool.d.ts.map +1 -0
  63. package/dist/bunSql/bunSqlQuerierPool.js +58 -0
  64. package/dist/bunSql/bunSqlQuerierPool.js.map +1 -0
  65. package/dist/bunSql/bunSqliteDialect.d.ts +7 -0
  66. package/dist/bunSql/bunSqliteDialect.d.ts.map +1 -0
  67. package/dist/bunSql/bunSqliteDialect.js +7 -0
  68. package/dist/bunSql/bunSqliteDialect.js.map +1 -0
  69. package/dist/bunSql/index.d.ts +5 -0
  70. package/dist/bunSql/index.d.ts.map +1 -0
  71. package/dist/bunSql/index.js +5 -0
  72. package/dist/bunSql/index.js.map +1 -0
  73. package/dist/cockroachdb/cockroachDialect.d.ts +15 -0
  74. package/dist/cockroachdb/cockroachDialect.d.ts.map +1 -0
  75. package/dist/cockroachdb/cockroachDialect.js +14 -0
  76. package/dist/cockroachdb/cockroachDialect.js.map +1 -0
  77. package/dist/cockroachdb/crdbQuerier.d.ts +9 -0
  78. package/dist/cockroachdb/crdbQuerier.d.ts.map +1 -0
  79. package/dist/cockroachdb/crdbQuerier.js +7 -0
  80. package/dist/cockroachdb/crdbQuerier.js.map +1 -0
  81. package/dist/cockroachdb/crdbQuerierPool.d.ts +14 -0
  82. package/dist/cockroachdb/crdbQuerierPool.d.ts.map +1 -0
  83. package/dist/cockroachdb/crdbQuerierPool.js +16 -0
  84. package/dist/cockroachdb/crdbQuerierPool.js.map +1 -0
  85. package/dist/cockroachdb/index.d.ts +4 -0
  86. package/dist/cockroachdb/index.d.ts.map +1 -0
  87. package/dist/cockroachdb/index.js +4 -0
  88. package/dist/cockroachdb/index.js.map +1 -0
  89. package/dist/d1/d1Querier.d.ts +46 -0
  90. package/dist/d1/d1Querier.d.ts.map +1 -0
  91. package/dist/d1/d1Querier.js +30 -0
  92. package/dist/d1/d1Querier.js.map +1 -0
  93. package/dist/d1/d1QuerierPool.d.ts +11 -0
  94. package/dist/d1/d1QuerierPool.d.ts.map +1 -0
  95. package/dist/d1/d1QuerierPool.js +17 -0
  96. package/dist/d1/d1QuerierPool.js.map +1 -0
  97. package/dist/d1/d1SqliteDialect.d.ts +10 -0
  98. package/dist/d1/d1SqliteDialect.d.ts.map +1 -0
  99. package/dist/d1/d1SqliteDialect.js +10 -0
  100. package/dist/d1/d1SqliteDialect.js.map +1 -0
  101. package/dist/d1/index.d.ts +4 -0
  102. package/dist/d1/index.d.ts.map +1 -0
  103. package/dist/d1/index.js +4 -0
  104. package/dist/d1/index.js.map +1 -0
  105. package/dist/dialect/abstractDialect.d.ts +32 -0
  106. package/dist/dialect/abstractDialect.d.ts.map +1 -0
  107. package/dist/dialect/abstractDialect.js +39 -0
  108. package/dist/dialect/abstractDialect.js.map +1 -0
  109. package/dist/dialect/abstractSqlDialect.d.ts +233 -0
  110. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -0
  111. package/dist/dialect/abstractSqlDialect.js +1332 -0
  112. package/dist/dialect/abstractSqlDialect.js.map +1 -0
  113. package/dist/dialect/index.d.ts +9 -0
  114. package/dist/dialect/index.d.ts.map +1 -0
  115. package/dist/dialect/index.js +9 -0
  116. package/dist/dialect/index.js.map +1 -0
  117. package/dist/dialect/jsonArrayElemMatchUtils.d.ts +10 -0
  118. package/dist/dialect/jsonArrayElemMatchUtils.d.ts.map +1 -0
  119. package/dist/dialect/jsonArrayElemMatchUtils.js +24 -0
  120. package/dist/dialect/jsonArrayElemMatchUtils.js.map +1 -0
  121. package/dist/dialect/mysqlLikeSqlDialect.d.ts +36 -0
  122. package/dist/dialect/mysqlLikeSqlDialect.d.ts.map +1 -0
  123. package/dist/dialect/mysqlLikeSqlDialect.js +84 -0
  124. package/dist/dialect/mysqlLikeSqlDialect.js.map +1 -0
  125. package/dist/dialect/queryContext.d.ts +49 -0
  126. package/dist/dialect/queryContext.d.ts.map +1 -0
  127. package/dist/dialect/queryContext.js +65 -0
  128. package/dist/dialect/queryContext.js.map +1 -0
  129. package/dist/entity/decorator/entity.d.ts +3 -0
  130. package/dist/entity/decorator/entity.d.ts.map +1 -0
  131. package/dist/entity/decorator/entity.js +7 -0
  132. package/dist/entity/decorator/entity.js.map +1 -0
  133. package/dist/entity/decorator/field.d.ts +3 -0
  134. package/dist/entity/decorator/field.d.ts.map +1 -0
  135. package/dist/entity/decorator/field.js +8 -0
  136. package/dist/entity/decorator/field.js.map +1 -0
  137. package/dist/entity/decorator/hook.d.ts +8 -0
  138. package/dist/entity/decorator/hook.d.ts.map +1 -0
  139. package/dist/entity/decorator/hook.js +15 -0
  140. package/dist/entity/decorator/hook.js.map +1 -0
  141. package/dist/entity/decorator/id.d.ts +3 -0
  142. package/dist/entity/decorator/id.d.ts.map +1 -0
  143. package/dist/entity/decorator/id.js +8 -0
  144. package/dist/entity/decorator/id.js.map +1 -0
  145. package/dist/entity/decorator/index-decorator.d.ts +37 -0
  146. package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
  147. package/dist/entity/decorator/index-decorator.js +27 -0
  148. package/dist/entity/decorator/index-decorator.js.map +1 -0
  149. package/dist/entity/decorator/index.d.ts +8 -0
  150. package/dist/entity/decorator/index.d.ts.map +1 -0
  151. package/dist/entity/decorator/index.js +8 -0
  152. package/dist/entity/decorator/index.js.map +1 -0
  153. package/dist/entity/decorator/relation.d.ts +9 -0
  154. package/dist/entity/decorator/relation.d.ts.map +1 -0
  155. package/dist/entity/decorator/relation.js +20 -0
  156. package/dist/entity/decorator/relation.js.map +1 -0
  157. package/dist/entity/index.d.ts +2 -0
  158. package/dist/entity/index.d.ts.map +1 -0
  159. package/dist/entity/index.js +2 -0
  160. package/dist/entity/index.js.map +1 -0
  161. package/dist/entity/metadata/definition.d.ts +16 -0
  162. package/dist/entity/metadata/definition.d.ts.map +1 -0
  163. package/dist/entity/metadata/definition.js +311 -0
  164. package/dist/entity/metadata/definition.js.map +1 -0
  165. package/dist/entity/test-helpers.d.ts +4 -0
  166. package/dist/entity/test-helpers.d.ts.map +1 -0
  167. package/dist/entity/test-helpers.js +15 -0
  168. package/dist/entity/test-helpers.js.map +1 -0
  169. package/dist/express/index.d.ts +2 -0
  170. package/dist/express/index.d.ts.map +1 -0
  171. package/dist/express/index.js +2 -0
  172. package/dist/express/index.js.map +1 -0
  173. package/dist/express/querierMiddleware.d.ts +12 -0
  174. package/dist/express/querierMiddleware.d.ts.map +1 -0
  175. package/dist/express/querierMiddleware.js +40 -0
  176. package/dist/express/querierMiddleware.js.map +1 -0
  177. package/dist/http/contract.d.ts +99 -0
  178. package/dist/http/contract.d.ts.map +1 -0
  179. package/dist/http/contract.js +72 -0
  180. package/dist/http/contract.js.map +1 -0
  181. package/dist/http/fetchHandler.d.ts +14 -0
  182. package/dist/http/fetchHandler.d.ts.map +1 -0
  183. package/dist/http/fetchHandler.js +63 -0
  184. package/dist/http/fetchHandler.js.map +1 -0
  185. package/dist/http/handler.d.ts +77 -0
  186. package/dist/http/handler.d.ts.map +1 -0
  187. package/dist/http/handler.js +172 -0
  188. package/dist/http/handler.js.map +1 -0
  189. package/dist/http/index.d.ts +5 -0
  190. package/dist/http/index.d.ts.map +1 -0
  191. package/dist/http/index.js +5 -0
  192. package/dist/http/index.js.map +1 -0
  193. package/dist/http/query.d.ts +12 -0
  194. package/dist/http/query.d.ts.map +1 -0
  195. package/dist/http/query.js +49 -0
  196. package/dist/http/query.js.map +1 -0
  197. package/dist/index.d.ts +8 -0
  198. package/dist/index.d.ts.map +1 -0
  199. package/dist/index.js +8 -0
  200. package/dist/index.js.map +1 -0
  201. package/dist/libsql/index.d.ts +4 -0
  202. package/dist/libsql/index.d.ts.map +1 -0
  203. package/dist/libsql/index.js +4 -0
  204. package/dist/libsql/index.js.map +1 -0
  205. package/dist/libsql/libsqlDialect.d.ts +10 -0
  206. package/dist/libsql/libsqlDialect.d.ts.map +1 -0
  207. package/dist/libsql/libsqlDialect.js +10 -0
  208. package/dist/libsql/libsqlDialect.js.map +1 -0
  209. package/dist/libsql/libsqlQuerier.d.ts +24 -0
  210. package/dist/libsql/libsqlQuerier.d.ts.map +1 -0
  211. package/dist/libsql/libsqlQuerier.js +76 -0
  212. package/dist/libsql/libsqlQuerier.js.map +1 -0
  213. package/dist/libsql/libsqlQuerierPool.d.ts +20 -0
  214. package/dist/libsql/libsqlQuerierPool.d.ts.map +1 -0
  215. package/dist/libsql/libsqlQuerierPool.js +40 -0
  216. package/dist/libsql/libsqlQuerierPool.js.map +1 -0
  217. package/dist/maria/index.d.ts +4 -0
  218. package/dist/maria/index.d.ts.map +1 -0
  219. package/dist/maria/index.js +4 -0
  220. package/dist/maria/index.js.map +1 -0
  221. package/dist/maria/mariaDialect.d.ts +16 -0
  222. package/dist/maria/mariaDialect.d.ts.map +1 -0
  223. package/dist/maria/mariaDialect.js +56 -0
  224. package/dist/maria/mariaDialect.js.map +1 -0
  225. package/dist/maria/mariadbQuerier.d.ts +12 -0
  226. package/dist/maria/mariadbQuerier.d.ts.map +1 -0
  227. package/dist/maria/mariadbQuerier.js +31 -0
  228. package/dist/maria/mariadbQuerier.js.map +1 -0
  229. package/dist/maria/mariadbQuerierPool.d.ts +14 -0
  230. package/dist/maria/mariadbQuerierPool.d.ts.map +1 -0
  231. package/dist/maria/mariadbQuerierPool.js +26 -0
  232. package/dist/maria/mariadbQuerierPool.js.map +1 -0
  233. package/dist/migrate/acquireQuerierForMigrations.d.ts +9 -0
  234. package/dist/migrate/acquireQuerierForMigrations.d.ts.map +1 -0
  235. package/dist/migrate/acquireQuerierForMigrations.js +10 -0
  236. package/dist/migrate/acquireQuerierForMigrations.js.map +1 -0
  237. package/dist/migrate/assertCliConfig.d.ts +6 -0
  238. package/dist/migrate/assertCliConfig.d.ts.map +1 -0
  239. package/dist/migrate/assertCliConfig.js +31 -0
  240. package/dist/migrate/assertCliConfig.js.map +1 -0
  241. package/dist/migrate/bin.d.ts +3 -0
  242. package/dist/migrate/bin.d.ts.map +1 -0
  243. package/dist/migrate/bin.js +7 -0
  244. package/dist/migrate/bin.js.map +1 -0
  245. package/dist/migrate/builder/columnBuilder.d.ts +79 -0
  246. package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
  247. package/dist/migrate/builder/columnBuilder.js +159 -0
  248. package/dist/migrate/builder/columnBuilder.js.map +1 -0
  249. package/dist/migrate/builder/expressions.d.ts +87 -0
  250. package/dist/migrate/builder/expressions.d.ts.map +1 -0
  251. package/dist/migrate/builder/expressions.js +150 -0
  252. package/dist/migrate/builder/expressions.js.map +1 -0
  253. package/dist/migrate/builder/index.d.ts +6 -0
  254. package/dist/migrate/builder/index.d.ts.map +1 -0
  255. package/dist/migrate/builder/index.js +6 -0
  256. package/dist/migrate/builder/index.js.map +1 -0
  257. package/dist/migrate/builder/migrationBuilder.d.ts +110 -0
  258. package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
  259. package/dist/migrate/builder/migrationBuilder.js +470 -0
  260. package/dist/migrate/builder/migrationBuilder.js.map +1 -0
  261. package/dist/migrate/builder/splitSqlStatements.d.ts +18 -0
  262. package/dist/migrate/builder/splitSqlStatements.d.ts.map +1 -0
  263. package/dist/migrate/builder/splitSqlStatements.js +44 -0
  264. package/dist/migrate/builder/splitSqlStatements.js.map +1 -0
  265. package/dist/migrate/builder/tableBuilder.d.ts +51 -0
  266. package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
  267. package/dist/migrate/builder/tableBuilder.js +291 -0
  268. package/dist/migrate/builder/tableBuilder.js.map +1 -0
  269. package/dist/migrate/builder/types.d.ts +466 -0
  270. package/dist/migrate/builder/types.d.ts.map +1 -0
  271. package/dist/migrate/builder/types.js +8 -0
  272. package/dist/migrate/builder/types.js.map +1 -0
  273. package/dist/migrate/cli-config.d.ts +3 -0
  274. package/dist/migrate/cli-config.d.ts.map +1 -0
  275. package/dist/migrate/cli-config.js +35 -0
  276. package/dist/migrate/cli-config.js.map +1 -0
  277. package/dist/migrate/cli.d.ts +20 -0
  278. package/dist/migrate/cli.d.ts.map +1 -0
  279. package/dist/migrate/cli.js +398 -0
  280. package/dist/migrate/cli.js.map +1 -0
  281. package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
  282. package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
  283. package/dist/migrate/codegen/entityCodeGenerator.js +405 -0
  284. package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
  285. package/dist/migrate/codegen/entityMerger.d.ts +115 -0
  286. package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
  287. package/dist/migrate/codegen/entityMerger.js +294 -0
  288. package/dist/migrate/codegen/entityMerger.js.map +1 -0
  289. package/dist/migrate/codegen/index.d.ts +11 -0
  290. package/dist/migrate/codegen/index.d.ts.map +1 -0
  291. package/dist/migrate/codegen/index.js +15 -0
  292. package/dist/migrate/codegen/index.js.map +1 -0
  293. package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
  294. package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
  295. package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
  296. package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
  297. package/dist/migrate/codegen/migrationFile.d.ts +29 -0
  298. package/dist/migrate/codegen/migrationFile.d.ts.map +1 -0
  299. package/dist/migrate/codegen/migrationFile.js +48 -0
  300. package/dist/migrate/codegen/migrationFile.js.map +1 -0
  301. package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
  302. package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
  303. package/dist/migrate/codegen/smartRelationDetector.js +135 -0
  304. package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
  305. package/dist/migrate/drift/driftDetector.d.ts +80 -0
  306. package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
  307. package/dist/migrate/drift/driftDetector.js +247 -0
  308. package/dist/migrate/drift/driftDetector.js.map +1 -0
  309. package/dist/migrate/drift/index.d.ts +7 -0
  310. package/dist/migrate/drift/index.d.ts.map +1 -0
  311. package/dist/migrate/drift/index.js +7 -0
  312. package/dist/migrate/drift/index.js.map +1 -0
  313. package/dist/migrate/generator/index.d.ts +3 -0
  314. package/dist/migrate/generator/index.d.ts.map +1 -0
  315. package/dist/migrate/generator/index.js +3 -0
  316. package/dist/migrate/generator/index.js.map +1 -0
  317. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +48 -0
  318. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -0
  319. package/dist/migrate/generator/mongoSchemaGenerator.js +188 -0
  320. package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -0
  321. package/dist/migrate/index.d.ts +16 -0
  322. package/dist/migrate/index.d.ts.map +1 -0
  323. package/dist/migrate/index.js +23 -0
  324. package/dist/migrate/index.js.map +1 -0
  325. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts +77 -0
  326. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.d.ts.map +1 -0
  327. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js +156 -0
  328. package/dist/migrate/introspection/abstractSqlSchemaIntrospector.js.map +1 -0
  329. package/dist/migrate/introspection/baseSqlIntrospector.d.ts +26 -0
  330. package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
  331. package/dist/migrate/introspection/baseSqlIntrospector.js +132 -0
  332. package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
  333. package/dist/migrate/introspection/index.d.ts +6 -0
  334. package/dist/migrate/introspection/index.d.ts.map +1 -0
  335. package/dist/migrate/introspection/index.js +6 -0
  336. package/dist/migrate/introspection/index.js.map +1 -0
  337. package/dist/migrate/introspection/mongoIntrospector.d.ts +15 -0
  338. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -0
  339. package/dist/migrate/introspection/mongoIntrospector.js +100 -0
  340. package/dist/migrate/introspection/mongoIntrospector.js.map +1 -0
  341. package/dist/migrate/introspection/mysqlIntrospector.d.ts +59 -0
  342. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -0
  343. package/dist/migrate/introspection/mysqlIntrospector.js +175 -0
  344. package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -0
  345. package/dist/migrate/introspection/postgresIntrospector.d.ts +55 -0
  346. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -0
  347. package/dist/migrate/introspection/postgresIntrospector.js +226 -0
  348. package/dist/migrate/introspection/postgresIntrospector.js.map +1 -0
  349. package/dist/migrate/introspection/sqliteIntrospector.d.ts +60 -0
  350. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -0
  351. package/dist/migrate/introspection/sqliteIntrospector.js +188 -0
  352. package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -0
  353. package/dist/migrate/migrator.d.ts +168 -0
  354. package/dist/migrate/migrator.d.ts.map +1 -0
  355. package/dist/migrate/migrator.js +614 -0
  356. package/dist/migrate/migrator.js.map +1 -0
  357. package/dist/migrate/schemaGenerator.d.ts +142 -0
  358. package/dist/migrate/schemaGenerator.d.ts.map +1 -0
  359. package/dist/migrate/schemaGenerator.js +693 -0
  360. package/dist/migrate/schemaGenerator.js.map +1 -0
  361. package/dist/migrate/schemaGeneratorAsync.d.ts +9 -0
  362. package/dist/migrate/schemaGeneratorAsync.d.ts.map +1 -0
  363. package/dist/migrate/schemaGeneratorAsync.js +13 -0
  364. package/dist/migrate/schemaGeneratorAsync.js.map +1 -0
  365. package/dist/migrate/storage/databaseStorage.d.ts +25 -0
  366. package/dist/migrate/storage/databaseStorage.d.ts.map +1 -0
  367. package/dist/migrate/storage/databaseStorage.js +78 -0
  368. package/dist/migrate/storage/databaseStorage.js.map +1 -0
  369. package/dist/migrate/storage/index.d.ts +3 -0
  370. package/dist/migrate/storage/index.d.ts.map +1 -0
  371. package/dist/migrate/storage/index.js +3 -0
  372. package/dist/migrate/storage/index.js.map +1 -0
  373. package/dist/migrate/storage/jsonStorage.d.ts +16 -0
  374. package/dist/migrate/storage/jsonStorage.d.ts.map +1 -0
  375. package/dist/migrate/storage/jsonStorage.js +43 -0
  376. package/dist/migrate/storage/jsonStorage.js.map +1 -0
  377. package/dist/migrate/sync/index.d.ts +7 -0
  378. package/dist/migrate/sync/index.d.ts.map +1 -0
  379. package/dist/migrate/sync/index.js +7 -0
  380. package/dist/migrate/sync/index.js.map +1 -0
  381. package/dist/migrate/sync/schemaSync.d.ts +132 -0
  382. package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
  383. package/dist/migrate/sync/schemaSync.js +260 -0
  384. package/dist/migrate/sync/schemaSync.js.map +1 -0
  385. package/dist/mongo/index.d.ts +6 -0
  386. package/dist/mongo/index.d.ts.map +1 -0
  387. package/dist/mongo/index.js +6 -0
  388. package/dist/mongo/index.js.map +1 -0
  389. package/dist/mongo/mongoDialect.d.ts +83 -0
  390. package/dist/mongo/mongoDialect.d.ts.map +1 -0
  391. package/dist/mongo/mongoDialect.js +418 -0
  392. package/dist/mongo/mongoDialect.js.map +1 -0
  393. package/dist/mongo/mongodbNativeDialect.d.ts +10 -0
  394. package/dist/mongo/mongodbNativeDialect.d.ts.map +1 -0
  395. package/dist/mongo/mongodbNativeDialect.js +10 -0
  396. package/dist/mongo/mongodbNativeDialect.js.map +1 -0
  397. package/dist/mongo/mongodbQuerier.d.ts +46 -0
  398. package/dist/mongo/mongodbQuerier.d.ts.map +1 -0
  399. package/dist/mongo/mongodbQuerier.js +344 -0
  400. package/dist/mongo/mongodbQuerier.js.map +1 -0
  401. package/dist/mongo/mongodbQuerierPool.d.ts +12 -0
  402. package/dist/mongo/mongodbQuerierPool.d.ts.map +1 -0
  403. package/dist/mongo/mongodbQuerierPool.js +19 -0
  404. package/dist/mongo/mongodbQuerierPool.js.map +1 -0
  405. package/dist/mysql/index.d.ts +5 -0
  406. package/dist/mysql/index.d.ts.map +1 -0
  407. package/dist/mysql/index.js +5 -0
  408. package/dist/mysql/index.js.map +1 -0
  409. package/dist/mysql/mysql2Dialect.d.ts +10 -0
  410. package/dist/mysql/mysql2Dialect.d.ts.map +1 -0
  411. package/dist/mysql/mysql2Dialect.js +10 -0
  412. package/dist/mysql/mysql2Dialect.js.map +1 -0
  413. package/dist/mysql/mysql2Querier.d.ts +12 -0
  414. package/dist/mysql/mysql2Querier.d.ts.map +1 -0
  415. package/dist/mysql/mysql2Querier.js +34 -0
  416. package/dist/mysql/mysql2Querier.js.map +1 -0
  417. package/dist/mysql/mysql2QuerierPool.d.ts +12 -0
  418. package/dist/mysql/mysql2QuerierPool.d.ts.map +1 -0
  419. package/dist/mysql/mysql2QuerierPool.js +18 -0
  420. package/dist/mysql/mysql2QuerierPool.js.map +1 -0
  421. package/dist/mysql/mysqlDialect.d.ts +6 -0
  422. package/dist/mysql/mysqlDialect.d.ts.map +1 -0
  423. package/dist/mysql/mysqlDialect.js +6 -0
  424. package/dist/mysql/mysqlDialect.js.map +1 -0
  425. package/dist/namingStrategy/defaultNamingStrategy.d.ts +10 -0
  426. package/dist/namingStrategy/defaultNamingStrategy.d.ts.map +1 -0
  427. package/dist/namingStrategy/defaultNamingStrategy.js +15 -0
  428. package/dist/namingStrategy/defaultNamingStrategy.js.map +1 -0
  429. package/dist/namingStrategy/index.d.ts +3 -0
  430. package/dist/namingStrategy/index.d.ts.map +1 -0
  431. package/dist/namingStrategy/index.js +3 -0
  432. package/dist/namingStrategy/index.js.map +1 -0
  433. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts +9 -0
  434. package/dist/namingStrategy/snakeCaseNamingStrategy.d.ts.map +1 -0
  435. package/dist/namingStrategy/snakeCaseNamingStrategy.js +14 -0
  436. package/dist/namingStrategy/snakeCaseNamingStrategy.js.map +1 -0
  437. package/dist/neon/index.d.ts +4 -0
  438. package/dist/neon/index.d.ts.map +1 -0
  439. package/dist/neon/index.js +4 -0
  440. package/dist/neon/index.js.map +1 -0
  441. package/dist/neon/neonDialect.d.ts +11 -0
  442. package/dist/neon/neonDialect.d.ts.map +1 -0
  443. package/dist/neon/neonDialect.js +11 -0
  444. package/dist/neon/neonDialect.js.map +1 -0
  445. package/dist/neon/neonQuerier.d.ts +6 -0
  446. package/dist/neon/neonQuerier.d.ts.map +1 -0
  447. package/dist/neon/neonQuerier.js +4 -0
  448. package/dist/neon/neonQuerier.js.map +1 -0
  449. package/dist/neon/neonQuerierPool.d.ts +11 -0
  450. package/dist/neon/neonQuerierPool.d.ts.map +1 -0
  451. package/dist/neon/neonQuerierPool.js +13 -0
  452. package/dist/neon/neonQuerierPool.js.map +1 -0
  453. package/dist/nestjs/index.d.ts +2 -0
  454. package/dist/nestjs/index.d.ts.map +1 -0
  455. package/dist/nestjs/index.js +2 -0
  456. package/dist/nestjs/index.js.map +1 -0
  457. package/dist/nestjs/uqlModule.d.ts +29 -0
  458. package/dist/nestjs/uqlModule.d.ts.map +1 -0
  459. package/dist/nestjs/uqlModule.js +42 -0
  460. package/dist/nestjs/uqlModule.js.map +1 -0
  461. package/dist/options.d.ts +5 -0
  462. package/dist/options.d.ts.map +1 -0
  463. package/dist/options.js +14 -0
  464. package/dist/options.js.map +1 -0
  465. package/dist/postgres/abstractPgQuerier.d.ts +24 -0
  466. package/dist/postgres/abstractPgQuerier.d.ts.map +1 -0
  467. package/dist/postgres/abstractPgQuerier.js +33 -0
  468. package/dist/postgres/abstractPgQuerier.js.map +1 -0
  469. package/dist/postgres/abstractPgQuerierPool.d.ts +22 -0
  470. package/dist/postgres/abstractPgQuerierPool.d.ts.map +1 -0
  471. package/dist/postgres/abstractPgQuerierPool.js +21 -0
  472. package/dist/postgres/abstractPgQuerierPool.js.map +1 -0
  473. package/dist/postgres/index.d.ts +6 -0
  474. package/dist/postgres/index.d.ts.map +1 -0
  475. package/dist/postgres/index.js +6 -0
  476. package/dist/postgres/index.js.map +1 -0
  477. package/dist/postgres/pgDialect.d.ts +13 -0
  478. package/dist/postgres/pgDialect.d.ts.map +1 -0
  479. package/dist/postgres/pgDialect.js +14 -0
  480. package/dist/postgres/pgDialect.js.map +1 -0
  481. package/dist/postgres/pgQuerier.d.ts +6 -0
  482. package/dist/postgres/pgQuerier.d.ts.map +1 -0
  483. package/dist/postgres/pgQuerier.js +4 -0
  484. package/dist/postgres/pgQuerier.js.map +1 -0
  485. package/dist/postgres/pgQuerierPool.d.ts +11 -0
  486. package/dist/postgres/pgQuerierPool.d.ts.map +1 -0
  487. package/dist/postgres/pgQuerierPool.js +15 -0
  488. package/dist/postgres/pgQuerierPool.js.map +1 -0
  489. package/dist/postgres/postgresDialect.d.ts +48 -0
  490. package/dist/postgres/postgresDialect.d.ts.map +1 -0
  491. package/dist/postgres/postgresDialect.js +222 -0
  492. package/dist/postgres/postgresDialect.js.map +1 -0
  493. package/dist/postgres/postgresWireDriverCapabilities.d.ts +15 -0
  494. package/dist/postgres/postgresWireDriverCapabilities.d.ts.map +1 -0
  495. package/dist/postgres/postgresWireDriverCapabilities.js +15 -0
  496. package/dist/postgres/postgresWireDriverCapabilities.js.map +1 -0
  497. package/dist/querier/abstractPoolQuerier.d.ts +14 -0
  498. package/dist/querier/abstractPoolQuerier.d.ts.map +1 -0
  499. package/dist/querier/abstractPoolQuerier.js +31 -0
  500. package/dist/querier/abstractPoolQuerier.js.map +1 -0
  501. package/dist/querier/abstractQuerier.d.ts +138 -0
  502. package/dist/querier/abstractQuerier.d.ts.map +1 -0
  503. package/dist/querier/abstractQuerier.js +426 -0
  504. package/dist/querier/abstractQuerier.js.map +1 -0
  505. package/dist/querier/abstractQuerierPool.d.ts +27 -0
  506. package/dist/querier/abstractQuerierPool.d.ts.map +1 -0
  507. package/dist/querier/abstractQuerierPool.js +31 -0
  508. package/dist/querier/abstractQuerierPool.js.map +1 -0
  509. package/dist/querier/abstractSqlQuerier.d.ts +53 -0
  510. package/dist/querier/abstractSqlQuerier.d.ts.map +1 -0
  511. package/dist/querier/abstractSqlQuerier.js +256 -0
  512. package/dist/querier/abstractSqlQuerier.js.map +1 -0
  513. package/dist/querier/decorator/index.d.ts +5 -0
  514. package/dist/querier/decorator/index.d.ts.map +1 -0
  515. package/dist/querier/decorator/index.js +5 -0
  516. package/dist/querier/decorator/index.js.map +1 -0
  517. package/dist/querier/decorator/injectQuerier.d.ts +4 -0
  518. package/dist/querier/decorator/injectQuerier.d.ts.map +1 -0
  519. package/dist/querier/decorator/injectQuerier.js +34 -0
  520. package/dist/querier/decorator/injectQuerier.js.map +1 -0
  521. package/dist/querier/decorator/log.d.ts +7 -0
  522. package/dist/querier/decorator/log.d.ts.map +1 -0
  523. package/dist/querier/decorator/log.js +27 -0
  524. package/dist/querier/decorator/log.js.map +1 -0
  525. package/dist/querier/decorator/serialized.d.ts +7 -0
  526. package/dist/querier/decorator/serialized.d.ts.map +1 -0
  527. package/dist/querier/decorator/serialized.js +14 -0
  528. package/dist/querier/decorator/serialized.js.map +1 -0
  529. package/dist/querier/decorator/transactional.d.ts +7 -0
  530. package/dist/querier/decorator/transactional.d.ts.map +1 -0
  531. package/dist/querier/decorator/transactional.js +49 -0
  532. package/dist/querier/decorator/transactional.js.map +1 -0
  533. package/dist/querier/index.d.ts +5 -0
  534. package/dist/querier/index.d.ts.map +1 -0
  535. package/dist/querier/index.js +5 -0
  536. package/dist/querier/index.js.map +1 -0
  537. package/dist/schema/canonicalType.d.ts +54 -0
  538. package/dist/schema/canonicalType.d.ts.map +1 -0
  539. package/dist/schema/canonicalType.js +571 -0
  540. package/dist/schema/canonicalType.js.map +1 -0
  541. package/dist/schema/index.d.ts +26 -0
  542. package/dist/schema/index.d.ts.map +1 -0
  543. package/dist/schema/index.js +27 -0
  544. package/dist/schema/index.js.map +1 -0
  545. package/dist/schema/schemaAST.d.ts +155 -0
  546. package/dist/schema/schemaAST.d.ts.map +1 -0
  547. package/dist/schema/schemaAST.js +496 -0
  548. package/dist/schema/schemaAST.js.map +1 -0
  549. package/dist/schema/schemaASTBuilder.d.ts +78 -0
  550. package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
  551. package/dist/schema/schemaASTBuilder.js +259 -0
  552. package/dist/schema/schemaASTBuilder.js.map +1 -0
  553. package/dist/schema/schemaASTDiffer.d.ts +84 -0
  554. package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
  555. package/dist/schema/schemaASTDiffer.js +431 -0
  556. package/dist/schema/schemaASTDiffer.js.map +1 -0
  557. package/dist/schema/types.d.ts +348 -0
  558. package/dist/schema/types.d.ts.map +1 -0
  559. package/dist/schema/types.js +11 -0
  560. package/dist/schema/types.js.map +1 -0
  561. package/dist/sqlite/abstractSqliteQuerier.d.ts +4 -0
  562. package/dist/sqlite/abstractSqliteQuerier.d.ts.map +1 -0
  563. package/dist/sqlite/abstractSqliteQuerier.js +4 -0
  564. package/dist/sqlite/abstractSqliteQuerier.js.map +1 -0
  565. package/dist/sqlite/betterSqlite3Dialect.d.ts +10 -0
  566. package/dist/sqlite/betterSqlite3Dialect.d.ts.map +1 -0
  567. package/dist/sqlite/betterSqlite3Dialect.js +10 -0
  568. package/dist/sqlite/betterSqlite3Dialect.js.map +1 -0
  569. package/dist/sqlite/index.d.ts +6 -0
  570. package/dist/sqlite/index.d.ts.map +1 -0
  571. package/dist/sqlite/index.js +6 -0
  572. package/dist/sqlite/index.js.map +1 -0
  573. package/dist/sqlite/sqliteDialect.d.ts +36 -0
  574. package/dist/sqlite/sqliteDialect.d.ts.map +1 -0
  575. package/dist/sqlite/sqliteDialect.js +155 -0
  576. package/dist/sqlite/sqliteDialect.js.map +1 -0
  577. package/dist/sqlite/sqliteQuerier.d.ts +14 -0
  578. package/dist/sqlite/sqliteQuerier.d.ts.map +1 -0
  579. package/dist/sqlite/sqliteQuerier.js +30 -0
  580. package/dist/sqlite/sqliteQuerier.js.map +1 -0
  581. package/dist/sqlite/sqliteQuerierPool.d.ts +14 -0
  582. package/dist/sqlite/sqliteQuerierPool.d.ts.map +1 -0
  583. package/dist/sqlite/sqliteQuerierPool.js +36 -0
  584. package/dist/sqlite/sqliteQuerierPool.js.map +1 -0
  585. package/dist/type/config.d.ts +43 -0
  586. package/dist/type/config.d.ts.map +1 -0
  587. package/dist/type/config.js +2 -0
  588. package/dist/type/config.js.map +1 -0
  589. package/dist/type/entity.d.ts +338 -0
  590. package/dist/type/entity.d.ts.map +1 -0
  591. package/dist/type/entity.js +5 -0
  592. package/dist/type/entity.js.map +1 -0
  593. package/dist/type/index.d.ts +12 -0
  594. package/dist/type/index.d.ts.map +1 -0
  595. package/dist/type/index.js +12 -0
  596. package/dist/type/index.js.map +1 -0
  597. package/dist/type/logger.d.ts +61 -0
  598. package/dist/type/logger.d.ts.map +1 -0
  599. package/dist/type/logger.js +2 -0
  600. package/dist/type/logger.js.map +1 -0
  601. package/dist/type/migration.d.ts +267 -0
  602. package/dist/type/migration.d.ts.map +1 -0
  603. package/dist/type/migration.js +2 -0
  604. package/dist/type/migration.js.map +1 -0
  605. package/dist/type/migratorDialect.d.ts +10 -0
  606. package/dist/type/migratorDialect.d.ts.map +1 -0
  607. package/dist/type/migratorDialect.js +16 -0
  608. package/dist/type/migratorDialect.js.map +1 -0
  609. package/dist/type/namingStrategy.d.ts +18 -0
  610. package/dist/type/namingStrategy.d.ts.map +1 -0
  611. package/dist/type/namingStrategy.js +2 -0
  612. package/dist/type/namingStrategy.js.map +1 -0
  613. package/dist/type/querier.d.ts +162 -0
  614. package/dist/type/querier.d.ts.map +1 -0
  615. package/dist/type/querier.js +11 -0
  616. package/dist/type/querier.js.map +1 -0
  617. package/dist/type/querierPool.d.ts +62 -0
  618. package/dist/type/querierPool.d.ts.map +1 -0
  619. package/dist/type/querierPool.js +2 -0
  620. package/dist/type/querierPool.js.map +1 -0
  621. package/dist/type/query.d.ts +700 -0
  622. package/dist/type/query.d.ts.map +1 -0
  623. package/dist/type/query.js +11 -0
  624. package/dist/type/query.js.map +1 -0
  625. package/dist/type/universalQuerier.d.ts +136 -0
  626. package/dist/type/universalQuerier.d.ts.map +1 -0
  627. package/dist/type/universalQuerier.js +2 -0
  628. package/dist/type/universalQuerier.js.map +1 -0
  629. package/dist/type/utility.d.ts +37 -0
  630. package/dist/type/utility.d.ts.map +1 -0
  631. package/dist/type/utility.js +2 -0
  632. package/dist/type/utility.js.map +1 -0
  633. package/dist/util/ansiSqlLiteral.d.ts +21 -0
  634. package/dist/util/ansiSqlLiteral.d.ts.map +1 -0
  635. package/dist/util/ansiSqlLiteral.js +101 -0
  636. package/dist/util/ansiSqlLiteral.js.map +1 -0
  637. package/dist/util/dialect.util.d.ts +31 -0
  638. package/dist/util/dialect.util.d.ts.map +1 -0
  639. package/dist/util/dialect.util.js +113 -0
  640. package/dist/util/dialect.util.js.map +1 -0
  641. package/dist/util/field.util.d.ts +14 -0
  642. package/dist/util/field.util.d.ts.map +1 -0
  643. package/dist/util/field.util.js +57 -0
  644. package/dist/util/field.util.js.map +1 -0
  645. package/dist/util/hook.util.d.ts +15 -0
  646. package/dist/util/hook.util.d.ts.map +1 -0
  647. package/dist/util/hook.util.js +20 -0
  648. package/dist/util/hook.util.js.map +1 -0
  649. package/dist/util/index.d.ts +10 -0
  650. package/dist/util/index.d.ts.map +1 -0
  651. package/dist/util/index.js +10 -0
  652. package/dist/util/index.js.map +1 -0
  653. package/dist/util/logger.d.ts +51 -0
  654. package/dist/util/logger.d.ts.map +1 -0
  655. package/dist/util/logger.js +144 -0
  656. package/dist/util/logger.js.map +1 -0
  657. package/dist/util/object.util.d.ts +10 -0
  658. package/dist/util/object.util.d.ts.map +1 -0
  659. package/dist/util/object.util.js +29 -0
  660. package/dist/util/object.util.js.map +1 -0
  661. package/dist/util/raw.d.ts +18 -0
  662. package/dist/util/raw.d.ts.map +1 -0
  663. package/dist/util/raw.js +20 -0
  664. package/dist/util/raw.js.map +1 -0
  665. package/dist/util/relationQuery.util.d.ts +25 -0
  666. package/dist/util/relationQuery.util.d.ts.map +1 -0
  667. package/dist/util/relationQuery.util.js +101 -0
  668. package/dist/util/relationQuery.util.js.map +1 -0
  669. package/dist/util/sql.util.d.ts +50 -0
  670. package/dist/util/sql.util.d.ts.map +1 -0
  671. package/dist/util/sql.util.js +141 -0
  672. package/dist/util/sql.util.js.map +1 -0
  673. package/dist/util/string.util.d.ts +29 -0
  674. package/dist/util/string.util.d.ts.map +1 -0
  675. package/dist/util/string.util.js +93 -0
  676. package/dist/util/string.util.js.map +1 -0
  677. package/package.json +17 -10
  678. package/dist/browser/cc-BVTDOeZ_.js +0 -566
  679. package/dist/browser/cc-BVTDOeZ_.js.map +0 -1
  680. package/dist/browser/mongoSchemaGenerator-BT2_u1wI.js +0 -735
  681. package/dist/browser/mongoSchemaGenerator-BT2_u1wI.js.map +0 -1
@@ -0,0 +1,693 @@
1
+ import { AbstractSqlDialect } from '../dialect/index.js';
2
+ import { getMeta } from '../entity/index.js';
3
+ import { areTypesEqual, canonicalToSql, fieldOptionsToCanonical, isVectorCategory, sqlToCanonical, } from '../schema/canonicalType.js';
4
+ import { SchemaASTBuilder } from '../schema/schemaASTBuilder.js';
5
+ import { escapeSqlId, getKeys, isAutoIncrement } from '../util/index.js';
6
+ import { formatDefaultValue } from './builder/expressions.js';
7
+ /** Maps UQL distance metric names to inline DDL keywords (e.g. MariaDB `DISTANCE=euclidean`). */
8
+ const INLINE_VECTOR_DISTANCE_MAP = { cosine: 'cosine', l2: 'euclidean' };
9
+ /**
10
+ * Unified SQL schema generator.
11
+ * Parameterized by dialect to handle Postgres, MySQL, MariaDB, and SQLite.
12
+ */
13
+ export class SqlSchemaGenerator {
14
+ dialect;
15
+ defaultForeignKeyAction;
16
+ constructor(dialect, defaultForeignKeyAction = 'NO ACTION') {
17
+ this.dialect = dialect;
18
+ this.defaultForeignKeyAction = defaultForeignKeyAction;
19
+ }
20
+ get namingStrategy() {
21
+ return this.dialect.namingStrategy;
22
+ }
23
+ get features() {
24
+ return this.dialect.features;
25
+ }
26
+ resolveTableName(entity, meta) {
27
+ return this.dialect.resolveTableName(entity, meta);
28
+ }
29
+ resolveColumnName(key, field) {
30
+ return this.dialect.resolveColumnName(key, field);
31
+ }
32
+ /**
33
+ * Escape an identifier (table name, column name, etc.)
34
+ */
35
+ escapeId(identifier) {
36
+ return escapeSqlId(identifier, this.dialect.quoteChar);
37
+ }
38
+ /**
39
+ * Primary key type for auto-increment integer IDs
40
+ */
41
+ get serialPrimaryKeyType() {
42
+ return this.dialect.serialPrimaryKey;
43
+ }
44
+ // ============================================================================
45
+ // CanonicalType Integration (Unified Type System)
46
+ // ============================================================================
47
+ /**
48
+ * Convert FieldOptions to CanonicalType using the unified type system.
49
+ */
50
+ getCanonicalType(field, fieldType) {
51
+ return fieldOptionsToCanonical(field, fieldType);
52
+ }
53
+ /**
54
+ * Convert CanonicalType to SQL type string for this dialect.
55
+ * Also handles legacy string types for backward compatibility.
56
+ */
57
+ canonicalTypeToSql(type) {
58
+ // Handle legacy string types
59
+ if (typeof type === 'string') {
60
+ return type;
61
+ }
62
+ return canonicalToSql(type, this.dialect);
63
+ }
64
+ // ============================================================================
65
+ // SchemaGenerator Implementation
66
+ // ============================================================================
67
+ generateCreateTable(entity, options = {}) {
68
+ const builder = new SchemaASTBuilder(this.dialect.namingStrategy);
69
+ const ast = builder.fromEntities([entity]);
70
+ const tableNode = ast.getTables()[0];
71
+ return this.generateCreateTableFromNode(tableNode, options);
72
+ }
73
+ generateDropTable(entity) {
74
+ const meta = getMeta(entity);
75
+ const tableName = this.dialect.resolveTableName(entity, meta);
76
+ return `DROP TABLE IF EXISTS ${this.escapeId(tableName)};`;
77
+ }
78
+ generateAlterTable(diff) {
79
+ const statements = [];
80
+ const tableName = this.escapeId(diff.tableName);
81
+ // Add new columns
82
+ if (diff.columnsToAdd?.length) {
83
+ for (const column of diff.columnsToAdd) {
84
+ const colDef = this.generateColumnDefinitionFromSchema(column);
85
+ statements.push(`ALTER TABLE ${tableName} ADD COLUMN ${colDef};`);
86
+ }
87
+ }
88
+ // Alter existing columns
89
+ if (diff.columnsToAlter?.length) {
90
+ for (const { to } of diff.columnsToAlter) {
91
+ const colDef = this.generateColumnDefinitionFromSchema(to);
92
+ const colStatements = this.generateAlterColumnStatements(diff.tableName, to, colDef);
93
+ statements.push(...colStatements);
94
+ }
95
+ }
96
+ // Drop columns
97
+ if (diff.columnsToDrop?.length) {
98
+ for (const columnName of diff.columnsToDrop) {
99
+ statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(columnName)};`);
100
+ }
101
+ }
102
+ // Add indexes
103
+ if (diff.indexesToAdd?.length) {
104
+ for (const index of diff.indexesToAdd) {
105
+ statements.push(this.generateCreateIndex(diff.tableName, index));
106
+ }
107
+ }
108
+ // Drop indexes
109
+ if (diff.indexesToDrop?.length) {
110
+ for (const indexName of diff.indexesToDrop) {
111
+ statements.push(this.generateDropIndex(diff.tableName, indexName));
112
+ }
113
+ }
114
+ return statements;
115
+ }
116
+ generateAlterTableDown(diff) {
117
+ const statements = [];
118
+ const tableName = this.escapeId(diff.tableName);
119
+ // Reverse column additions by dropping them
120
+ if (diff.columnsToAdd?.length) {
121
+ for (const column of diff.columnsToAdd) {
122
+ statements.push(`ALTER TABLE ${tableName} DROP COLUMN ${this.escapeId(column.name)};`);
123
+ }
124
+ }
125
+ // Reverse column alterations by restoring original schema
126
+ if (diff.columnsToAlter?.length) {
127
+ for (const { from } of diff.columnsToAlter) {
128
+ const colDef = this.generateColumnDefinitionFromSchema(from, { includePrimaryKey: false });
129
+ const colStatements = this.generateAlterColumnStatements(diff.tableName, from, colDef);
130
+ statements.push(...colStatements);
131
+ }
132
+ }
133
+ // Reverse index additions by dropping them
134
+ if (diff.indexesToAdd?.length) {
135
+ for (const index of diff.indexesToAdd) {
136
+ statements.push(this.generateDropIndex(diff.tableName, index.name));
137
+ }
138
+ }
139
+ if (diff.columnsToDrop?.length || diff.indexesToDrop?.length) {
140
+ statements.push(`-- TODO: Manual reversal needed for dropped columns/indexes`);
141
+ }
142
+ return statements;
143
+ }
144
+ generateCreateIndex(tableName, index, options = {}) {
145
+ const unique = index.unique ? 'UNIQUE ' : '';
146
+ const ifNotExists = (options.ifNotExists ?? this.features.indexIfNotExists) ? 'IF NOT EXISTS ' : '';
147
+ const opsClassMap = this.dialect.vectorOpsClass;
148
+ const hasOpsClass = opsClassMap && (index.type === 'hnsw' || index.type === 'ivfflat');
149
+ // For pgvector indexes: append operator class to the column
150
+ const columns = index.columns
151
+ .map((c) => {
152
+ const escaped = this.escapeId(c);
153
+ if (hasOpsClass && index.distance) {
154
+ const opsClass = opsClassMap[index.distance];
155
+ return opsClass ? `${escaped} ${opsClass}` : escaped;
156
+ }
157
+ return escaped;
158
+ })
159
+ .join(', ');
160
+ const using = index.type ? ` USING ${index.type}` : '';
161
+ // Build WITH params for vector indexes with operator class support
162
+ let withClause = '';
163
+ if (hasOpsClass) {
164
+ const withParams = [];
165
+ if (index.m !== undefined)
166
+ withParams.push(`m = ${index.m}`);
167
+ if (index.efConstruction !== undefined)
168
+ withParams.push(`ef_construction = ${index.efConstruction}`);
169
+ if (index.lists !== undefined)
170
+ withParams.push(`lists = ${index.lists}`);
171
+ withClause = withParams.length > 0 ? ` WITH (${withParams.join(', ')})` : '';
172
+ }
173
+ return `CREATE ${unique}INDEX ${ifNotExists}${this.escapeId(index.name)} ON ${this.escapeId(tableName)}${using} (${columns})${withClause};`;
174
+ }
175
+ generateDropIndex(tableName, indexName) {
176
+ if (this.dialect.dropIndexSyntax === 'on-table') {
177
+ return `DROP INDEX ${this.escapeId(indexName)} ON ${this.escapeId(tableName)};`;
178
+ }
179
+ return `DROP INDEX IF EXISTS ${this.escapeId(indexName)};`;
180
+ }
181
+ /**
182
+ * Generate column definition from a ColumnSchema object
183
+ */
184
+ generateColumnDefinitionFromSchema(column, options = {}) {
185
+ const { includePrimaryKey = true, includeUnique = true } = options;
186
+ let type = column.type;
187
+ if (!type.includes('(')) {
188
+ if (column.precision !== undefined) {
189
+ if (column.scale !== undefined) {
190
+ type += `(${column.precision}, ${column.scale})`;
191
+ }
192
+ else {
193
+ type += `(${column.precision})`;
194
+ }
195
+ }
196
+ else if (column.length !== undefined) {
197
+ type += `(${column.length})`;
198
+ }
199
+ }
200
+ if (!includePrimaryKey) {
201
+ type = type.replace(/\s+PRIMARY\s+KEY/i, '');
202
+ }
203
+ let definition = `${this.escapeId(column.name)} ${type}`;
204
+ if (includePrimaryKey && column.isPrimaryKey && !type.includes('PRIMARY KEY')) {
205
+ definition += ' PRIMARY KEY';
206
+ }
207
+ if (!column.nullable && !column.isPrimaryKey) {
208
+ definition += ' NOT NULL';
209
+ }
210
+ if (includeUnique && column.isUnique && !column.isPrimaryKey) {
211
+ definition += ' UNIQUE';
212
+ }
213
+ if (column.defaultValue !== undefined) {
214
+ definition += ` DEFAULT ${this.formatDefaultValue(column.defaultValue)}`;
215
+ }
216
+ if (column.comment) {
217
+ definition += this.generateColumnComment(column.name, column.comment);
218
+ }
219
+ return definition;
220
+ }
221
+ getSqlType(field, fieldType) {
222
+ // If field has a reference, inherit type from the target primary key
223
+ if (field.references) {
224
+ const refEntity = field.references();
225
+ const refMeta = getMeta(refEntity);
226
+ const refIdField = refMeta.fields[refMeta.id];
227
+ return this.getSqlType({ ...refIdField, references: undefined, isId: undefined, autoIncrement: false }, refIdField.type);
228
+ }
229
+ // Get canonical type and convert to SQL
230
+ const canonical = this.getCanonicalType(field, fieldType);
231
+ // Special case for serial primary keys
232
+ if (isAutoIncrement(field, field.isId === true)) {
233
+ return this.dialect.serialPrimaryKey;
234
+ }
235
+ return this.canonicalTypeToSql(canonical);
236
+ }
237
+ /**
238
+ * Get the boolean type for this database
239
+ */
240
+ getBooleanType() {
241
+ return this.canonicalTypeToSql({ category: 'boolean' });
242
+ }
243
+ /**
244
+ * Generate ALTER COLUMN statements (database-specific)
245
+ */
246
+ generateAlterColumnStatements(tableName, column, newDefinition) {
247
+ const table = this.escapeId(tableName);
248
+ const colName = this.escapeId(column.name);
249
+ if (this.dialect.alterColumnSyntax === 'none') {
250
+ throw new Error(`${this.dialect}: Cannot alter column "${column.name}" - you must recreate the table. ` +
251
+ `This database does not support ALTER COLUMN.`);
252
+ }
253
+ if (this.dialect.alterColumnStrategy === 'separate-clauses') {
254
+ const statements = [];
255
+ // Separate ALTER COLUMN clauses for different changes (Postgres)
256
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} TYPE ${column.type};`);
257
+ if (column.nullable) {
258
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} DROP NOT NULL;`);
259
+ }
260
+ else {
261
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} SET NOT NULL;`);
262
+ }
263
+ if (column.defaultValue !== undefined) {
264
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} SET DEFAULT ${this.formatDefaultValue(column.defaultValue)};`);
265
+ }
266
+ else {
267
+ statements.push(`ALTER TABLE ${table} ALTER COLUMN ${colName} DROP DEFAULT;`);
268
+ }
269
+ return statements;
270
+ }
271
+ return [`ALTER TABLE ${table} ${this.dialect.alterColumnSyntax} ${newDefinition};`];
272
+ }
273
+ /**
274
+ * Get table options (e.g., ENGINE for MySQL)
275
+ */
276
+ getTableOptions(_meta) {
277
+ return this.dialect.tableOptions ? ` ${this.dialect.tableOptions}` : '';
278
+ }
279
+ /**
280
+ * Generate column comment clause (if supported)
281
+ */
282
+ generateColumnComment(columnName, comment) {
283
+ if (this.features.columnComment) {
284
+ const escapedComment = comment.replace(/'/g, "''");
285
+ return ` COMMENT '${escapedComment}'`;
286
+ }
287
+ return '';
288
+ }
289
+ /**
290
+ * Format a default value for SQL
291
+ */
292
+ formatDefaultValue(value) {
293
+ if (this.dialect.booleanLiteral === 'integer' && typeof value === 'boolean') {
294
+ return value ? '1' : '0';
295
+ }
296
+ return formatDefaultValue(value);
297
+ }
298
+ /**
299
+ * Compare an entity with a database table node and return the differences.
300
+ */
301
+ diffSchema(entity, currentTable) {
302
+ const meta = getMeta(entity);
303
+ if (!currentTable) {
304
+ return {
305
+ tableName: this.dialect.resolveTableName(entity, meta),
306
+ type: 'create',
307
+ };
308
+ }
309
+ const columnsToAdd = [];
310
+ const columnsToAlter = [];
311
+ const columnsToDrop = [];
312
+ const currentColumns = new Map(currentTable.columns);
313
+ const fieldKeys = getKeys(meta.fields);
314
+ for (const key of fieldKeys) {
315
+ const field = meta.fields[key];
316
+ if (!field || field.virtual)
317
+ continue;
318
+ const columnName = this.dialect.resolveColumnName(key, field);
319
+ const currentColumn = currentColumns.get(columnName);
320
+ if (!currentColumn) {
321
+ columnsToAdd.push(this.fieldToColumnSchema(key, field, meta));
322
+ }
323
+ else {
324
+ const desiredColumn = this.fieldToColumnSchema(key, field, meta);
325
+ const currentColumnSchema = this.columnNodeToSchema(currentColumn);
326
+ if (this.columnsNeedAlteration(currentColumnSchema, desiredColumn)) {
327
+ columnsToAlter.push({ from: currentColumnSchema, to: desiredColumn });
328
+ }
329
+ }
330
+ currentColumns.delete(columnName);
331
+ }
332
+ for (const [name] of currentColumns) {
333
+ columnsToDrop.push(name);
334
+ }
335
+ if (columnsToAdd.length === 0 && columnsToAlter.length === 0 && columnsToDrop.length === 0) {
336
+ return undefined;
337
+ }
338
+ return {
339
+ tableName: this.dialect.resolveTableName(entity, meta),
340
+ type: 'alter',
341
+ columnsToAdd: columnsToAdd.length > 0 ? columnsToAdd : undefined,
342
+ columnsToAlter: columnsToAlter.length > 0 ? columnsToAlter : undefined,
343
+ columnsToDrop: columnsToDrop.length > 0 ? columnsToDrop : undefined,
344
+ };
345
+ }
346
+ columnNodeToSchema(col) {
347
+ return {
348
+ name: col.name,
349
+ type: this.canonicalTypeToSql(col.type),
350
+ nullable: col.nullable,
351
+ defaultValue: col.defaultValue,
352
+ isPrimaryKey: col.isPrimaryKey,
353
+ isAutoIncrement: col.isAutoIncrement,
354
+ isUnique: col.isUnique,
355
+ comment: col.comment,
356
+ };
357
+ }
358
+ /**
359
+ * Convert field options to ColumnSchema
360
+ */
361
+ fieldToColumnSchema(fieldKey, field, meta) {
362
+ const isPrimaryKey = field.isId === true && meta.id === fieldKey;
363
+ return {
364
+ name: this.dialect.resolveColumnName(fieldKey, field),
365
+ type: this.getSqlType(field, field.type),
366
+ nullable: field.nullable ?? !isPrimaryKey,
367
+ defaultValue: field.defaultValue,
368
+ isPrimaryKey,
369
+ isAutoIncrement: isAutoIncrement(field, isPrimaryKey),
370
+ isUnique: field.unique ?? false,
371
+ length: field.length,
372
+ precision: field.precision,
373
+ scale: field.scale,
374
+ comment: field.comment,
375
+ };
376
+ }
377
+ /**
378
+ * Check if two columns differ enough to require alteration
379
+ */
380
+ columnsNeedAlteration(current, desired) {
381
+ if (current.isPrimaryKey && desired.isPrimaryKey) {
382
+ return false;
383
+ }
384
+ if (current.isPrimaryKey !== desired.isPrimaryKey)
385
+ return true;
386
+ if (current.nullable !== desired.nullable)
387
+ return true;
388
+ if (current.isUnique !== desired.isUnique)
389
+ return true;
390
+ if (!this.isTypeEqual(current, desired))
391
+ return true;
392
+ if (!this.isDefaultValueEqual(current.defaultValue, desired.defaultValue))
393
+ return true;
394
+ return false;
395
+ }
396
+ /**
397
+ * Compare two column types for equality using the canonical type system
398
+ */
399
+ isTypeEqual(current, desired) {
400
+ const typeA = sqlToCanonical(current.type);
401
+ const typeB = sqlToCanonical(desired.type);
402
+ return areTypesEqual(typeA, typeB);
403
+ }
404
+ /**
405
+ * Compare two default values for equality
406
+ */
407
+ isDefaultValueEqual(current, desired) {
408
+ if (current === desired)
409
+ return true;
410
+ if (current === undefined || desired === undefined)
411
+ return current === desired;
412
+ const normalize = (val) => {
413
+ if (val === null)
414
+ return 'null';
415
+ if (typeof val === 'string') {
416
+ let s = val.replace(/::[a-z_]+(\s+[a-z_]+)*(\[\])?$/i, '');
417
+ s = s.replace(/^'(.*)'$/, '$1');
418
+ if (s.toLowerCase() === 'null')
419
+ return 'null';
420
+ return s;
421
+ }
422
+ return typeof val === 'object' ? JSON.stringify(val) : String(val);
423
+ };
424
+ return normalize(current) === normalize(desired);
425
+ }
426
+ // ============================================================================
427
+ // SchemaAST Support Methods
428
+ // ============================================================================
429
+ generateCreateTableFromNode(table, options = {}) {
430
+ const columns = [];
431
+ const constraints = [];
432
+ for (const col of table.columns.values()) {
433
+ const colDef = this.generateColumnFromNode(col);
434
+ columns.push(colDef);
435
+ }
436
+ if (table.primaryKey.length > 1) {
437
+ const pkCols = table.primaryKey.map((c) => this.escapeId(c.name)).join(', ');
438
+ constraints.push(`PRIMARY KEY (${pkCols})`);
439
+ }
440
+ for (const rel of table.outgoingRelations) {
441
+ if (rel.from.columns.length > 0) {
442
+ const fromCols = rel.from.columns.map((c) => this.escapeId(c.name)).join(', ');
443
+ const toCols = rel.to.columns.map((c) => this.escapeId(c.name)).join(', ');
444
+ const constraintName = rel.name ? `CONSTRAINT ${this.escapeId(rel.name)} ` : '';
445
+ constraints.push(`${constraintName}FOREIGN KEY (${fromCols}) REFERENCES ${this.escapeId(rel.to.table.name)} (${toCols})` +
446
+ ` ON DELETE ${rel.onDelete ?? this.defaultForeignKeyAction} ON UPDATE ${rel.onUpdate ?? this.defaultForeignKeyAction}`);
447
+ }
448
+ }
449
+ const ifNotExists = options.ifNotExists && this.features.ifNotExists ? 'IF NOT EXISTS ' : '';
450
+ let createSql = `CREATE TABLE ${ifNotExists}${this.escapeId(table.name)} (\n`;
451
+ createSql += columns.map((col) => ` ${col}`).join(',\n');
452
+ if (constraints.length > 0) {
453
+ createSql += ',\n';
454
+ createSql += constraints.map((c) => ` ${c}`).join(',\n');
455
+ }
456
+ const isInlineVectorIdx = this.features.vectorIndexStyle === 'inline';
457
+ const vectorIndexes = isInlineVectorIdx ? table.indexes.filter((idx) => idx.type === 'vector') : [];
458
+ const regularIndexes = isInlineVectorIdx ? table.indexes.filter((idx) => idx.type !== 'vector') : table.indexes;
459
+ if (vectorIndexes.length > 0) {
460
+ createSql += ',\n';
461
+ createSql += vectorIndexes.map((idx) => ` ${this.generateInlineVectorIndex(idx)}`).join(',\n');
462
+ }
463
+ createSql += '\n)';
464
+ if (this.dialect.tableOptions) {
465
+ createSql += ` ${this.dialect.tableOptions}`;
466
+ }
467
+ createSql += ';';
468
+ const statements = [];
469
+ if (this.dialect.vectorExtension) {
470
+ const hasVectorCol = [...table.columns.values()].some((c) => isVectorCategory(c.type.category));
471
+ if (hasVectorCol) {
472
+ statements.push(`CREATE EXTENSION IF NOT EXISTS ${this.dialect.vectorExtension};`);
473
+ }
474
+ }
475
+ statements.push(createSql);
476
+ for (const idx of regularIndexes) {
477
+ statements.push(this.generateCreateIndexFromNode(idx));
478
+ }
479
+ return statements;
480
+ }
481
+ /**
482
+ * Generate a column definition from a ColumnNode.
483
+ */
484
+ generateColumnFromNode(col) {
485
+ const colName = this.escapeId(col.name);
486
+ let sqlType = this.canonicalTypeToSql(col.type);
487
+ if (col.isPrimaryKey && col.isAutoIncrement) {
488
+ sqlType = this.serialPrimaryKeyType;
489
+ }
490
+ let def = `${colName} ${sqlType}`;
491
+ if (!col.nullable && !col.isPrimaryKey) {
492
+ def += ' NOT NULL';
493
+ }
494
+ if (col.isPrimaryKey && col.table.primaryKey.length === 1 && !sqlType.includes('PRIMARY KEY')) {
495
+ def += ' PRIMARY KEY';
496
+ }
497
+ if (col.isUnique && !col.isPrimaryKey) {
498
+ def += ' UNIQUE';
499
+ }
500
+ if (col.defaultValue !== undefined) {
501
+ def += ` DEFAULT ${this.formatDefaultValue(col.defaultValue)}`;
502
+ }
503
+ if (col.comment) {
504
+ def += this.generateColumnComment(col.name, col.comment);
505
+ }
506
+ return def;
507
+ }
508
+ /**
509
+ * Generate an inline VECTOR INDEX clause for use inside CREATE TABLE.
510
+ * Syntax: `VECTOR INDEX (col) M=n DISTANCE=metric`
511
+ */
512
+ generateInlineVectorIndex(index) {
513
+ const columns = index.columns.map((c) => this.escapeId(c.name)).join(', ');
514
+ let clause = `VECTOR INDEX (${columns})`;
515
+ if (index.m !== undefined) {
516
+ clause += ` M=${index.m}`;
517
+ }
518
+ if (index.distance) {
519
+ const metric = INLINE_VECTOR_DISTANCE_MAP[index.distance] ?? 'euclidean';
520
+ clause += ` DISTANCE=${metric}`;
521
+ }
522
+ return clause;
523
+ }
524
+ /**
525
+ * Generate CREATE INDEX SQL from an IndexNode.
526
+ * Delegates to `generateCreateIndex` for unified SQL assembly.
527
+ */
528
+ generateCreateIndexFromNode(index, options = { ifNotExists: false }) {
529
+ return this.generateCreateIndex(index.table.name, {
530
+ name: index.name,
531
+ columns: index.columns.map((c) => c.name),
532
+ unique: index.unique,
533
+ type: index.type,
534
+ distance: index.distance,
535
+ m: index.m,
536
+ efConstruction: index.efConstruction,
537
+ lists: index.lists,
538
+ }, options);
539
+ }
540
+ /**
541
+ * Generate DROP TABLE SQL from a TableNode.
542
+ */
543
+ generateDropTableFromNode(table, options = {}) {
544
+ const ifExists = options.ifExists ? 'IF EXISTS ' : '';
545
+ return `DROP TABLE ${ifExists}${this.escapeId(table.name)};`;
546
+ }
547
+ // ============================================================================
548
+ // Phase 3: Builder Operation Methods (Moved forward for unification)
549
+ // ============================================================================
550
+ generateCreateTableFromDefinition(table, options = {}) {
551
+ const tableNode = this.tableDefinitionToNode(table);
552
+ return this.generateCreateTableFromNode(tableNode, options);
553
+ }
554
+ generateDropTableSql(tableName, options) {
555
+ const ifExists = options?.ifExists ? 'IF EXISTS ' : '';
556
+ // Use dialect-specific cascade support from config
557
+ const cascade = options?.cascade && this.features.dropTableCascade ? ' CASCADE' : '';
558
+ return `DROP TABLE ${ifExists}${this.escapeId(tableName)}${cascade};`;
559
+ }
560
+ generateRenameTableSql(oldName, newName) {
561
+ if (this.dialect.renameTableSyntax === 'rename-table') {
562
+ return `RENAME TABLE ${this.escapeId(oldName)} TO ${this.escapeId(newName)};`;
563
+ }
564
+ return `ALTER TABLE ${this.escapeId(oldName)} RENAME TO ${this.escapeId(newName)};`;
565
+ }
566
+ generateAddColumnSql(tableName, column) {
567
+ const colSql = this.generateColumnFromNode(this.fullColumnDefinitionToNode(column, tableName));
568
+ return `ALTER TABLE ${this.escapeId(tableName)} ADD COLUMN ${colSql};`;
569
+ }
570
+ generateAlterColumnSql(tableName, columnName, column) {
571
+ const colSql = this.generateColumnFromNode(this.fullColumnDefinitionToNode(column, tableName));
572
+ return this.generateAlterColumnStatements(tableName, { name: columnName, type: '' }, colSql).join('\n');
573
+ }
574
+ generateDropColumnSql(tableName, columnName) {
575
+ return `ALTER TABLE ${this.escapeId(tableName)} DROP COLUMN ${this.escapeId(columnName)};`;
576
+ }
577
+ generateRenameColumnSql(tableName, oldName, newName) {
578
+ return `ALTER TABLE ${this.escapeId(tableName)} RENAME COLUMN ${this.escapeId(oldName)} TO ${this.escapeId(newName)};`;
579
+ }
580
+ generateCreateIndexSql(tableName, index) {
581
+ return this.generateCreateIndex(tableName, index);
582
+ }
583
+ generateDropIndexSql(tableName, indexName) {
584
+ return this.generateDropIndex(tableName, indexName);
585
+ }
586
+ generateAddForeignKeySql(tableName, foreignKey) {
587
+ const fkCols = foreignKey.columns.map((c) => this.escapeId(c)).join(', ');
588
+ const refCols = foreignKey.referencesColumns.map((c) => this.escapeId(c)).join(', ');
589
+ const constraintName = foreignKey.name
590
+ ? this.escapeId(foreignKey.name)
591
+ : this.escapeId(`fk_${tableName}_${foreignKey.columns.join('_')}`);
592
+ if (!this.features.foreignKeyAlter) {
593
+ throw new Error(`Dialect ${this.dialect} does not support adding foreign keys to existing tables`);
594
+ }
595
+ return (`ALTER TABLE ${this.escapeId(tableName)} ADD CONSTRAINT ${constraintName} ` +
596
+ `FOREIGN KEY (${fkCols}) REFERENCES ${this.escapeId(foreignKey.referencesTable)} (${refCols}) ` +
597
+ `ON DELETE ${foreignKey.onDelete ?? this.defaultForeignKeyAction} ON UPDATE ${foreignKey.onUpdate ?? this.defaultForeignKeyAction};`);
598
+ }
599
+ generateDropForeignKeySql(tableName, constraintName) {
600
+ return `ALTER TABLE ${this.escapeId(tableName)} ${this.dialect.dropForeignKeySyntax} ${this.escapeId(constraintName)};`;
601
+ }
602
+ tableDefinitionToNode(def) {
603
+ const columns = new Map();
604
+ const pkNodes = [];
605
+ const table = {
606
+ name: def.name,
607
+ columns,
608
+ primaryKey: [], // placeholder
609
+ indexes: [],
610
+ schema: { tables: new Map(), relationships: [], indexes: [] },
611
+ incomingRelations: [],
612
+ outgoingRelations: [],
613
+ comment: def.comment,
614
+ };
615
+ for (const colDef of def.columns) {
616
+ const node = this.fullColumnDefinitionToNode(colDef, def.name);
617
+ node.table = table;
618
+ columns.set(node.name, node);
619
+ if (node.isPrimaryKey) {
620
+ pkNodes.push(node);
621
+ }
622
+ }
623
+ const finalPrimaryKey = def.primaryKey
624
+ ? def.primaryKey.map((name) => columns.get(name)).filter((c) => c !== undefined)
625
+ : pkNodes;
626
+ table.primaryKey = finalPrimaryKey;
627
+ for (const idxDef of def.indexes) {
628
+ const indexNode = {
629
+ name: idxDef.name,
630
+ table,
631
+ columns: idxDef.columns.map((name) => columns.get(name)).filter((c) => c !== undefined),
632
+ unique: idxDef.unique,
633
+ };
634
+ table.indexes.push(indexNode);
635
+ }
636
+ for (const fkDef of def.foreignKeys) {
637
+ const relNode = {
638
+ name: fkDef.name ?? `fk_${def.name}_${fkDef.columns.join('_')}`,
639
+ type: 'ManyToOne', // Builder default
640
+ from: {
641
+ table,
642
+ columns: fkDef.columns.map((name) => columns.get(name)).filter((c) => c !== undefined),
643
+ },
644
+ to: {
645
+ table: { name: fkDef.referencesTable },
646
+ columns: fkDef.referencesColumns.map((name) => ({ name })),
647
+ },
648
+ onDelete: fkDef.onDelete,
649
+ onUpdate: fkDef.onUpdate,
650
+ };
651
+ table.outgoingRelations.push(relNode);
652
+ }
653
+ return table;
654
+ }
655
+ fullColumnDefinitionToNode(col, tableName) {
656
+ return {
657
+ name: col.name,
658
+ type: col.type,
659
+ nullable: col.nullable,
660
+ defaultValue: col.defaultValue,
661
+ isPrimaryKey: col.primaryKey,
662
+ isAutoIncrement: col.autoIncrement,
663
+ isUnique: col.unique,
664
+ comment: col.comment,
665
+ table: { name: tableName },
666
+ referencedBy: [],
667
+ references: col.foreignKey
668
+ ? {
669
+ name: `fk_${tableName}_${col.name}`,
670
+ type: 'ManyToOne',
671
+ from: { table: { name: tableName }, columns: [] },
672
+ to: {
673
+ table: { name: col.foreignKey.table },
674
+ columns: col.foreignKey.columns.map((name) => ({ name })),
675
+ },
676
+ onDelete: col.foreignKey.onDelete,
677
+ onUpdate: col.foreignKey.onUpdate,
678
+ }
679
+ : undefined,
680
+ };
681
+ }
682
+ }
683
+ /**
684
+ * Synchronous factory for SQL schema generators only.
685
+ * For MongoDB, use `createSchemaGeneratorAsync` from `./schemaGeneratorAsync.js` so the optional `mongodb` peer is not loaded at import time.
686
+ */
687
+ export function createSchemaGenerator(dialect, namingStrategy, defaultForeignKeyAction) {
688
+ if (!(dialect instanceof AbstractSqlDialect)) {
689
+ return undefined;
690
+ }
691
+ return new SqlSchemaGenerator(dialect, defaultForeignKeyAction);
692
+ }
693
+ //# sourceMappingURL=schemaGenerator.js.map