ts-prorm-orm 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,407 @@
1
+ /**
2
+ * QueryInterface - Provides methods for executing database operations during migrations
3
+ * Works with all supported dialects: SQLite, MySQL, PostgreSQL, MariaDB
4
+ */
5
+ import { Dialect, TableOptions, DropTableOptions, TableDescription, IndexOptions, ViewOptions, DropViewOptions, MaterializedViewOptions, DropMaterializedViewOptions, RefreshOptions } from './dialects/dialect';
6
+ import { type SequenceOptions, type PolicyOptions, type FullTextIndexOptions, type TriggerDefinition } from './schema-objects';
7
+ import { Transaction, DataType, WhereOptions, PartitionType, PartitionBound, CreatePartitionOptions, AttachPartitionOptions, DetachPartitionOptions } from './types';
8
+ /**
9
+ * QueryInterface options for various operations
10
+ */
11
+ export interface QueryInterfaceOptions {
12
+ transaction?: Transaction;
13
+ logging?: boolean | ((sql: string, time?: number) => void);
14
+ benchmark?: boolean;
15
+ }
16
+ /**
17
+ * Column definition for createTable/alterTable
18
+ */
19
+ export interface TableColumnDefinition {
20
+ type: DataType | string;
21
+ allowNull?: boolean;
22
+ defaultValue?: any;
23
+ primaryKey?: boolean;
24
+ autoIncrement?: boolean;
25
+ unique?: boolean | string;
26
+ references?: {
27
+ model: string;
28
+ key: string;
29
+ deferrable?: string;
30
+ onDelete?: string;
31
+ onUpdate?: string;
32
+ };
33
+ comment?: string;
34
+ validate?: Record<string, any>;
35
+ }
36
+ /**
37
+ * Index definition for addIndex
38
+ */
39
+ export interface IndexFieldDefinition {
40
+ name: string;
41
+ length?: number | string;
42
+ order?: 'ASC' | 'DESC';
43
+ collate?: string;
44
+ /** Expression for expression-based indexes (e.g., "LOWER(column_name)") */
45
+ expression?: string;
46
+ }
47
+ /**
48
+ * Constraint definition for addConstraint
49
+ */
50
+ export interface ConstraintDefinition {
51
+ type: 'UNIQUE' | 'PRIMARY KEY' | 'FOREIGN KEY' | 'CHECK';
52
+ fields?: string[];
53
+ name?: string;
54
+ references?: {
55
+ table: string;
56
+ fields: string[];
57
+ };
58
+ onDelete?: string;
59
+ onUpdate?: string;
60
+ where?: WhereOptions;
61
+ }
62
+ /**
63
+ * Bulk operation options
64
+ */
65
+ export interface BulkOperationOptions {
66
+ transaction?: Transaction;
67
+ logging?: boolean | ((sql: string, time?: number) => void);
68
+ benchmark?: boolean;
69
+ validate?: boolean;
70
+ fields?: string[];
71
+ returning?: boolean | string[];
72
+ }
73
+ /**
74
+ * CreateQueryInterface - Provides migration operations for all database dialects
75
+ */
76
+ export declare class CreateQueryInterface {
77
+ private dialect;
78
+ /**
79
+ * Create a new QueryInterface instance
80
+ * @param dialect - The database dialect to use
81
+ */
82
+ constructor(dialect: Dialect);
83
+ /**
84
+ * Get the dialect instance
85
+ */
86
+ getDialect(): Dialect;
87
+ /**
88
+ * Create a new table
89
+ * @param tableName - Name of the table to create
90
+ * @param columns - Column definitions
91
+ * @param options - Table options
92
+ */
93
+ createTable(tableName: string, columns: Record<string, TableColumnDefinition>, options?: TableOptions & QueryInterfaceOptions): Promise<void>;
94
+ /**
95
+ * Create a partitioned table (PostgreSQL 10+)
96
+ * @param tableName - Name of the table to create
97
+ * @param columns - Column definitions
98
+ * @param options - Table options including partition configuration
99
+ */
100
+ createPartitionedTable(tableName: string, columns: Record<string, TableColumnDefinition>, options?: TableOptions & QueryInterfaceOptions & {
101
+ partitionBy: {
102
+ type: PartitionType;
103
+ column: string | string[];
104
+ };
105
+ partitions?: {
106
+ name: string;
107
+ bound?: PartitionBound;
108
+ tablespace?: string;
109
+ storageParameters?: Record<string, string | number>;
110
+ }[];
111
+ }): Promise<void>;
112
+ /**
113
+ * Create a partition for an existing partitioned table (PostgreSQL 10+)
114
+ * @param options - Partition creation options
115
+ */
116
+ createPartition(options: CreatePartitionOptions): Promise<void>;
117
+ /**
118
+ * Attach a partition to a partitioned table (PostgreSQL 11+)
119
+ * @param options - Partition attachment options
120
+ */
121
+ attachPartition(options: AttachPartitionOptions): Promise<void>;
122
+ /**
123
+ * Detach a partition from a partitioned table (PostgreSQL 11+)
124
+ * @param options - Partition detachment options
125
+ */
126
+ detachPartition(options: DetachPartitionOptions): Promise<void>;
127
+ /**
128
+ * Drop a partition (PostgreSQL 10+)
129
+ * @param partitionName - Name of the partition to drop
130
+ * @param options - Drop options
131
+ */
132
+ dropPartition(partitionName: string, options?: {
133
+ ifExists?: boolean;
134
+ cascade?: boolean;
135
+ } & QueryInterfaceOptions): Promise<void>;
136
+ /**
137
+ * Drop a table
138
+ * @param tableName - Name of the table to drop
139
+ * @param options - Drop options
140
+ */
141
+ dropTable(tableName: string, options?: DropTableOptions & QueryInterfaceOptions): Promise<void>;
142
+ /**
143
+ * Drop all tables (dialect-specific)
144
+ */
145
+ dropAllTables(_options?: QueryInterfaceOptions): Promise<void>;
146
+ /**
147
+ * Rename a table
148
+ * @param oldName - Current table name
149
+ * @param newName - New table name
150
+ */
151
+ renameTable(oldName: string, newName: string, _options?: QueryInterfaceOptions): Promise<void>;
152
+ /**
153
+ * Add a column to a table
154
+ * @param tableName - Name of the table
155
+ * @param columnName - Name of the new column
156
+ * @param definition - Column definition
157
+ */
158
+ addColumn(tableName: string, columnName: string, definition: TableColumnDefinition, _options?: QueryInterfaceOptions): Promise<void>;
159
+ /**
160
+ * Remove a column from a table
161
+ * @param tableName - Name of the table
162
+ * @param columnName - Name of the column to remove
163
+ */
164
+ removeColumn(tableName: string, columnName: string, _options?: QueryInterfaceOptions): Promise<void>;
165
+ /**
166
+ * Change a column definition
167
+ * @param tableName - Name of the table
168
+ * @param columnName - Name of the column to change
169
+ * @param definition - New column definition
170
+ */
171
+ changeColumn(tableName: string, columnName: string, definition: TableColumnDefinition, _options?: QueryInterfaceOptions): Promise<void>;
172
+ /**
173
+ * Rename a column
174
+ * @param tableName - Name of the table
175
+ * @param oldColumnName - Current column name
176
+ * @param newColumnName - New column name
177
+ */
178
+ renameColumn(tableName: string, oldColumnName: string, newColumnName: string, _options?: QueryInterfaceOptions): Promise<void>;
179
+ /**
180
+ * Add an index to a table
181
+ * @param tableName - Name of the table
182
+ * @param indexName - Name of the index
183
+ * @param fields - Fields to include in the index
184
+ * @param options - Index options
185
+ */
186
+ addIndex(tableName: string, indexNameOrFields: string | string[] | IndexFieldDefinition[], fieldsOrOptions?: string[] | IndexFieldDefinition[] | (IndexOptions & QueryInterfaceOptions), options?: IndexOptions & QueryInterfaceOptions): Promise<void>;
187
+ /**
188
+ * Remove an index from a table
189
+ * @param tableName - Name of the table
190
+ * @param indexName - Name of the index to remove
191
+ */
192
+ removeIndex(tableName: string, indexName: string, _options?: QueryInterfaceOptions): Promise<void>;
193
+ /**
194
+ * Show all indexes for a table
195
+ * @param tableName - Name of the table
196
+ */
197
+ showIndexes(tableName: string): Promise<{
198
+ name: string;
199
+ fields: string[];
200
+ unique: boolean;
201
+ }[]>;
202
+ /**
203
+ * Add a constraint to a table
204
+ * @param tableName - Name of the table
205
+ * @param constraintName - Name of the constraint
206
+ * @param constraint - Constraint definition
207
+ */
208
+ addConstraint(tableName: string, constraintNameOrOptions: string | (ConstraintDefinition & {
209
+ name?: string;
210
+ }), constraintOrOptions?: ConstraintDefinition, _options?: QueryInterfaceOptions): Promise<void>;
211
+ /**
212
+ * Remove a constraint from a table
213
+ * @param tableName - Name of the table
214
+ * @param constraintName - Name of the constraint to remove
215
+ */
216
+ removeConstraint(tableName: string, constraintName: string, _typeOrOptions?: string | QueryInterfaceOptions): Promise<void>;
217
+ /**
218
+ * Check if an index exists on a table
219
+ */
220
+ indexExists(tableName: string, indexName: string): Promise<boolean>;
221
+ /**
222
+ * Bulk insert records
223
+ * @param tableName - Name of the table
224
+ * @param records - Records to insert
225
+ * @param options - Insert options
226
+ */
227
+ bulkInsert(tableName: string, records: Record<string, any>[], _options?: BulkOperationOptions): Promise<number>;
228
+ /**
229
+ * Bulk update records
230
+ * @param tableName - Name of the table
231
+ * @param values - Values to update
232
+ * @param where - Where clause
233
+ * @param options - Update options
234
+ */
235
+ bulkUpdate(tableName: string, values: Record<string, any>, where: WhereOptions, _options?: BulkOperationOptions): Promise<number>;
236
+ /**
237
+ * Bulk delete records
238
+ * @param tableName - Name of the table
239
+ * @param where - Where clause
240
+ * @param options - Delete options
241
+ */
242
+ bulkDelete(tableName: string, where: WhereOptions, _options?: BulkOperationOptions): Promise<number>;
243
+ /**
244
+ * Describe a table (get column information)
245
+ * @param tableName - Name of the table
246
+ */
247
+ describeTable(tableName: string): Promise<TableDescription>;
248
+ /**
249
+ * Show all tables in the database
250
+ */
251
+ showTables(): Promise<string[]>;
252
+ /**
253
+ * Check if a table exists
254
+ * @param tableName - Name of the table
255
+ */
256
+ tableExists(tableName: string): Promise<boolean>;
257
+ /**
258
+ * Get all table names with schema (for PostgreSQL, MySQL, etc.)
259
+ * @param _schema - Optional schema name
260
+ */
261
+ getTableNames(_schema?: string): Promise<string[]>;
262
+ /**
263
+ * Get foreign keys for a table
264
+ * @param tableName - Name of the table
265
+ */
266
+ getForeignKeysForTable(_tableName: string): Promise<any[]>;
267
+ /**
268
+ * Get constraints for a table
269
+ * @param tableName - Name of the table
270
+ */
271
+ getConstraints(_tableName: string): Promise<any[]>;
272
+ /**
273
+ * Create a database (for databases that support it)
274
+ * @param databaseName - Name of the database
275
+ */
276
+ createDatabase(_databaseName: string, _options?: QueryInterfaceOptions): Promise<void>;
277
+ /**
278
+ * Drop a database (for databases that support it)
279
+ * @param databaseName - Name of the database
280
+ */
281
+ dropDatabase(_databaseName: string, _options?: QueryInterfaceOptions): Promise<void>;
282
+ /**
283
+ * Create a database view
284
+ * @param viewName - Name of the view to create
285
+ * @param query - The SELECT query for the view
286
+ * @param options - View options
287
+ */
288
+ createView(viewName: string, query: string, options?: ViewOptions & QueryInterfaceOptions): Promise<void>;
289
+ /**
290
+ * Drop a database view
291
+ * @param viewName - Name of the view to drop
292
+ * @param options - Drop options
293
+ */
294
+ dropView(viewName: string, options?: DropViewOptions & QueryInterfaceOptions): Promise<void>;
295
+ /**
296
+ * Show all views in the database
297
+ */
298
+ showViews(): Promise<string[]>;
299
+ /**
300
+ * Check if a view exists
301
+ * @param viewName - Name of the view
302
+ */
303
+ viewExists(viewName: string): Promise<boolean>;
304
+ /**
305
+ * Create a materialized view
306
+ * @param options - Materialized view options
307
+ */
308
+ createMaterializedView(options: MaterializedViewOptions & QueryInterfaceOptions): Promise<void>;
309
+ /**
310
+ * Refresh a materialized view
311
+ * @param viewName - Name of the materialized view to refresh
312
+ * @param options - Refresh options
313
+ */
314
+ refreshMaterializedView(viewName: string, options?: RefreshOptions & QueryInterfaceOptions): Promise<void>;
315
+ /**
316
+ * Drop a materialized view
317
+ * @param viewName - Name of the materialized view to drop
318
+ * @param options - Drop options
319
+ */
320
+ dropMaterializedView(viewName: string, options?: DropMaterializedViewOptions & QueryInterfaceOptions): Promise<void>;
321
+ /**
322
+ * Check if a materialized view exists
323
+ * @param viewName - Name of the materialized view
324
+ */
325
+ materializedViewExists(viewName: string): Promise<boolean>;
326
+ /**
327
+ * Show all materialized views in the database
328
+ */
329
+ showMaterializedViews(): Promise<string[]>;
330
+ private get _quoteId();
331
+ private get _quoteTable();
332
+ private get _dialectName();
333
+ /**
334
+ * Create a sequence.
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * await qi.createSequence('order_id_seq', { start: 1000, increment: 1 });
339
+ * ```
340
+ */
341
+ createSequence(name: string, options?: SequenceOptions): Promise<void>;
342
+ /** Drop a sequence. */
343
+ dropSequence(name: string, options?: {
344
+ ifExists?: boolean;
345
+ }): Promise<void>;
346
+ /**
347
+ * Create a trigger.
348
+ *
349
+ * On PostgreSQL this also creates the backing trigger function, which the
350
+ * database requires and which a hand-written `CREATE TRIGGER` easily forgets.
351
+ */
352
+ createTrigger(trigger: TriggerDefinition): Promise<void>;
353
+ /** Drop a trigger. */
354
+ dropTrigger(name: string, table: string, options?: {
355
+ ifExists?: boolean;
356
+ }): Promise<void>;
357
+ /** Enable row-level security on a table (PostgreSQL family). */
358
+ enableRowLevelSecurity(table: string): Promise<void>;
359
+ /** Disable row-level security on a table (PostgreSQL family). */
360
+ disableRowLevelSecurity(table: string): Promise<void>;
361
+ /**
362
+ * Create a row-level security policy.
363
+ *
364
+ * @example
365
+ * ```typescript
366
+ * await qi.createPolicy({
367
+ * name: 'users_own_rows',
368
+ * table: 'users',
369
+ * for: 'SELECT',
370
+ * using: 'user_id = current_user_id()',
371
+ * });
372
+ * ```
373
+ */
374
+ createPolicy(options: PolicyOptions): Promise<void>;
375
+ /** Drop a row-level security policy. */
376
+ dropPolicy(name: string, table: string, options?: {
377
+ ifExists?: boolean;
378
+ }): Promise<void>;
379
+ /**
380
+ * Create a full-text index.
381
+ *
382
+ * Emits a GIN index over `to_tsvector` on PostgreSQL, a FULLTEXT index on
383
+ * MySQL/MariaDB, and an FTS5 virtual table on SQLite.
384
+ */
385
+ createFullTextIndex(options: FullTextIndexOptions): Promise<void>;
386
+ /**
387
+ * Execute a raw query
388
+ * @param sql - The SQL query
389
+ * @param options - Query options
390
+ */
391
+ query(sql: string, options?: QueryInterfaceOptions): Promise<any>;
392
+ /**
393
+ * Quote an identifier
394
+ * @param identifier - The identifier to quote
395
+ */
396
+ quoteIdentifier(identifier: string): string;
397
+ /**
398
+ * Escape a value
399
+ * @param value - The value to escape
400
+ */
401
+ escape(value: any): string;
402
+ }
403
+ /**
404
+ * Factory function to create a QueryInterface from a Prorm instance
405
+ */
406
+ export declare function createQueryInterface(dialect: Dialect): CreateQueryInterface;
407
+ export type QueryInterface = CreateQueryInterface;
@@ -6,6 +6,7 @@
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.CreateQueryInterface = void 0;
8
8
  exports.createQueryInterface = createQueryInterface;
9
+ const schema_objects_1 = require("./schema-objects");
9
10
  /**
10
11
  * CreateQueryInterface - Provides migration operations for all database dialects
11
12
  */
@@ -590,6 +591,89 @@ class CreateQueryInterface {
590
591
  async showMaterializedViews() {
591
592
  return this.dialect.showMaterializedViews();
592
593
  }
594
+ // ==================== Sequences, triggers, RLS, full-text ====================
595
+ //
596
+ // These object types previously had no API at all, so the only way to create
597
+ // them was a hand-written `prorm.query()` call - which is what the README's
598
+ // own per-dialect examples did. Each method builds dialect-appropriate SQL and
599
+ // raises UnsupportedSchemaObjectError where the database has no equivalent.
600
+ get _quoteId() {
601
+ return (id) => this.dialect.quoteIdentifier(id);
602
+ }
603
+ get _quoteTable() {
604
+ return (t) => this.dialect.quoteTable(t);
605
+ }
606
+ get _dialectName() {
607
+ return this.dialect.name;
608
+ }
609
+ /**
610
+ * Create a sequence.
611
+ *
612
+ * @example
613
+ * ```typescript
614
+ * await qi.createSequence('order_id_seq', { start: 1000, increment: 1 });
615
+ * ```
616
+ */
617
+ async createSequence(name, options = {}) {
618
+ await this.dialect.query((0, schema_objects_1.buildCreateSequenceSQL)(name, options, this._dialectName, this._quoteId));
619
+ }
620
+ /** Drop a sequence. */
621
+ async dropSequence(name, options) {
622
+ await this.dialect.query((0, schema_objects_1.buildDropSequenceSQL)(name, this._dialectName, this._quoteId, options?.ifExists ?? true));
623
+ }
624
+ /**
625
+ * Create a trigger.
626
+ *
627
+ * On PostgreSQL this also creates the backing trigger function, which the
628
+ * database requires and which a hand-written `CREATE TRIGGER` easily forgets.
629
+ */
630
+ async createTrigger(trigger) {
631
+ const statements = (0, schema_objects_1.buildCreateTriggerStatements)(trigger, this._dialectName, this._quoteId, this._quoteTable);
632
+ for (const sql of statements) {
633
+ await this.dialect.query(sql);
634
+ }
635
+ }
636
+ /** Drop a trigger. */
637
+ async dropTrigger(name, table, options) {
638
+ await this.dialect.query((0, schema_objects_1.buildDropTriggerSQL)(name, table, this._dialectName, this._quoteId, this._quoteTable, options?.ifExists ?? true));
639
+ }
640
+ /** Enable row-level security on a table (PostgreSQL family). */
641
+ async enableRowLevelSecurity(table) {
642
+ await this.dialect.query((0, schema_objects_1.buildEnableRowLevelSecuritySQL)(table, this._dialectName, this._quoteTable, true));
643
+ }
644
+ /** Disable row-level security on a table (PostgreSQL family). */
645
+ async disableRowLevelSecurity(table) {
646
+ await this.dialect.query((0, schema_objects_1.buildEnableRowLevelSecuritySQL)(table, this._dialectName, this._quoteTable, false));
647
+ }
648
+ /**
649
+ * Create a row-level security policy.
650
+ *
651
+ * @example
652
+ * ```typescript
653
+ * await qi.createPolicy({
654
+ * name: 'users_own_rows',
655
+ * table: 'users',
656
+ * for: 'SELECT',
657
+ * using: 'user_id = current_user_id()',
658
+ * });
659
+ * ```
660
+ */
661
+ async createPolicy(options) {
662
+ await this.dialect.query((0, schema_objects_1.buildCreatePolicySQL)(options, this._dialectName, this._quoteId, this._quoteTable));
663
+ }
664
+ /** Drop a row-level security policy. */
665
+ async dropPolicy(name, table, options) {
666
+ await this.dialect.query((0, schema_objects_1.buildDropPolicySQL)(name, table, this._dialectName, this._quoteId, this._quoteTable, options?.ifExists ?? true));
667
+ }
668
+ /**
669
+ * Create a full-text index.
670
+ *
671
+ * Emits a GIN index over `to_tsvector` on PostgreSQL, a FULLTEXT index on
672
+ * MySQL/MariaDB, and an FTS5 virtual table on SQLite.
673
+ */
674
+ async createFullTextIndex(options) {
675
+ await this.dialect.query((0, schema_objects_1.buildCreateFullTextIndexSQL)(options, this._dialectName, this._quoteId, this._quoteTable));
676
+ }
593
677
  /**
594
678
  * Execute a raw query
595
679
  * @param sql - The SQL query
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Query Batch/Bulk Optimization
3
+ * Provides functionality to optimize batch operations for better performance
4
+ */
5
+ import { Dialect } from '../dialects/dialect';
6
+ /**
7
+ * Options for batch operations
8
+ */
9
+ export interface BatchOptions {
10
+ /** Maximum number of records per batch/chunk */
11
+ chunkSize: number;
12
+ /** Whether to use transactions for batch operations */
13
+ useTransaction?: boolean;
14
+ /** Whether to validate records before insertion */
15
+ validate?: boolean;
16
+ /** Whether to skip duplicate key errors */
17
+ skipDuplicates?: boolean;
18
+ /** Logging function */
19
+ logging?: (message: string) => void;
20
+ /** Callback for progress updates */
21
+ onProgress?: (progress: BatchProgress) => void;
22
+ /** Throw on error or continue with other batches */
23
+ stopOnError?: boolean;
24
+ }
25
+ /**
26
+ * Batch progress information
27
+ */
28
+ export interface BatchProgress {
29
+ /** Total number of records */
30
+ total: number;
31
+ /** Number of processed records */
32
+ processed: number;
33
+ /** Number of successful operations */
34
+ success: number;
35
+ /** Number of failed operations */
36
+ failed: number;
37
+ /** Current batch index */
38
+ batchIndex: number;
39
+ /** Total number of batches */
40
+ totalBatches: number;
41
+ }
42
+ /**
43
+ * Result of a batch operation
44
+ */
45
+ export interface BatchResult<T = any> {
46
+ /** Array of successfully processed records */
47
+ success: T[];
48
+ /** Array of failed records with error info */
49
+ failed: Array<{
50
+ record: T;
51
+ error: Error;
52
+ }>;
53
+ /** Total number of records processed */
54
+ total: number;
55
+ /** Number of records per batch */
56
+ chunkSize: number;
57
+ /** Total number of batches */
58
+ batches: number;
59
+ /** Total duration in milliseconds */
60
+ duration: number;
61
+ }
62
+ /**
63
+ * Single query in a batch
64
+ */
65
+ export interface QueryBatch {
66
+ sql: string;
67
+ params?: any[];
68
+ values?: Record<string, any>;
69
+ }
70
+ /**
71
+ * Batch query optimizer
72
+ */
73
+ export declare class BatchQueryOptimizer {
74
+ private dialect;
75
+ private defaultOptions;
76
+ constructor(dialect: Dialect, defaultOptions?: Partial<BatchOptions>);
77
+ /**
78
+ * Set default options for batch operations
79
+ */
80
+ setDefaultOptions(options: Partial<BatchOptions>): void;
81
+ /**
82
+ * Optimize batch insert by combining multiple INSERT statements
83
+ * @param tableName - Name of the table to insert into
84
+ * @param records - Array of records to insert
85
+ * @param options - Batch options
86
+ */
87
+ optimizeBatchInsert(tableName: string, records: Record<string, any>[], options?: Partial<BatchOptions>): Promise<BatchResult>;
88
+ /**
89
+ * Build the next placeholder token for a bound parameter, given the running
90
+ * 1-based parameter index. Matches the placeholder convention each dialect's
91
+ * own buildInsertQuery/buildUpdateQuery/buildDeleteQuery already uses:
92
+ * - postgres: $1, $2, ...
93
+ * - mssql: @p1, @p2, ...
94
+ * - oracle: :1, :2, ...
95
+ * - others (mysql/mariadb/sqlite): ?
96
+ */
97
+ private nextPlaceholder;
98
+ /**
99
+ * Execute a batch insert using multi-value INSERT
100
+ * Uses bound parameters with dialect-correct placeholders ($1, $2, ... for
101
+ * PostgreSQL, `?` for the other dialects) instead of interpolating values.
102
+ */
103
+ private executeBatchInsert;
104
+ /**
105
+ * Execute a single record insert
106
+ */
107
+ private executeSingleInsert;
108
+ /**
109
+ * Optimize batch update
110
+ * @param tableName - Name of the table to update
111
+ * @param records - Records to update (must have primary key or unique identifier)
112
+ * @param identifierColumn - Column to use for identifying records
113
+ * @param options - Batch options
114
+ */
115
+ optimizeBatchUpdate(tableName: string, records: Record<string, any>[], identifierColumn?: string, options?: Partial<BatchOptions>): Promise<BatchResult>;
116
+ /**
117
+ * Execute batch update using CASE expressions
118
+ * Uses bound parameters with dialect-correct placeholders instead of
119
+ * interpolating escaped literals directly into the SQL string.
120
+ */
121
+ private executeBatchUpdate;
122
+ /**
123
+ * Execute a single record update
124
+ */
125
+ private executeSingleUpdate;
126
+ /**
127
+ * Optimize batch delete
128
+ * @param tableName - Name of the table to delete from
129
+ * @param identifiers - Array of identifiers for records to delete
130
+ * @param identifierColumn - Column to use for identifying records
131
+ * @param options - Batch options
132
+ */
133
+ optimizeBatchDelete(tableName: string, identifiers: any[], identifierColumn?: string, options?: Partial<BatchOptions>): Promise<BatchResult>;
134
+ /**
135
+ * Execute batch delete using IN clause
136
+ * Uses bound parameters with dialect-correct placeholders instead of
137
+ * interpolating escaped literals directly into the SQL string.
138
+ */
139
+ private executeBatchDelete;
140
+ /**
141
+ * Execute a single record delete
142
+ */
143
+ private executeSingleDelete;
144
+ /**
145
+ * Check if error is a duplicate key error
146
+ */
147
+ private isDuplicateKeyError;
148
+ /**
149
+ * Chunk an array into smaller arrays
150
+ */
151
+ private chunkArray;
152
+ /**
153
+ * Log progress
154
+ */
155
+ private logProgress;
156
+ }
157
+ /**
158
+ * Optimize a batch insert operation
159
+ */
160
+ export declare function optimizeBatchInsert(dialect: Dialect, tableName: string, records: Record<string, any>[], options?: Partial<BatchOptions>): Promise<BatchResult>;
161
+ /**
162
+ * Optimize a batch update operation
163
+ */
164
+ export declare function optimizeBatchUpdate(dialect: Dialect, tableName: string, records: Record<string, any>[], identifierColumn?: string, options?: Partial<BatchOptions>): Promise<BatchResult>;
165
+ /**
166
+ * Optimize a batch delete operation
167
+ */
168
+ export declare function optimizeBatchDelete(dialect: Dialect, tableName: string, identifiers: any[], identifierColumn?: string, options?: Partial<BatchOptions>): Promise<BatchResult>;
169
+ declare const _default: {
170
+ BatchQueryOptimizer: typeof BatchQueryOptimizer;
171
+ optimizeBatchInsert: typeof optimizeBatchInsert;
172
+ optimizeBatchUpdate: typeof optimizeBatchUpdate;
173
+ optimizeBatchDelete: typeof optimizeBatchDelete;
174
+ };
175
+ export default _default;