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.
- package/CHANGELOG.md +95 -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 +713 -0
- package/dist/index.js +36 -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,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TimescaleDB dialect implementation for the TypeScript ORM
|
|
3
|
+
*
|
|
4
|
+
* TimescaleDB is not a separate database engine — it is a PostgreSQL extension
|
|
5
|
+
* (`CREATE EXTENSION timescaledb`) that layers time-series capabilities on top
|
|
6
|
+
* of a stock PostgreSQL server. Because of that, this dialect extends
|
|
7
|
+
* `PostgresDialect` and reuses the exact same `pg` driver, wire protocol, and
|
|
8
|
+
* default port (5432). Everything PostgreSQL can do, TimescaleDB can do; this
|
|
9
|
+
* subclass only adds thin SQL builders for TimescaleDB-specific features.
|
|
10
|
+
*
|
|
11
|
+
* TimescaleDB-specific helpers (pure, synchronous SQL builders — they return
|
|
12
|
+
* the SQL string so callers can run it through the inherited `query()`):
|
|
13
|
+
*
|
|
14
|
+
* - `createExtensionSQL()` → `CREATE EXTENSION IF NOT EXISTS timescaledb`
|
|
15
|
+
* - `createHypertable()` → `SELECT create_hypertable(...)`
|
|
16
|
+
* - `addCompressionPolicy()` → `SELECT add_compression_policy(...)`
|
|
17
|
+
* - `addRetentionPolicy()` → `SELECT add_retention_policy(...)`
|
|
18
|
+
* - `createContinuousAggregate()` → `CREATE MATERIALIZED VIEW ... WITH (timescaledb.continuous) AS ...`
|
|
19
|
+
* - `enableCompression()` → `ALTER TABLE ... SET (timescaledb.compress, ...)`
|
|
20
|
+
*
|
|
21
|
+
* @see https://docs.timescale.com/
|
|
22
|
+
*/
|
|
23
|
+
import { PostgresDialect, PostgresDialectOptions } from '../postgres/index';
|
|
24
|
+
/**
|
|
25
|
+
* Options for {@link TimescaleDBDialect.createHypertable}.
|
|
26
|
+
* @see https://docs.timescale.com/api/latest/hypertable/create_hypertable/
|
|
27
|
+
*/
|
|
28
|
+
export interface CreateHypertableOptions {
|
|
29
|
+
/**
|
|
30
|
+
* Chunk time interval. A string is treated as a PostgreSQL interval literal
|
|
31
|
+
* (e.g. `'7 days'`, `'1 hour'`) and emitted as
|
|
32
|
+
* `chunk_time_interval => INTERVAL '...'`. A number is treated as a raw
|
|
33
|
+
* integer interval (for hypertables partitioned on an integer/bigint time
|
|
34
|
+
* column rather than a timestamp) and emitted as
|
|
35
|
+
* `chunk_time_interval => <number>` with no `INTERVAL` keyword.
|
|
36
|
+
* @default '7 days'
|
|
37
|
+
*/
|
|
38
|
+
chunkTimeInterval?: string | number;
|
|
39
|
+
/** Emit `if_not_exists => TRUE` so re-running is idempotent. */
|
|
40
|
+
ifNotExists?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Emit `migrate_data => TRUE` to convert a table that already contains rows
|
|
43
|
+
* into a hypertable (moving existing data into chunks).
|
|
44
|
+
*/
|
|
45
|
+
migrateData?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Options for {@link TimescaleDBDialect.enableCompression}.
|
|
49
|
+
* @see https://docs.timescale.com/api/latest/compression/alter_table_compression/
|
|
50
|
+
*/
|
|
51
|
+
export interface EnableCompressionOptions {
|
|
52
|
+
/**
|
|
53
|
+
* Column(s) used to segment compressed data
|
|
54
|
+
* (`timescaledb.compress_segmentby`). Accepts a single column name or a list.
|
|
55
|
+
*/
|
|
56
|
+
segmentBy?: string | string[];
|
|
57
|
+
/**
|
|
58
|
+
* Column(s) used to order data within a compressed chunk
|
|
59
|
+
* (`timescaledb.compress_orderby`), e.g. `'time DESC'`.
|
|
60
|
+
*/
|
|
61
|
+
orderBy?: string | string[];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Options for {@link TimescaleDBDialect.addDimension} — add a secondary
|
|
65
|
+
* (space) partitioning dimension to an existing hypertable.
|
|
66
|
+
* @see https://docs.timescale.com/api/latest/hypertable/add_dimension/
|
|
67
|
+
*/
|
|
68
|
+
export interface AddDimensionOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Number of hash partitions for a space dimension
|
|
71
|
+
* (`number_partitions => n`). Mutually exclusive with
|
|
72
|
+
* {@link chunkTimeInterval}.
|
|
73
|
+
*/
|
|
74
|
+
numberPartitions?: number;
|
|
75
|
+
/**
|
|
76
|
+
* Interval for an additional time/range dimension
|
|
77
|
+
* (`chunk_time_interval => ...`). A string becomes an `INTERVAL '...'`
|
|
78
|
+
* literal; a number is emitted raw (integer time columns).
|
|
79
|
+
*/
|
|
80
|
+
chunkTimeInterval?: string | number;
|
|
81
|
+
/** Emit `if_not_exists => TRUE` so re-running is idempotent. */
|
|
82
|
+
ifNotExists?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Options for {@link TimescaleDBDialect.addContinuousAggregatePolicy} — the
|
|
86
|
+
* automatic refresh policy for a continuous aggregate.
|
|
87
|
+
* @see https://docs.timescale.com/api/latest/continuous-aggregates/add_continuous_aggregate_policy/
|
|
88
|
+
*/
|
|
89
|
+
export interface ContinuousAggregatePolicyOptions {
|
|
90
|
+
/**
|
|
91
|
+
* How far back the refresh window starts (`start_offset`). A string is an
|
|
92
|
+
* `INTERVAL '...'` literal, a number is a raw integer offset, and `null`
|
|
93
|
+
* emits `NULL` (refresh from the beginning of time).
|
|
94
|
+
*/
|
|
95
|
+
startOffset: string | number | null;
|
|
96
|
+
/**
|
|
97
|
+
* How close to "now" the refresh window ends (`end_offset`). Same encoding
|
|
98
|
+
* rules as {@link startOffset}.
|
|
99
|
+
*/
|
|
100
|
+
endOffset: string | number | null;
|
|
101
|
+
/** How often the policy runs (`schedule_interval`), e.g. `'1 hour'`. */
|
|
102
|
+
scheduleInterval: string | number;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* TimescaleDB dialect — a PostgreSQL dialect (reusing the `pg` driver on the
|
|
106
|
+
* standard port 5432) extended with time-series helpers backed by the
|
|
107
|
+
* `timescaledb` extension.
|
|
108
|
+
*/
|
|
109
|
+
export declare class TimescaleDBDialect extends PostgresDialect {
|
|
110
|
+
readonly name: "postgres";
|
|
111
|
+
constructor(config?: PostgresDialectOptions);
|
|
112
|
+
/**
|
|
113
|
+
* Build the SQL that enables the TimescaleDB extension on the current
|
|
114
|
+
* database. Overrides the base `createExtension()` idea with a dedicated,
|
|
115
|
+
* synchronous SQL builder specifically for `timescaledb`.
|
|
116
|
+
*
|
|
117
|
+
* @param extensionName - Extension to enable. Defaults to `'timescaledb'`.
|
|
118
|
+
* @returns `CREATE EXTENSION IF NOT EXISTS timescaledb`
|
|
119
|
+
*/
|
|
120
|
+
createExtensionSQL(extensionName?: string): string;
|
|
121
|
+
/**
|
|
122
|
+
* Format a TimescaleDB interval argument. Time-based hypertables use a
|
|
123
|
+
* PostgreSQL interval literal (`INTERVAL '7 days'`); integer-based
|
|
124
|
+
* hypertables use a bare integer (e.g. `86400000`). A number is emitted
|
|
125
|
+
* as a raw integer with no `INTERVAL` keyword; a string is wrapped in a
|
|
126
|
+
* safely-escaped `INTERVAL '...'` literal.
|
|
127
|
+
*/
|
|
128
|
+
private formatInterval;
|
|
129
|
+
/**
|
|
130
|
+
* Build a `SELECT create_hypertable(...)` statement that converts a regular
|
|
131
|
+
* table into a TimescaleDB hypertable partitioned on a time column.
|
|
132
|
+
*
|
|
133
|
+
* @param table - Table to convert.
|
|
134
|
+
* @param timeColumn - The time/timestamp column to partition on.
|
|
135
|
+
* @param opts - Chunk interval and other options.
|
|
136
|
+
* @returns e.g. `SELECT create_hypertable('conditions', 'time', chunk_time_interval => INTERVAL '7 days')`
|
|
137
|
+
*/
|
|
138
|
+
createHypertable(table: string, timeColumn: string, opts?: CreateHypertableOptions): string;
|
|
139
|
+
/**
|
|
140
|
+
* Build a `SELECT add_compression_policy(...)` statement that schedules
|
|
141
|
+
* automatic compression of chunks older than the given interval. The table
|
|
142
|
+
* must have compression enabled first (see {@link enableCompression}).
|
|
143
|
+
*
|
|
144
|
+
* @param table - Hypertable to add the policy to.
|
|
145
|
+
* @param olderThan - Age threshold. A string is a PostgreSQL interval literal
|
|
146
|
+
* (e.g. `'30 days'`); a number is a raw integer threshold for hypertables
|
|
147
|
+
* partitioned on an integer time column.
|
|
148
|
+
* @returns e.g. `SELECT add_compression_policy('conditions', INTERVAL '30 days')`
|
|
149
|
+
*/
|
|
150
|
+
addCompressionPolicy(table: string, olderThan: string | number): string;
|
|
151
|
+
/**
|
|
152
|
+
* Build a `SELECT add_retention_policy(...)` statement that schedules
|
|
153
|
+
* automatic dropping of chunks older than the given interval.
|
|
154
|
+
*
|
|
155
|
+
* @param table - Hypertable to add the policy to.
|
|
156
|
+
* @param olderThan - Age threshold. A string is a PostgreSQL interval literal
|
|
157
|
+
* (e.g. `'90 days'`); a number is a raw integer threshold for hypertables
|
|
158
|
+
* partitioned on an integer time column.
|
|
159
|
+
* @returns e.g. `SELECT add_retention_policy('conditions', INTERVAL '90 days')`
|
|
160
|
+
*/
|
|
161
|
+
addRetentionPolicy(table: string, olderThan: string | number): string;
|
|
162
|
+
/**
|
|
163
|
+
* Build a `CREATE MATERIALIZED VIEW ... WITH (timescaledb.continuous) AS ...`
|
|
164
|
+
* statement for a continuous aggregate — a TimescaleDB materialized view that
|
|
165
|
+
* is incrementally and automatically refreshed as new data arrives.
|
|
166
|
+
*
|
|
167
|
+
* @param viewName - Name of the continuous aggregate view to create.
|
|
168
|
+
* @param query - The `SELECT` query (typically using `time_bucket(...)`) that defines the aggregate.
|
|
169
|
+
* @returns e.g. `CREATE MATERIALIZED VIEW "daily_avg" WITH (timescaledb.continuous) AS SELECT ...`
|
|
170
|
+
*/
|
|
171
|
+
createContinuousAggregate(viewName: string, query: string): string;
|
|
172
|
+
/**
|
|
173
|
+
* Build an `ALTER TABLE ... SET (timescaledb.compress, ...)` statement that
|
|
174
|
+
* enables native compression on a hypertable and optionally configures the
|
|
175
|
+
* segment-by / order-by columns.
|
|
176
|
+
*
|
|
177
|
+
* @param table - Hypertable to enable compression on.
|
|
178
|
+
* @param opts - Segment-by and order-by column configuration.
|
|
179
|
+
* @returns e.g. `ALTER TABLE "conditions" SET (timescaledb.compress, timescaledb.compress_segmentby = 'device_id')`
|
|
180
|
+
*/
|
|
181
|
+
enableCompression(table: string, opts?: EnableCompressionOptions): string;
|
|
182
|
+
/**
|
|
183
|
+
* Format an interval-or-null argument for a policy function. `null` becomes
|
|
184
|
+
* the SQL literal `NULL`; otherwise delegates to {@link formatInterval}.
|
|
185
|
+
*/
|
|
186
|
+
private formatIntervalOrNull;
|
|
187
|
+
/**
|
|
188
|
+
* Build a `SELECT add_dimension(...)` statement adding a secondary
|
|
189
|
+
* partitioning dimension (space or additional time) to a hypertable — used
|
|
190
|
+
* for multi-dimensional partitioning (e.g. partition by time AND device id).
|
|
191
|
+
*
|
|
192
|
+
* @returns e.g. `SELECT add_dimension('conditions', 'device_id', number_partitions => 4)`
|
|
193
|
+
*/
|
|
194
|
+
addDimension(table: string, column: string, opts?: AddDimensionOptions): string;
|
|
195
|
+
/**
|
|
196
|
+
* Build a `SELECT drop_chunks(...)` statement that drops chunks older than
|
|
197
|
+
* (and, optionally, newer than) the given thresholds — the efficient way to
|
|
198
|
+
* expire time-series data by dropping whole chunks rather than deleting rows.
|
|
199
|
+
*
|
|
200
|
+
* @param table - Hypertable to drop chunks from.
|
|
201
|
+
* @param olderThan - Drop chunks older than this (interval literal or raw integer).
|
|
202
|
+
* @param newerThan - Optional lower bound (`newer_than =>`).
|
|
203
|
+
* @returns e.g. `SELECT drop_chunks('conditions', older_than => INTERVAL '3 months')`
|
|
204
|
+
*/
|
|
205
|
+
dropChunks(table: string, olderThan: string | number, newerThan?: string | number): string;
|
|
206
|
+
/**
|
|
207
|
+
* Build a `SELECT show_chunks(...)` statement listing a hypertable's chunks,
|
|
208
|
+
* optionally filtered by age.
|
|
209
|
+
*
|
|
210
|
+
* @returns e.g. `SELECT show_chunks('conditions', older_than => INTERVAL '3 months')`
|
|
211
|
+
*/
|
|
212
|
+
showChunks(table: string, olderThan?: string | number): string;
|
|
213
|
+
/**
|
|
214
|
+
* Build a `SELECT compress_chunk(...)` statement compressing a single chunk.
|
|
215
|
+
* @param chunk - Fully-qualified chunk name (e.g. `_timescaledb_internal._hyper_1_1_chunk`).
|
|
216
|
+
*/
|
|
217
|
+
compressChunk(chunk: string, ifNotCompressed?: boolean): string;
|
|
218
|
+
/**
|
|
219
|
+
* Build a `SELECT decompress_chunk(...)` statement decompressing a chunk.
|
|
220
|
+
*/
|
|
221
|
+
decompressChunk(chunk: string, ifCompressed?: boolean): string;
|
|
222
|
+
/**
|
|
223
|
+
* Build a `SELECT reorder_chunk(...)` statement that physically reorders a
|
|
224
|
+
* chunk by the given index to improve locality of range scans.
|
|
225
|
+
*/
|
|
226
|
+
reorderChunk(chunk: string, indexName: string): string;
|
|
227
|
+
/**
|
|
228
|
+
* Build a `SELECT remove_compression_policy(...)` statement.
|
|
229
|
+
*/
|
|
230
|
+
removeCompressionPolicy(table: string, ifExists?: boolean): string;
|
|
231
|
+
/**
|
|
232
|
+
* Build a `SELECT remove_retention_policy(...)` statement.
|
|
233
|
+
*/
|
|
234
|
+
removeRetentionPolicy(table: string, ifExists?: boolean): string;
|
|
235
|
+
/**
|
|
236
|
+
* Build a `SELECT add_continuous_aggregate_policy(...)` statement that
|
|
237
|
+
* schedules automatic incremental refresh of a continuous aggregate.
|
|
238
|
+
*
|
|
239
|
+
* @returns e.g. `SELECT add_continuous_aggregate_policy('daily_avg',
|
|
240
|
+
* start_offset => INTERVAL '1 month', end_offset => INTERVAL '1 hour',
|
|
241
|
+
* schedule_interval => INTERVAL '1 hour')`
|
|
242
|
+
*/
|
|
243
|
+
addContinuousAggregatePolicy(viewName: string, opts: ContinuousAggregatePolicyOptions): string;
|
|
244
|
+
/**
|
|
245
|
+
* Build a `SELECT remove_continuous_aggregate_policy(...)` statement.
|
|
246
|
+
*/
|
|
247
|
+
removeContinuousAggregatePolicy(viewName: string, ifExists?: boolean): string;
|
|
248
|
+
/**
|
|
249
|
+
* Build a `CALL refresh_continuous_aggregate(...)` statement that manually
|
|
250
|
+
* refreshes a continuous aggregate over the `[start, end)` window. Pass
|
|
251
|
+
* `null` for an unbounded side (`NULL` = beginning/end of time).
|
|
252
|
+
*
|
|
253
|
+
* @returns e.g. `CALL refresh_continuous_aggregate('daily_avg', '2023-01-01', '2023-02-01')`
|
|
254
|
+
*/
|
|
255
|
+
refreshContinuousAggregate(viewName: string, windowStart: string | null, windowEnd: string | null): string;
|
|
256
|
+
/**
|
|
257
|
+
* Build a `DROP MATERIALIZED VIEW ...` statement for a continuous aggregate
|
|
258
|
+
* (continuous aggregates are dropped as materialized views).
|
|
259
|
+
*/
|
|
260
|
+
dropContinuousAggregate(viewName: string, opts?: {
|
|
261
|
+
ifExists?: boolean;
|
|
262
|
+
cascade?: boolean;
|
|
263
|
+
}): string;
|
|
264
|
+
/**
|
|
265
|
+
* Build a TimescaleDB `time_bucket(...)` expression for bucketing a timestamp
|
|
266
|
+
* column into fixed-width intervals — the core building block of a continuous
|
|
267
|
+
* aggregate's `SELECT`. Returns just the expression so callers can embed it
|
|
268
|
+
* in a larger query.
|
|
269
|
+
*
|
|
270
|
+
* @param interval - Bucket width. A string becomes `INTERVAL '...'`; a number
|
|
271
|
+
* is emitted raw (integer time columns).
|
|
272
|
+
* @param column - The timestamp column to bucket.
|
|
273
|
+
* @returns e.g. `time_bucket(INTERVAL '1 hour', "ts")`
|
|
274
|
+
*/
|
|
275
|
+
timeBucket(interval: string | number, column: string): string;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Options for constructing a {@link TimescaleDBDialect}. Identical to
|
|
279
|
+
* PostgreSQL's options since TimescaleDB reuses the `pg` driver.
|
|
280
|
+
*/
|
|
281
|
+
export type TimescaleDBDialectOptions = PostgresDialectOptions;
|
|
282
|
+
/**
|
|
283
|
+
* Create a new TimescaleDB dialect instance.
|
|
284
|
+
*/
|
|
285
|
+
export declare function createTimescaleDBDialect(options?: TimescaleDBDialectOptions): TimescaleDBDialect;
|
|
286
|
+
export default TimescaleDBDialect;
|
|
@@ -153,6 +153,185 @@ class TimescaleDBDialect extends index_1.PostgresDialect {
|
|
|
153
153
|
}
|
|
154
154
|
return `ALTER TABLE ${this.quoteTable(table)} SET (${settings.join(', ')})`;
|
|
155
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Format an interval-or-null argument for a policy function. `null` becomes
|
|
158
|
+
* the SQL literal `NULL`; otherwise delegates to {@link formatInterval}.
|
|
159
|
+
*/
|
|
160
|
+
formatIntervalOrNull(value) {
|
|
161
|
+
if (value === null) {
|
|
162
|
+
return 'NULL';
|
|
163
|
+
}
|
|
164
|
+
return this.formatInterval(value);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Build a `SELECT add_dimension(...)` statement adding a secondary
|
|
168
|
+
* partitioning dimension (space or additional time) to a hypertable — used
|
|
169
|
+
* for multi-dimensional partitioning (e.g. partition by time AND device id).
|
|
170
|
+
*
|
|
171
|
+
* @returns e.g. `SELECT add_dimension('conditions', 'device_id', number_partitions => 4)`
|
|
172
|
+
*/
|
|
173
|
+
addDimension(table, column, opts) {
|
|
174
|
+
const args = [this.escape(table), this.escape(column)];
|
|
175
|
+
if (opts?.numberPartitions !== undefined) {
|
|
176
|
+
args.push(`number_partitions => ${opts.numberPartitions}`);
|
|
177
|
+
}
|
|
178
|
+
if (opts?.chunkTimeInterval !== undefined) {
|
|
179
|
+
args.push(`chunk_time_interval => ${this.formatInterval(opts.chunkTimeInterval)}`);
|
|
180
|
+
}
|
|
181
|
+
if (opts?.ifNotExists) {
|
|
182
|
+
args.push('if_not_exists => TRUE');
|
|
183
|
+
}
|
|
184
|
+
return `SELECT add_dimension(${args.join(', ')})`;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Build a `SELECT drop_chunks(...)` statement that drops chunks older than
|
|
188
|
+
* (and, optionally, newer than) the given thresholds — the efficient way to
|
|
189
|
+
* expire time-series data by dropping whole chunks rather than deleting rows.
|
|
190
|
+
*
|
|
191
|
+
* @param table - Hypertable to drop chunks from.
|
|
192
|
+
* @param olderThan - Drop chunks older than this (interval literal or raw integer).
|
|
193
|
+
* @param newerThan - Optional lower bound (`newer_than =>`).
|
|
194
|
+
* @returns e.g. `SELECT drop_chunks('conditions', older_than => INTERVAL '3 months')`
|
|
195
|
+
*/
|
|
196
|
+
dropChunks(table, olderThan, newerThan) {
|
|
197
|
+
const args = [
|
|
198
|
+
this.escape(table),
|
|
199
|
+
`older_than => ${this.formatInterval(olderThan)}`,
|
|
200
|
+
];
|
|
201
|
+
if (newerThan !== undefined) {
|
|
202
|
+
args.push(`newer_than => ${this.formatInterval(newerThan)}`);
|
|
203
|
+
}
|
|
204
|
+
return `SELECT drop_chunks(${args.join(', ')})`;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Build a `SELECT show_chunks(...)` statement listing a hypertable's chunks,
|
|
208
|
+
* optionally filtered by age.
|
|
209
|
+
*
|
|
210
|
+
* @returns e.g. `SELECT show_chunks('conditions', older_than => INTERVAL '3 months')`
|
|
211
|
+
*/
|
|
212
|
+
showChunks(table, olderThan) {
|
|
213
|
+
const args = [this.escape(table)];
|
|
214
|
+
if (olderThan !== undefined) {
|
|
215
|
+
args.push(`older_than => ${this.formatInterval(olderThan)}`);
|
|
216
|
+
}
|
|
217
|
+
return `SELECT show_chunks(${args.join(', ')})`;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Build a `SELECT compress_chunk(...)` statement compressing a single chunk.
|
|
221
|
+
* @param chunk - Fully-qualified chunk name (e.g. `_timescaledb_internal._hyper_1_1_chunk`).
|
|
222
|
+
*/
|
|
223
|
+
compressChunk(chunk, ifNotCompressed = true) {
|
|
224
|
+
const args = [this.escape(chunk)];
|
|
225
|
+
if (ifNotCompressed) {
|
|
226
|
+
args.push('if_not_compressed => TRUE');
|
|
227
|
+
}
|
|
228
|
+
return `SELECT compress_chunk(${args.join(', ')})`;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Build a `SELECT decompress_chunk(...)` statement decompressing a chunk.
|
|
232
|
+
*/
|
|
233
|
+
decompressChunk(chunk, ifCompressed = true) {
|
|
234
|
+
const args = [this.escape(chunk)];
|
|
235
|
+
if (ifCompressed) {
|
|
236
|
+
args.push('if_compressed => TRUE');
|
|
237
|
+
}
|
|
238
|
+
return `SELECT decompress_chunk(${args.join(', ')})`;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Build a `SELECT reorder_chunk(...)` statement that physically reorders a
|
|
242
|
+
* chunk by the given index to improve locality of range scans.
|
|
243
|
+
*/
|
|
244
|
+
reorderChunk(chunk, indexName) {
|
|
245
|
+
return `SELECT reorder_chunk(${this.escape(chunk)}, ${this.escape(indexName)})`;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Build a `SELECT remove_compression_policy(...)` statement.
|
|
249
|
+
*/
|
|
250
|
+
removeCompressionPolicy(table, ifExists = false) {
|
|
251
|
+
const args = [this.escape(table)];
|
|
252
|
+
if (ifExists) {
|
|
253
|
+
args.push('if_exists => TRUE');
|
|
254
|
+
}
|
|
255
|
+
return `SELECT remove_compression_policy(${args.join(', ')})`;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Build a `SELECT remove_retention_policy(...)` statement.
|
|
259
|
+
*/
|
|
260
|
+
removeRetentionPolicy(table, ifExists = false) {
|
|
261
|
+
const args = [this.escape(table)];
|
|
262
|
+
if (ifExists) {
|
|
263
|
+
args.push('if_exists => TRUE');
|
|
264
|
+
}
|
|
265
|
+
return `SELECT remove_retention_policy(${args.join(', ')})`;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Build a `SELECT add_continuous_aggregate_policy(...)` statement that
|
|
269
|
+
* schedules automatic incremental refresh of a continuous aggregate.
|
|
270
|
+
*
|
|
271
|
+
* @returns e.g. `SELECT add_continuous_aggregate_policy('daily_avg',
|
|
272
|
+
* start_offset => INTERVAL '1 month', end_offset => INTERVAL '1 hour',
|
|
273
|
+
* schedule_interval => INTERVAL '1 hour')`
|
|
274
|
+
*/
|
|
275
|
+
addContinuousAggregatePolicy(viewName, opts) {
|
|
276
|
+
const args = [
|
|
277
|
+
this.escape(viewName),
|
|
278
|
+
`start_offset => ${this.formatIntervalOrNull(opts.startOffset)}`,
|
|
279
|
+
`end_offset => ${this.formatIntervalOrNull(opts.endOffset)}`,
|
|
280
|
+
`schedule_interval => ${this.formatInterval(opts.scheduleInterval)}`,
|
|
281
|
+
];
|
|
282
|
+
return `SELECT add_continuous_aggregate_policy(${args.join(', ')})`;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Build a `SELECT remove_continuous_aggregate_policy(...)` statement.
|
|
286
|
+
*/
|
|
287
|
+
removeContinuousAggregatePolicy(viewName, ifExists = false) {
|
|
288
|
+
const args = [this.escape(viewName)];
|
|
289
|
+
if (ifExists) {
|
|
290
|
+
args.push('if_exists => TRUE');
|
|
291
|
+
}
|
|
292
|
+
return `SELECT remove_continuous_aggregate_policy(${args.join(', ')})`;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Build a `CALL refresh_continuous_aggregate(...)` statement that manually
|
|
296
|
+
* refreshes a continuous aggregate over the `[start, end)` window. Pass
|
|
297
|
+
* `null` for an unbounded side (`NULL` = beginning/end of time).
|
|
298
|
+
*
|
|
299
|
+
* @returns e.g. `CALL refresh_continuous_aggregate('daily_avg', '2023-01-01', '2023-02-01')`
|
|
300
|
+
*/
|
|
301
|
+
refreshContinuousAggregate(viewName, windowStart, windowEnd) {
|
|
302
|
+
const start = windowStart === null ? 'NULL' : this.escape(windowStart);
|
|
303
|
+
const end = windowEnd === null ? 'NULL' : this.escape(windowEnd);
|
|
304
|
+
return `CALL refresh_continuous_aggregate(${this.escape(viewName)}, ${start}, ${end})`;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Build a `DROP MATERIALIZED VIEW ...` statement for a continuous aggregate
|
|
308
|
+
* (continuous aggregates are dropped as materialized views).
|
|
309
|
+
*/
|
|
310
|
+
dropContinuousAggregate(viewName, opts) {
|
|
311
|
+
let sql = 'DROP MATERIALIZED VIEW';
|
|
312
|
+
if (opts?.ifExists) {
|
|
313
|
+
sql += ' IF EXISTS';
|
|
314
|
+
}
|
|
315
|
+
sql += ` ${this.escapeId(viewName)}`;
|
|
316
|
+
if (opts?.cascade) {
|
|
317
|
+
sql += ' CASCADE';
|
|
318
|
+
}
|
|
319
|
+
return sql;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Build a TimescaleDB `time_bucket(...)` expression for bucketing a timestamp
|
|
323
|
+
* column into fixed-width intervals — the core building block of a continuous
|
|
324
|
+
* aggregate's `SELECT`. Returns just the expression so callers can embed it
|
|
325
|
+
* in a larger query.
|
|
326
|
+
*
|
|
327
|
+
* @param interval - Bucket width. A string becomes `INTERVAL '...'`; a number
|
|
328
|
+
* is emitted raw (integer time columns).
|
|
329
|
+
* @param column - The timestamp column to bucket.
|
|
330
|
+
* @returns e.g. `time_bucket(INTERVAL '1 hour', "ts")`
|
|
331
|
+
*/
|
|
332
|
+
timeBucket(interval, column) {
|
|
333
|
+
return `time_bucket(${this.formatInterval(interval)}, ${this.escapeId(column)})`;
|
|
334
|
+
}
|
|
156
335
|
}
|
|
157
336
|
exports.TimescaleDBDialect = TimescaleDBDialect;
|
|
158
337
|
/**
|