ts-prorm-orm 1.1.0 → 1.2.1

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 +95 -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 +713 -0
  239. package/dist/index.js +36 -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,319 @@
1
+ /**
2
+ * Timezone Decorator for the ORM
3
+ *
4
+ * Provides automatic timezone conversion for date/time columns.
5
+ * Supports column-level, table-level, and database-level timezone configuration.
6
+ *
7
+ * Usage:
8
+ *
9
+ * // Column-level timezone
10
+ * @Timezone('UTC') // Store as UTC, convert on read/write
11
+ * createdAt: Date;
12
+ *
13
+ * @Timezone('America/New_York') // Eastern time
14
+ * orderPlacedAt: Date;
15
+ *
16
+ * @Timezone('Europe/London') // British time
17
+ * updatedAt: Date;
18
+ *
19
+ * // Auto-detect from user context
20
+ * @Timezone({ from: 'user' })
21
+ * lastLoginAt: Date;
22
+ *
23
+ * // With format options
24
+ * @Timezone({
25
+ * zone: 'UTC',
26
+ * format: 'ISO', // 'ISO', 'DATE', 'DATETIME', 'TIMESTAMP'
27
+ * storeAs: 'utc' // 'utc', 'local', 'string'
28
+ * })
29
+ * timestamp: Date;
30
+ *
31
+ * // Table-level default timezone
32
+ * @Table({ timezone: 'America/Los_Angeles' })
33
+ * class WestCoastOrder extends Model {}
34
+ *
35
+ * // Database-level timezone setting
36
+ * @DatabaseSetting('timezone', 'UTC')
37
+ */
38
+ import 'reflect-metadata';
39
+ /**
40
+ * Output format for timezone conversion
41
+ */
42
+ export type TimezoneFormat = 'ISO' | 'DATE' | 'DATETIME' | 'TIMESTAMP';
43
+ /**
44
+ * Storage format for timezone data
45
+ */
46
+ export type TimezoneStoreAs = 'utc' | 'local' | 'string';
47
+ /**
48
+ * Timezone source - where to get the timezone
49
+ */
50
+ export type TimezoneSource = string | {
51
+ from: 'user' | 'request' | 'context';
52
+ };
53
+ /**
54
+ * Options for timezone decorator at column level
55
+ */
56
+ export interface TimezoneOptions {
57
+ /**
58
+ * Timezone name (e.g., 'UTC', 'America/New_York')
59
+ * or source configuration for auto-detection
60
+ */
61
+ zone?: TimezoneSource;
62
+ /**
63
+ * Output format when reading from database
64
+ * - 'ISO': ISO 8601 string (2024-01-15T10:30:00.000Z)
65
+ * - 'DATE': Date only string (2024-01-15)
66
+ * - 'DATETIME': Date and time string (2024-01-15 10:30:00)
67
+ * - 'TIMESTAMP': Unix timestamp in milliseconds
68
+ */
69
+ format?: TimezoneFormat;
70
+ /**
71
+ * How to store timezone data in database
72
+ * - 'utc': Store as UTC (recommended)
73
+ * - 'local': Store as local time
74
+ * - 'string': Store as timezone-aware string
75
+ */
76
+ storeAs?: TimezoneStoreAs;
77
+ /**
78
+ * Column name in the database (if different from property name)
79
+ */
80
+ column?: string;
81
+ /**
82
+ * Whether to convert on read (default: true)
83
+ */
84
+ convertOnRead?: boolean;
85
+ /**
86
+ * Whether to convert on write (default: true)
87
+ */
88
+ convertOnWrite?: boolean;
89
+ }
90
+ /**
91
+ * Table-level timezone options
92
+ */
93
+ export interface TableTimezoneOptions {
94
+ /**
95
+ * Default timezone for all date columns in the table
96
+ */
97
+ timezone?: string;
98
+ /**
99
+ * Default format for date columns
100
+ */
101
+ defaultFormat?: TimezoneFormat;
102
+ /**
103
+ * Default storage format
104
+ */
105
+ defaultStoreAs?: TimezoneStoreAs;
106
+ }
107
+ /**
108
+ * Metadata stored for timezone-decorated fields
109
+ */
110
+ export interface TimezoneFieldMeta {
111
+ /**
112
+ * The property name (class field name)
113
+ */
114
+ field: string;
115
+ /**
116
+ * Database column name
117
+ */
118
+ column: string;
119
+ /**
120
+ * Timezone name or source
121
+ */
122
+ zone: TimezoneSource;
123
+ /**
124
+ * Output format
125
+ */
126
+ format: TimezoneFormat;
127
+ /**
128
+ * Storage format
129
+ */
130
+ storeAs: TimezoneStoreAs;
131
+ /**
132
+ * Whether to convert on read
133
+ */
134
+ convertOnRead: boolean;
135
+ /**
136
+ * Whether to convert on write
137
+ */
138
+ convertOnWrite: boolean;
139
+ }
140
+ /**
141
+ * Context for timezone resolution (from request/user)
142
+ */
143
+ export interface TimezoneContext {
144
+ /**
145
+ * User's timezone from request context
146
+ */
147
+ timezone?: string;
148
+ /**
149
+ * Request object for extracting timezone
150
+ */
151
+ request?: any;
152
+ /**
153
+ * Additional context data
154
+ */
155
+ [key: string]: any;
156
+ }
157
+ /**
158
+ * Common timezone constants for easy reference
159
+ */
160
+ export declare const TimezoneEnum: {
161
+ readonly UTC: "UTC";
162
+ readonly US_EASTERN: "America/New_York";
163
+ readonly US_CENTRAL: "America/Chicago";
164
+ readonly US_MOUNTAIN: "America/Denver";
165
+ readonly US_PACIFIC: "America/Los_Angeles";
166
+ readonly EUROPE_LONDON: "Europe/London";
167
+ readonly EUROPE_PARIS: "Europe/Paris";
168
+ readonly EUROPE_BERLIN: "Europe/Berlin";
169
+ readonly ASIA_TOKYO: "Asia/Tokyo";
170
+ readonly ASIA_SHANGHAI: "Asia/Shanghai";
171
+ readonly ASIA_SINGAPORE: "Asia/Singapore";
172
+ readonly AUSTRALIA_SYDNEY: "Australia/Sydney";
173
+ };
174
+ /**
175
+ * Set timezone context for current request/operation
176
+ *
177
+ * @param context - The timezone context
178
+ */
179
+ export declare function setTimezoneContext(context: TimezoneContext | null): void;
180
+ /**
181
+ * Get current timezone context
182
+ *
183
+ * @returns The current timezone context
184
+ */
185
+ export declare function getTimezoneContext(): TimezoneContext | null;
186
+ /**
187
+ * Clear timezone context
188
+ */
189
+ export declare function clearTimezoneContext(): void;
190
+ /**
191
+ * Get timezone from context based on source configuration
192
+ *
193
+ * @param source - The timezone source configuration
194
+ * @returns The resolved timezone string
195
+ */
196
+ export declare function resolveTimezoneFromContext(source: TimezoneSource): string | undefined;
197
+ /**
198
+ * Get all timezone field metadata from a model class
199
+ */
200
+ export declare function getTimezoneFields(target: Function): TimezoneFieldMeta[];
201
+ /**
202
+ * Get timezone metadata for a specific field
203
+ */
204
+ export declare function getTimezoneForField(target: Function, field: string): TimezoneFieldMeta | undefined;
205
+ /**
206
+ * Get table-level timezone configuration
207
+ */
208
+ export declare function getTableTimezone(target: Function): TableTimezoneOptions | undefined;
209
+ /**
210
+ * Get default timezone from class
211
+ */
212
+ export declare function getDefaultTimezone(target: Function): string | undefined;
213
+ /**
214
+ * Convert date to specified timezone
215
+ *
216
+ * @param date - The date to convert
217
+ * @param targetZone - Target timezone (e.g., 'America/New_York')
218
+ * @returns Date adjusted to target timezone
219
+ */
220
+ export declare function convertToTimezone(date: Date, targetZone: string): Date;
221
+ /**
222
+ * Convert date from specified timezone to UTC
223
+ *
224
+ * @param date - The date to convert
225
+ * @param sourceZone - Source timezone (e.g., 'America/New_York')
226
+ * @returns Date in UTC
227
+ */
228
+ export declare function convertFromTimezone(date: Date, sourceZone: string): Date;
229
+ /**
230
+ * Format date according to specified format
231
+ *
232
+ * @param date - The date to format
233
+ * @param format - The format type
234
+ * @returns Formatted date string or timestamp
235
+ */
236
+ export declare function formatDateTimezone(date: Date, format: TimezoneFormat): string | number;
237
+ /**
238
+ * Parse date from database storage format
239
+ *
240
+ * @param value - The value from database
241
+ * @param format - The expected format
242
+ * @returns Parsed Date object
243
+ */
244
+ export declare function parseDate(value: any, format: TimezoneFormat): Date | null;
245
+ /**
246
+ * Convert value when reading from database
247
+ *
248
+ * @param value - Raw value from database
249
+ * @param meta - Timezone metadata
250
+ * @returns Converted value
251
+ */
252
+ export declare function convertOnRead(value: any, meta: TimezoneFieldMeta): Date | string | number | null;
253
+ /**
254
+ * Convert value when writing to database
255
+ *
256
+ * @param value - Value from application
257
+ * @param meta - Timezone metadata
258
+ * @returns Value ready for database
259
+ */
260
+ export declare function convertOnWrite(value: any, meta: TimezoneFieldMeta): any;
261
+ /**
262
+ * Column-level timezone decorator
263
+ *
264
+ * @param options - Timezone options or timezone string
265
+ */
266
+ export declare function Timezone(options?: TimezoneOptions | string): PropertyDecorator;
267
+ /**
268
+ * Apply timezone conversion to query options
269
+ *
270
+ * @param queryOptions - Original query options
271
+ * @param targetTimezone - Target timezone for conversion
272
+ * @returns Modified query options with timezone
273
+ */
274
+ export declare function applyTimezoneToQuery(queryOptions: any, targetTimezone: string): any;
275
+ /**
276
+ * Convert where clause dates to specified timezone
277
+ *
278
+ * @param where - Original where clause
279
+ * @param timezone - Target timezone
280
+ * @returns Modified where clause with timezone context
281
+ */
282
+ export declare function convertWhereToTimezone(where: any, timezone: string): any;
283
+ /**
284
+ * Get effective timezone for a field (column-level or table-level default)
285
+ *
286
+ * @param target - Model class
287
+ * @param field - Field name
288
+ * @returns Effective timezone or undefined
289
+ */
290
+ export declare function getEffectiveTimezone(target: Function, field: string): string | undefined;
291
+ /**
292
+ * Get all timezone metadata for a model including table defaults
293
+ *
294
+ * @param target - Model class
295
+ * @returns Array of timezone field metadata
296
+ */
297
+ export declare function getAllTimezoneFields(target: Function): TimezoneFieldMeta[];
298
+ /**
299
+ * Convert model instance field values based on timezone metadata
300
+ *
301
+ * @param instance - Model instance
302
+ * @param targetTimezone - Target timezone for conversion
303
+ * @returns Converted instance values
304
+ */
305
+ export declare function convertInstanceOnRead(instance: any, targetTimezone: string): any;
306
+ /**
307
+ * Convert model instance field values before writing to database
308
+ *
309
+ * @param instance - Model instance
310
+ * @returns Converted values ready for database
311
+ */
312
+ export declare function convertInstanceOnWrite(instance: any): any;
313
+ /**
314
+ * Register hooks for automatic timezone conversion
315
+ * Call this after Model.init()
316
+ *
317
+ * @param ModelClass - The model class
318
+ */
319
+ export declare function applyTimezoneHooks(ModelClass: any): void;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @Trigger class decorator — declare a database trigger on a model class.
3
+ *
4
+ * Stores trigger metadata using plain class properties (no reflect-metadata
5
+ * dependency) consistent with the rest of this decorator suite.
6
+ *
7
+ * Example:
8
+ *
9
+ * @Trigger({
10
+ * name: 'trg_users_audit',
11
+ * timing: 'AFTER',
12
+ * event: 'INSERT',
13
+ * body: `INSERT INTO audit_log(action, ts) VALUES ('INSERT', NOW())`,
14
+ * forEach: 'ROW',
15
+ * })
16
+ * class User extends Model { ... }
17
+ *
18
+ * // Retrieve trigger definitions:
19
+ * const triggers = getTriggers(User);
20
+ *
21
+ * // Generate DDL:
22
+ * const sql = buildCreateTriggerSQL('users', triggers[0], 'mysql');
23
+ */
24
+ export interface TriggerOptions {
25
+ /** The trigger name in the database. */
26
+ name: string;
27
+ /** When the trigger fires relative to the DML event. */
28
+ timing: 'BEFORE' | 'AFTER' | 'INSTEAD OF';
29
+ /** The DML event that activates the trigger. */
30
+ event: 'INSERT' | 'UPDATE' | 'DELETE';
31
+ /** The SQL body of the trigger action. */
32
+ body: string;
33
+ /** Row-level or statement-level (default: 'ROW'). */
34
+ forEach?: 'ROW' | 'STATEMENT';
35
+ }
36
+ /**
37
+ * Attach a trigger definition to a model class.
38
+ * Multiple @Trigger decorators may be stacked on the same class.
39
+ */
40
+ export declare function Trigger(options: TriggerOptions): ClassDecorator;
41
+ /**
42
+ * Return all trigger definitions registered on a class.
43
+ */
44
+ export declare function getTriggers(target: any): TriggerOptions[];
45
+ /**
46
+ * Generate a CREATE TRIGGER DDL statement for the given dialect.
47
+ *
48
+ * Supported dialects: 'mysql' | 'mariadb' | 'postgres' | 'sqlite'
49
+ */
50
+ export declare function buildCreateTriggerSQL(tableName: string, trigger: TriggerOptions, dialect: string): string;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * UUID Decorator for the ORM
3
+ *
4
+ * Provides PostgreSQL UUID type support with automatic extension management.
5
+ * Requires: CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
6
+ *
7
+ * Usage:
8
+ *
9
+ * // Auto-generate UUID using gen_random_uuid() (PostgreSQL 13+)
10
+ * @UUID()
11
+ * id: string;
12
+ *
13
+ * // Use uuid_generate_v4() (requires uuid-ossp extension)
14
+ * @UUID({ defaultValue: 'uuid_generate_v4' })
15
+ * id: string;
16
+ *
17
+ * // With custom default
18
+ * @UUID({ defaultValue: 'gen_random_uuid' })
19
+ * id: string;
20
+ */
21
+ /**
22
+ * Options for UUID column type
23
+ */
24
+ export interface UUIDDecoratorOptions {
25
+ /** Default value generator:
26
+ * - 'gen_random_uuid': Uses gen_random_uuid() (PostgreSQL 13+)
27
+ * - 'uuid_generate_v4': Uses uuid_generate_v4() (requires uuid-ossp extension)
28
+ * - Custom SQL expression
29
+ */
30
+ defaultValue?: 'gen_random_uuid' | 'uuid_generate_v4' | string;
31
+ /** Whether the column allows null */
32
+ allowNull?: boolean;
33
+ /** Comment for the column */
34
+ comment?: string;
35
+ /** Custom column name in the database */
36
+ field?: string;
37
+ }
38
+ /**
39
+ * Metadata stored on the property
40
+ */
41
+ export interface UUIDMetadata {
42
+ options: UUIDDecoratorOptions;
43
+ }
44
+ /**
45
+ * UUID decorator for PostgreSQL UUID columns
46
+ *
47
+ * @param options - Optional UUID column options
48
+ *
49
+ * @example
50
+ * // Auto-generate UUID
51
+ * class User extends Model {
52
+ * @UUID()
53
+ * id: string;
54
+ * }
55
+ *
56
+ * // With specific default
57
+ * class User extends Model {
58
+ * @UUID({ defaultValue: 'uuid_generate_v4' })
59
+ * id: string;
60
+ * }
61
+ */
62
+ export declare function UUID(options?: UUIDDecoratorOptions): PropertyDecorator;
63
+ /**
64
+ * Get UUID metadata for a property
65
+ *
66
+ * @param target - The target class
67
+ * @param propertyKey - The property name
68
+ * @returns UUID metadata or undefined if not found
69
+ */
70
+ export declare function getUUIDMetadata(target: object, propertyKey: string | symbol): UUIDMetadata | undefined;
71
+ /**
72
+ * Get all UUID metadata for a class
73
+ *
74
+ * @param target - The target class
75
+ * @returns Map of property names to UUID metadata
76
+ */
77
+ export declare function getAllUUIDMetadata(target: object): Map<string, UUIDMetadata>;
78
+ /**
79
+ * Check if a property is a UUID column
80
+ *
81
+ * @param target - The target class
82
+ * @param propertyKey - The property name
83
+ * @returns True if the property is a UUID column
84
+ */
85
+ export declare function isUUIDColumn(target: object, propertyKey: string | symbol): boolean;
86
+ /**
87
+ * Clear UUID metadata (useful for testing)
88
+ */
89
+ export declare function clearUUIDMetadata(): void;
90
+ /**
91
+ * Get the SQL to create the UUID extension
92
+ *
93
+ * @returns SQL to create the uuid-ossp extension
94
+ */
95
+ export declare function getUUIDExtensionSQL(): string;
96
+ /**
97
+ * Build the default value SQL for UUID
98
+ *
99
+ * @param options - UUID decorator options
100
+ * @returns SQL for the default value
101
+ */
102
+ export declare function buildUUIDDefaultSQL(options: UUIDDecoratorOptions): string | undefined;
@@ -0,0 +1,213 @@
1
+ /**
2
+ * @View class decorator — annotate a Model class so it maps to a database view
3
+ * instead of a base table. The ORM stores the view definition and can generate
4
+ * the CREATE VIEW DDL for you.
5
+ *
6
+ * Example:
7
+ *
8
+ * @View({
9
+ * name: 'active_users_view',
10
+ * query: `
11
+ * SELECT id, name, email, created_at
12
+ * FROM users
13
+ * WHERE status = 'active'
14
+ * `,
15
+ * replace: true,
16
+ * })
17
+ * class ActiveUser extends Model<ActiveUserAttributes> {
18
+ * declare id: number;
19
+ * declare name: string;
20
+ * declare email: string;
21
+ * declare createdAt: Date;
22
+ * }
23
+ *
24
+ * // After Model.init() — generate and create the view:
25
+ * const sql = ViewRegistry.getSQL(ActiveUser);
26
+ * await prorm.query(sql);
27
+ *
28
+ * // Or let the ORM create it automatically:
29
+ * await ViewRegistry.createView(prorm, ActiveUser);
30
+ *
31
+ * // Query it just like a normal model:
32
+ * const users = await ActiveUser.findAll({ where: { name: 'Alice' } });
33
+ */
34
+ import type { Prorm } from '../prorm';
35
+ export interface ViewOptions {
36
+ /**
37
+ * The view name in the database.
38
+ * Defaults to the class name (snake_cased) if not provided.
39
+ */
40
+ name?: string;
41
+ /**
42
+ * The SELECT statement that defines the view.
43
+ * Either `query` or `queryFn` must be provided.
44
+ */
45
+ query?: string;
46
+ /**
47
+ * A function that returns the SELECT statement.
48
+ * Useful when the query depends on runtime values or other model table names.
49
+ */
50
+ queryFn?: () => string;
51
+ /**
52
+ * Optional schema prefix (e.g. 'public' for PostgreSQL).
53
+ */
54
+ schema?: string;
55
+ /**
56
+ * If true, generates CREATE OR REPLACE VIEW.
57
+ * Default: false.
58
+ */
59
+ replace?: boolean;
60
+ /**
61
+ * PostgreSQL only: if true, the view will be marked WITH CHECK OPTION.
62
+ */
63
+ checkOption?: boolean | 'CASCADED' | 'LOCAL';
64
+ /**
65
+ * Target dialect for DDL generation.
66
+ * One of: 'mysql' | 'mariadb' | 'postgres' | 'sqlite'
67
+ * Defaults to 'mysql'.
68
+ */
69
+ dialect?: 'mysql' | 'mariadb' | 'postgres' | 'sqlite';
70
+ /**
71
+ * PostgreSQL only: if true generates a MATERIALIZED VIEW.
72
+ */
73
+ materialized?: boolean;
74
+ }
75
+ /**
76
+ * Read the @View options attached to a class.
77
+ * Returns undefined if the class has no @View decorator.
78
+ */
79
+ export declare function getViewOptions(target: Function): ViewOptions | undefined;
80
+ /**
81
+ * Mark a Model subclass as a database view.
82
+ *
83
+ * - Sets the `tableName` option to the view name so findAll() etc. work correctly.
84
+ * - Registers view metadata so the ORM can generate CREATE VIEW DDL.
85
+ *
86
+ * @View({ name: 'active_users_view', query: 'SELECT ...' })
87
+ * class ActiveUser extends Model { ... }
88
+ */
89
+ export declare function View(options: ViewOptions): (target: Function) => void;
90
+ export declare const ViewRegistry: {
91
+ /**
92
+ * Generate the CREATE VIEW SQL for a @View-annotated class.
93
+ */
94
+ getSQL(target: Function, dialectOverride?: ViewOptions["dialect"]): string;
95
+ /**
96
+ * Execute the CREATE VIEW statement for a @View-annotated model class.
97
+ */
98
+ createView(prorm: Prorm, target: Function, dialectOverride?: ViewOptions["dialect"]): Promise<void>;
99
+ /**
100
+ * Drop the view for a @View-annotated class.
101
+ * @param ifExists - Emit IF EXISTS (default: true)
102
+ */
103
+ dropView(prorm: Prorm, target: Function, ifExists?: boolean): Promise<void>;
104
+ };
105
+ export type RefreshStrategy = 'ON DEMAND' | 'ON COMMIT';
106
+ export interface MaterializedViewDecoratorOptions {
107
+ /**
108
+ * The materialized view name in the database.
109
+ * Defaults to the class name (snake_cased) if not provided.
110
+ */
111
+ name?: string;
112
+ /**
113
+ * The SELECT statement that defines the materialized view.
114
+ * Either `query` or `queryFn` must be provided.
115
+ */
116
+ query?: string;
117
+ /**
118
+ * A function that returns the SELECT statement.
119
+ * Useful when the query depends on runtime values or other model table names.
120
+ */
121
+ queryFn?: () => string;
122
+ /**
123
+ * Optional schema prefix (e.g. 'public' for PostgreSQL).
124
+ */
125
+ schema?: string;
126
+ /**
127
+ * If true, uses CREATE OR REPLACE MATERIALIZED VIEW.
128
+ * Default: false.
129
+ */
130
+ replace?: boolean;
131
+ /**
132
+ * If true, uses CREATE MATERIALIZED VIEW IF NOT EXISTS.
133
+ * Default: false.
134
+ */
135
+ ifNotExists?: boolean;
136
+ /**
137
+ * If false, uses WITH NO DATA (creates view without populating data).
138
+ * Default: true.
139
+ */
140
+ withData?: boolean;
141
+ /**
142
+ * Unique index name for CONCURRENTLY refresh support.
143
+ * If provided, a unique index will be created on the specified column(s).
144
+ */
145
+ uniqueIndex?: string;
146
+ /**
147
+ * Refresh strategy for the materialized view.
148
+ * - ON DEMAND: Manual refresh using REFRESH MATERIALIZED VIEW (default)
149
+ * - ON COMMIT: Auto-refresh on commit (PostgreSQL feature, limited support)
150
+ */
151
+ refreshStrategy?: RefreshStrategy;
152
+ /**
153
+ * Optional comment for the materialized view.
154
+ */
155
+ comment?: string;
156
+ }
157
+ /**
158
+ * Read the @MaterializedView options attached to a class.
159
+ * Returns undefined if the class has no @MaterializedView decorator.
160
+ */
161
+ export declare function getMaterializedViewOptions(target: Function): MaterializedViewDecoratorOptions | undefined;
162
+ /**
163
+ * Mark a Model subclass as a database materialized view.
164
+ *
165
+ * - Sets the `tableName` option to the view name so findAll() etc. work correctly.
166
+ * - Registers materialized view metadata so the ORM can generate CREATE MATERIALIZED VIEW DDL.
167
+ * - Adds a `refresh()` static method for refreshing the view data.
168
+ *
169
+ * @MaterializedView({
170
+ * name: 'user_stats_view',
171
+ * query: `
172
+ * SELECT user_id, COUNT(*) as order_count
173
+ * FROM orders
174
+ * GROUP BY user_id
175
+ * `,
176
+ * uniqueIndex: 'user_stats_view_user_id_key',
177
+ * })
178
+ * class UserStats extends Model<UserStatsAttributes> {
179
+ * declare userId: number;
180
+ * declare orderCount: number;
181
+ * }
182
+ *
183
+ * // After Model.init() — generate and create the materialized view:
184
+ * const sql = MaterializedViewRegistry.getSQL(UserStats);
185
+ * await prorm.query(sql);
186
+ *
187
+ * // Or let the ORM create it automatically:
188
+ * await MaterializedViewRegistry.createMaterializedView(prorm, UserStats);
189
+ *
190
+ * // Query it just like a normal model:
191
+ * const stats = await UserStats.findAll();
192
+ *
193
+ * // Refresh the materialized view:
194
+ * await UserStats.refresh();
195
+ * // Or concurrently (requires unique index):
196
+ * await UserStats.refresh({ concurrently: true });
197
+ */
198
+ export declare function MaterializedView(options: MaterializedViewDecoratorOptions): (target: Function) => void;
199
+ export declare const MaterializedViewRegistry: {
200
+ /**
201
+ * Generate the CREATE MATERIALIZED VIEW SQL for a @MaterializedView-annotated class.
202
+ */
203
+ getSQL(target: Function, dialectOverride?: "postgres"): string;
204
+ /**
205
+ * Execute the CREATE MATERIALIZED VIEW statement for a @MaterializedView-annotated model class.
206
+ */
207
+ createMaterializedView(prorm: Prorm, target: Function, dialectOverride?: "postgres"): Promise<void>;
208
+ /**
209
+ * Drop the materialized view for a @MaterializedView-annotated class.
210
+ * @param ifExists - Emit IF EXISTS (default: true)
211
+ */
212
+ dropMaterializedView(prorm: Prorm, target: Function, ifExists?: boolean): Promise<void>;
213
+ };