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.
- package/CHANGELOG.md +83 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +711 -0
- package/dist/index.js +19 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- 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
|
+
};
|