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,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed math-function builder API.
|
|
3
|
+
*
|
|
4
|
+
* Provides typed, autocomplete-friendly builders for common SQL math
|
|
5
|
+
* functions (`ROUND`, `CEIL`/`CEILING`, `FLOOR`, `POWER`, `MOD`, random
|
|
6
|
+
* number generation, `GREATEST`/`LEAST`, `TRUNC`/`TRUNCATE`, ...) across all
|
|
7
|
+
* 11 supported dialects, so callers never need to hand-write raw,
|
|
8
|
+
* dialect-specific SQL for these.
|
|
9
|
+
*
|
|
10
|
+
* This module is intentionally self-contained: it does not add any new
|
|
11
|
+
* dispatch branches to the shared SQL compiler. Every builder resolves
|
|
12
|
+
* directly to a final, dialect-correct SQL fragment string, which is then
|
|
13
|
+
* wrapped with the existing `literal()` helper from `src/operators.ts` so it
|
|
14
|
+
* slots into `attributes: [...]`, `where`, etc. exactly the way `fn()`/
|
|
15
|
+
* `col()`/`cast()` do today.
|
|
16
|
+
*
|
|
17
|
+
* Dialect quirks verified while building this (do not assume symmetry with
|
|
18
|
+
* Postgres/MySQL):
|
|
19
|
+
*
|
|
20
|
+
* - `RANDOM()`/`RAND()` do NOT uniformly return a float in `[0, 1)`:
|
|
21
|
+
* - mysql / mariadb / mssql / db2: `RAND()` -> float in [0, 1).
|
|
22
|
+
* - postgres / cockroachdb / redshift: `RANDOM()` -> float in [0, 1).
|
|
23
|
+
* - sqlite: `RANDOM()` returns a *signed 64-bit integer*
|
|
24
|
+
* (-2^63 .. 2^63-1), NOT a [0,1) float. It must be normalized.
|
|
25
|
+
* - snowflake: `RANDOM()` returns a random *64-bit integer* as well
|
|
26
|
+
* (not [0,1)); the documented way to get a uniform float is
|
|
27
|
+
* `UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`.
|
|
28
|
+
* - oracle: no `RANDOM()`/`RAND()` at all -- must use
|
|
29
|
+
* `DBMS_RANDOM.VALUE`.
|
|
30
|
+
* - clickhouse: `rand()` returns a `UInt32` (0 .. 2^32-1), NOT [0,1).
|
|
31
|
+
* The [0,1) equivalent is `randCanonical()`.
|
|
32
|
+
*
|
|
33
|
+
* - `CEIL` vs `CEILING`: T-SQL (mssql) has no `CEIL` function at all --
|
|
34
|
+
* only `CEILING`. All other dialects here accept `CEIL`.
|
|
35
|
+
*
|
|
36
|
+
* - `GREATEST`/`LEAST`: not supported natively before SQL Server 2022, so
|
|
37
|
+
* mssql gets a portable nested-`CASE` fallback here (works on every
|
|
38
|
+
* supported SQL Server version, not just 2022+). sqlite has no
|
|
39
|
+
* `GREATEST`/`LEAST` keywords either, but its scalar `MAX`/`MIN` (called
|
|
40
|
+
* with 2+ arguments) behave exactly like `GREATEST`/`LEAST`, so that is
|
|
41
|
+
* used instead.
|
|
42
|
+
*
|
|
43
|
+
* - `MOD`: mssql has no `MOD()` function -- only the `%` operator.
|
|
44
|
+
* clickhouse's function is named `modulo`, not `mod`.
|
|
45
|
+
*
|
|
46
|
+
* - `TRUNCATE`/`TRUNC`: MySQL/MariaDB use `TRUNCATE(value, decimals)`;
|
|
47
|
+
* Oracle/Postgres/CockroachDB/Redshift/DB2/Snowflake use
|
|
48
|
+
* `TRUNC(value, decimals)`; mssql has neither -- truncation is done via
|
|
49
|
+
* `ROUND(value, decimals, 1)` (the undocumented-looking-but-real third
|
|
50
|
+
* "truncate instead of round" argument of T-SQL's `ROUND`); sqlite's
|
|
51
|
+
* `trunc()` math-extension function only takes a single argument (no
|
|
52
|
+
* decimals), so a `TRUNC(value * 10^n) / 10^n` fallback is used when
|
|
53
|
+
* `decimals` is supplied.
|
|
54
|
+
*
|
|
55
|
+
* - ClickHouse function names are matched to ClickHouse's own lower-case
|
|
56
|
+
* documented spelling (`round`, `floor`, `ceil`, `abs`, `sign`, `pow`,
|
|
57
|
+
* `modulo`, `trunc`, `greatest`, `least`, `rand`, `randCanonical`) rather
|
|
58
|
+
* than upper-cased ANSI style, since not all of them have registered
|
|
59
|
+
* case-insensitive aliases.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* import { round, power, random, greatest } from './query-builders/functions/math';
|
|
64
|
+
* import { col } from '../../operators';
|
|
65
|
+
*
|
|
66
|
+
* User.findAll({
|
|
67
|
+
* attributes: [
|
|
68
|
+
* [round('postgres', col('price'), 2), 'roundedPrice'],
|
|
69
|
+
* [power('postgres', col('base'), 2), 'squared'],
|
|
70
|
+
* [random('postgres'), 'rnd'],
|
|
71
|
+
* [greatest('mssql', col('a'), col('b'), 10), 'best'],
|
|
72
|
+
* ],
|
|
73
|
+
* });
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
|
|
77
|
+
import type { Dialect } from '../../types/index';
|
|
78
|
+
/**
|
|
79
|
+
* Acceptable argument types for math-function builders: plain numbers/
|
|
80
|
+
* strings (treated as literal SQL values), or other typed expressions
|
|
81
|
+
* (`col()`, `fn()`, `literal()`).
|
|
82
|
+
*/
|
|
83
|
+
export type SqlExpr = string | number | ColExpression | FnExpression | LiteralExpression | {
|
|
84
|
+
$literal: string;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* `ROUND(value[, decimals])`
|
|
88
|
+
*
|
|
89
|
+
* ANSI-consistent across all 11 dialects: MySQL, MariaDB, Postgres, MSSQL,
|
|
90
|
+
* Oracle, SQLite (math-functions extension, 3.35+), CockroachDB, Redshift,
|
|
91
|
+
* DB2, Snowflake, and ClickHouse all accept an optional second `decimals`
|
|
92
|
+
* argument with the same semantics.
|
|
93
|
+
*/
|
|
94
|
+
export declare function round(dialect: Dialect, expr: SqlExpr, decimals?: number): {
|
|
95
|
+
$literal: string;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* `CEIL(value)` / `CEILING(value)`.
|
|
99
|
+
*
|
|
100
|
+
* mssql has no `CEIL` -- only `CEILING`. Every other dialect here accepts
|
|
101
|
+
* `CEIL` (ClickHouse spells it lower-case).
|
|
102
|
+
*/
|
|
103
|
+
export declare function ceil(dialect: Dialect, expr: SqlExpr): {
|
|
104
|
+
$literal: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* `FLOOR(value)`. Consistent naming across all 11 dialects.
|
|
108
|
+
*/
|
|
109
|
+
export declare function floor(dialect: Dialect, expr: SqlExpr): {
|
|
110
|
+
$literal: string;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* `POWER(base, exponent)`.
|
|
114
|
+
*
|
|
115
|
+
* Consistent across all 11 dialects (SQLite's math-functions extension
|
|
116
|
+
* registers both `pow` and `power` as synonyms; ClickHouse registers `pow`
|
|
117
|
+
* and `power` as synonyms too -- lower-cased here for ClickHouse).
|
|
118
|
+
*/
|
|
119
|
+
export declare function power(dialect: Dialect, base: SqlExpr, exponent: SqlExpr): {
|
|
120
|
+
$literal: string;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* `SQRT(value)`. Consistent naming across all 11 dialects.
|
|
124
|
+
*/
|
|
125
|
+
export declare function sqrt(dialect: Dialect, expr: SqlExpr): {
|
|
126
|
+
$literal: string;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* `ABS(value)`. Consistent naming across all 11 dialects.
|
|
130
|
+
*/
|
|
131
|
+
export declare function abs(dialect: Dialect, expr: SqlExpr): {
|
|
132
|
+
$literal: string;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* `SIGN(value)` -- returns -1/0/1.
|
|
136
|
+
*
|
|
137
|
+
* Every dialect here has a native `SIGN()` function EXCEPT sqlite, whose
|
|
138
|
+
* built-in math-functions extension does not include `sign` at all -- so a
|
|
139
|
+
* portable `CASE` expression is used for sqlite instead.
|
|
140
|
+
*/
|
|
141
|
+
export declare function sign(dialect: Dialect, expr: SqlExpr): {
|
|
142
|
+
$literal: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* `MOD(dividend, divisor)`.
|
|
146
|
+
*
|
|
147
|
+
* mssql has no `MOD()` function at all -- only the `%` operator, so mssql
|
|
148
|
+
* renders `(dividend % divisor)`. ClickHouse's function is named `modulo`
|
|
149
|
+
* (not `mod`). Every other dialect here has a native `MOD(a, b)` function.
|
|
150
|
+
*/
|
|
151
|
+
export declare function mod(dialect: Dialect, dividend: SqlExpr, divisor: SqlExpr): {
|
|
152
|
+
$literal: string;
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Random value in `[0, 1)`, using the REAL per-dialect function/expression
|
|
156
|
+
* (deliberately not assumed symmetric):
|
|
157
|
+
*
|
|
158
|
+
* - mysql / mariadb: `RAND()`
|
|
159
|
+
* - postgres / cockroachdb / redshift: `RANDOM()`
|
|
160
|
+
* - mssql: `RAND()`
|
|
161
|
+
* - oracle: `DBMS_RANDOM.VALUE` (no `RAND()`/`RANDOM()` exists in Oracle)
|
|
162
|
+
* - db2: `RAND()`
|
|
163
|
+
* - sqlite: `RANDOM()` returns a signed 64-bit *integer*, not a [0,1)
|
|
164
|
+
* float -- normalized here via `(0.5 + RANDOM() / 18446744073709551616.0)`.
|
|
165
|
+
* - snowflake: `RANDOM()` also returns a 64-bit integer, not [0,1) --
|
|
166
|
+
* normalized here via `UNIFORM(0::FLOAT, 1::FLOAT, RANDOM())`, which is
|
|
167
|
+
* Snowflake's documented way to get a uniform float.
|
|
168
|
+
* - clickhouse: `rand()` returns a `UInt32`, not [0,1) -- `randCanonical()`
|
|
169
|
+
* is ClickHouse's documented [0,1) float generator.
|
|
170
|
+
*/
|
|
171
|
+
export declare function random(dialect: Dialect): {
|
|
172
|
+
$literal: string;
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* `GREATEST(v1, v2, ...)`.
|
|
176
|
+
*
|
|
177
|
+
* - mssql: no native `GREATEST` before SQL Server 2022 -- a portable nested
|
|
178
|
+
* `CASE` expression is used so it works on every supported SQL Server
|
|
179
|
+
* version (not just 2022+).
|
|
180
|
+
* - sqlite: no `GREATEST` keyword -- but scalar `MAX(v1, v2, ...)` (called
|
|
181
|
+
* with 2+ args) behaves exactly like `GREATEST`, so that is used instead.
|
|
182
|
+
* - every other dialect here has native `GREATEST(...)`.
|
|
183
|
+
*/
|
|
184
|
+
export declare function greatest(dialect: Dialect, ...values: SqlExpr[]): {
|
|
185
|
+
$literal: string;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* `LEAST(v1, v2, ...)`.
|
|
189
|
+
*
|
|
190
|
+
* Same quirks as {@link greatest}: mssql falls back to a nested `CASE`
|
|
191
|
+
* expression, sqlite uses scalar `MIN(v1, v2, ...)`.
|
|
192
|
+
*/
|
|
193
|
+
export declare function least(dialect: Dialect, ...values: SqlExpr[]): {
|
|
194
|
+
$literal: string;
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Truncate a value toward zero (no rounding), optionally to `decimals`
|
|
198
|
+
* decimal places.
|
|
199
|
+
*
|
|
200
|
+
* - mysql / mariadb: `TRUNCATE(value, decimals)` (function name is
|
|
201
|
+
* `TRUNCATE`, not `TRUNC`; decimals defaults to 0 when omitted).
|
|
202
|
+
* - oracle / postgres / cockroachdb / redshift / db2 / snowflake:
|
|
203
|
+
* `TRUNC(value, decimals)`.
|
|
204
|
+
* - mssql: no `TRUNC`/`TRUNCATE` function at all -- uses the (real, if
|
|
205
|
+
* obscure) third argument of T-SQL's `ROUND(value, decimals, function)`,
|
|
206
|
+
* where a non-zero third argument truncates instead of rounding:
|
|
207
|
+
* `ROUND(value, decimals, 1)`.
|
|
208
|
+
* - sqlite: the math-functions extension's `trunc(X)` only accepts a single
|
|
209
|
+
* argument (no decimals support) -- when `decimals` is supplied, a
|
|
210
|
+
* `TRUNC(value * 10^n) / 10^n` fallback is used.
|
|
211
|
+
* - clickhouse: `trunc(value, decimals)` (lower-case, 2-arg form supported).
|
|
212
|
+
*/
|
|
213
|
+
export declare function truncate(dialect: Dialect, expr: SqlExpr, decimals?: number): {
|
|
214
|
+
$literal: string;
|
|
215
|
+
};
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed string-function builders.
|
|
3
|
+
*
|
|
4
|
+
* These helpers produce dialect-correct SQL fragments for common string
|
|
5
|
+
* operations (CONCAT, SUBSTRING, TRIM, padding, etc.) so callers never need
|
|
6
|
+
* to hand-write raw SQL for the handful of functions that genuinely differ
|
|
7
|
+
* between dialects (Postgres `||` vs `CONCAT()`, Oracle `SUBSTR` vs the
|
|
8
|
+
* standard `SUBSTRING`, MSSQL `LEN` vs `LENGTH`/`CHAR_LENGTH`, etc.)
|
|
9
|
+
*
|
|
10
|
+
* This module is intentionally self-contained: it does not modify
|
|
11
|
+
* `src/operators.ts` or `src/query-builders/sql-compiler.ts`. It only reads
|
|
12
|
+
* the `literal`, `ColExpression`, `FnExpression`, and `LiteralExpression`
|
|
13
|
+
* primitives from `../../operators` and returns plain `{ $literal: string }`
|
|
14
|
+
* values (via `literal()`) that can be dropped into `attributes`, `where`,
|
|
15
|
+
* etc. exactly like any other literal expression.
|
|
16
|
+
*/
|
|
17
|
+
import { type ColExpression, type FnExpression, type LiteralExpression } from '../../operators';
|
|
18
|
+
import type { Dialect } from '../../types/index';
|
|
19
|
+
/**
|
|
20
|
+
* Column-like argument accepted by the string functions in this module.
|
|
21
|
+
*
|
|
22
|
+
* - A plain `string` is treated as a STRING LITERAL VALUE (it will be quoted
|
|
23
|
+
* and escaped, e.g. `'hello'`), NOT as a column name. To reference a
|
|
24
|
+
* column, wrap it with `col('columnName')`.
|
|
25
|
+
* - `ColExpression` (from `col()`), `FnExpression` (from `fn()`), and
|
|
26
|
+
* `LiteralExpression` (from `literalExpr()`) are rendered as SQL
|
|
27
|
+
* expressions/identifiers, not quoted as literal text.
|
|
28
|
+
*/
|
|
29
|
+
export type SqlExpr = string | ColExpression | FnExpression | LiteralExpression;
|
|
30
|
+
/**
|
|
31
|
+
* String concatenation.
|
|
32
|
+
*
|
|
33
|
+
* - MySQL, MariaDB, MSSQL, Snowflake, ClickHouse: use the variadic
|
|
34
|
+
* `CONCAT(a, b, c, ...)` function (all support 2+ arguments).
|
|
35
|
+
* - Postgres, CockroachDB, Redshift, SQLite, Oracle, DB2: use the `||`
|
|
36
|
+
* operator. These dialects' `CONCAT()` function (where it exists at all)
|
|
37
|
+
* is limited to exactly 2 arguments (Oracle, DB2), so `||` is used
|
|
38
|
+
* uniformly for correctness with any number of parts. Postgres/CockroachDB/
|
|
39
|
+
* SQLite treat `||` as the idiomatic concatenation operator.
|
|
40
|
+
*
|
|
41
|
+
* @param parts - Column-like arguments (columns via `col()`, nested
|
|
42
|
+
* expressions via `fn()`, or literal string values as plain strings).
|
|
43
|
+
*/
|
|
44
|
+
export declare function concat(dialect: Dialect, ...parts: SqlExpr[]): LiteralExpression & {
|
|
45
|
+
$literal: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Extract a substring.
|
|
49
|
+
*
|
|
50
|
+
* - Oracle, DB2, SQLite: use `SUBSTR(expr, start, length)`. SQLite has no
|
|
51
|
+
* built-in `SUBSTRING` function (only `substr`); Oracle/DB2 use `SUBSTR`
|
|
52
|
+
* as their canonical name (both also happen to accept the same argument
|
|
53
|
+
* order as the standard `SUBSTRING(expr, start, length)` form).
|
|
54
|
+
* - MSSQL: `SUBSTRING(expr, start, length)`, but MSSQL requires the length
|
|
55
|
+
* argument. When `length` is omitted, `LEN(expr)` is used as a safe upper
|
|
56
|
+
* bound so the result runs to the end of the string.
|
|
57
|
+
* - MySQL, MariaDB, Postgres, CockroachDB, Redshift, Snowflake, ClickHouse:
|
|
58
|
+
* `SUBSTRING(expr, start, length)` comma-argument form, length optional.
|
|
59
|
+
*
|
|
60
|
+
* @param expr - The column/expression to extract from.
|
|
61
|
+
* @param start - 1-based start position (SQL substring indices are 1-based).
|
|
62
|
+
* @param length - Optional number of characters to extract.
|
|
63
|
+
*/
|
|
64
|
+
export declare function substring(dialect: Dialect, expr: SqlExpr, start: number, length?: number): LiteralExpression & {
|
|
65
|
+
$literal: string;
|
|
66
|
+
};
|
|
67
|
+
export interface TrimOptions {
|
|
68
|
+
/** Which side(s) to trim. Defaults to 'both'. */
|
|
69
|
+
side?: 'both' | 'leading' | 'trailing';
|
|
70
|
+
/** Characters to trim. Defaults to whitespace. */
|
|
71
|
+
chars?: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Trim whitespace (or specific characters) from a string.
|
|
75
|
+
*
|
|
76
|
+
* - Postgres, CockroachDB, Redshift, Oracle, DB2, Snowflake, MySQL, MariaDB,
|
|
77
|
+
* ClickHouse: support the standard
|
|
78
|
+
* `TRIM([BOTH|LEADING|TRAILING] [chars FROM] expr)` syntax.
|
|
79
|
+
* - SQLite: has no `[BOTH|LEADING|TRAILING] FROM` syntax; instead uses
|
|
80
|
+
* `trim(expr[, chars])` / `ltrim(expr[, chars])` / `rtrim(expr[, chars])`.
|
|
81
|
+
* - MSSQL: `TRIM` (2017+) only trims both sides; for one-sided trimming we
|
|
82
|
+
* fall back to `LTRIM`/`RTRIM`. Native `LTRIM`/`RTRIM` in MSSQL only
|
|
83
|
+
* support a `chars` argument starting with SQL Server 2022, so when
|
|
84
|
+
* `chars` is supplied on an older-compatible codepath it is still passed
|
|
85
|
+
* through (SQL Server will error at runtime on versions that don't
|
|
86
|
+
* support it — this is a documented MSSQL version limitation, not a
|
|
87
|
+
* limitation of this helper).
|
|
88
|
+
*/
|
|
89
|
+
export declare function trim(dialect: Dialect, expr: SqlExpr, options?: TrimOptions): LiteralExpression & {
|
|
90
|
+
$literal: string;
|
|
91
|
+
};
|
|
92
|
+
/** Trim from the left only. Equivalent to `trim(dialect, expr, { side: 'leading' })`. */
|
|
93
|
+
export declare function ltrim(dialect: Dialect, expr: SqlExpr, chars?: string): LiteralExpression & {
|
|
94
|
+
$literal: string;
|
|
95
|
+
};
|
|
96
|
+
/** Trim from the right only. Equivalent to `trim(dialect, expr, { side: 'trailing' })`. */
|
|
97
|
+
export declare function rtrim(dialect: Dialect, expr: SqlExpr, chars?: string): LiteralExpression & {
|
|
98
|
+
$literal: string;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Uppercase a string. Identical (`UPPER(expr)`) across all 11 dialects.
|
|
102
|
+
*/
|
|
103
|
+
export declare function upper(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
|
|
104
|
+
$literal: string;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Lowercase a string. Identical (`LOWER(expr)`) across all 11 dialects.
|
|
108
|
+
*/
|
|
109
|
+
export declare function lower(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
|
|
110
|
+
$literal: string;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Get the character length of a string.
|
|
114
|
+
*
|
|
115
|
+
* - MySQL, MariaDB, Postgres, CockroachDB, DB2, Snowflake: use
|
|
116
|
+
* `CHAR_LENGTH(expr)`. This is deliberately chosen over `LENGTH()` on
|
|
117
|
+
* MySQL/MariaDB because `LENGTH()` there counts BYTES, which is wrong for
|
|
118
|
+
* multi-byte (e.g. UTF-8) text; `CHAR_LENGTH()` always counts characters.
|
|
119
|
+
* - MSSQL: has no `CHAR_LENGTH`/`LENGTH` function at all; uses `LEN(expr)`
|
|
120
|
+
* (already character-counting).
|
|
121
|
+
* - Redshift: uses `LEN(expr)`, its documented/idiomatic string-length
|
|
122
|
+
* function (Redshift's SQL dialect favors `LEN` even though it is
|
|
123
|
+
* Postgres-derived).
|
|
124
|
+
* - Oracle: uses `LENGTH(expr)` (Oracle has no `CHAR_LENGTH` keyword;
|
|
125
|
+
* `LENGTH` already counts characters for CHAR/VARCHAR2 data).
|
|
126
|
+
* - SQLite: uses `length(expr)`, which for TEXT values already counts
|
|
127
|
+
* characters, not bytes (SQLite has no separate `CHAR_LENGTH`).
|
|
128
|
+
* - ClickHouse: `length()` counts BYTES. For character-correct behavior
|
|
129
|
+
* with multi-byte text, `lengthUTF8(expr)` is used instead.
|
|
130
|
+
*/
|
|
131
|
+
export declare function length(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
|
|
132
|
+
$literal: string;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Replace all occurrences of a substring.
|
|
136
|
+
* `REPLACE(expr, search, replacement)` is identical across all 11 dialects.
|
|
137
|
+
*/
|
|
138
|
+
export declare function replace(dialect: Dialect, expr: SqlExpr, search: string, replacement: string): LiteralExpression & {
|
|
139
|
+
$literal: string;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Left-pad a string to a target length.
|
|
143
|
+
*
|
|
144
|
+
* - MySQL, MariaDB, Postgres, CockroachDB, Redshift, Oracle, Snowflake:
|
|
145
|
+
* native `LPAD(expr, length, pad)`.
|
|
146
|
+
* - ClickHouse: native `leftPad(expr, length, pad)`.
|
|
147
|
+
* - MSSQL: has no `LPAD`. Workaround using `RIGHT(REPLICATE(pad, length) +
|
|
148
|
+
* expr, length)` — replicate the pad string enough times to guarantee at
|
|
149
|
+
* least `length` characters, prepend it to `expr`, then take the
|
|
150
|
+
* rightmost `length` characters (matches LPAD's truncate-on-overflow
|
|
151
|
+
* semantics).
|
|
152
|
+
* - DB2: has no `LPAD` in Db2 for LUW. Workaround using a `CASE` expression:
|
|
153
|
+
* if the string is already >= target length, return it unchanged;
|
|
154
|
+
* otherwise prepend enough of the repeated pad string (via `REPEAT` +
|
|
155
|
+
* `SUBSTR`) to reach the target length.
|
|
156
|
+
* - SQLite: throws. SQLite has neither `LPAD` nor a `REPEAT` function, and
|
|
157
|
+
* there is no safe single-expression workaround without a recursive CTE,
|
|
158
|
+
* so this is not something a scalar SQL fragment can express correctly.
|
|
159
|
+
*/
|
|
160
|
+
export declare function lpad(dialect: Dialect, expr: SqlExpr, targetLength: number, padString?: string): LiteralExpression & {
|
|
161
|
+
$literal: string;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Right-pad a string to a target length. See {@link lpad} for per-dialect
|
|
165
|
+
* notes; the same dialects that lack `LPAD` also lack `RPAD`.
|
|
166
|
+
*/
|
|
167
|
+
export declare function rpad(dialect: Dialect, expr: SqlExpr, targetLength: number, padString?: string): LiteralExpression & {
|
|
168
|
+
$literal: string;
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Split a string on a delimiter, returning an array/collection expression
|
|
172
|
+
* where the dialect has a real mechanism for it.
|
|
173
|
+
*
|
|
174
|
+
* - Postgres, CockroachDB: `STRING_TO_ARRAY(expr, delimiter)` -> `text[]`.
|
|
175
|
+
* - Redshift: `SPLIT_TO_ARRAY(expr, delimiter)` -> `SUPER` array (Redshift's
|
|
176
|
+
* SUPER-type based array support).
|
|
177
|
+
* - Snowflake: `SPLIT(expr, delimiter)` -> `ARRAY` (variant).
|
|
178
|
+
* - ClickHouse: `splitByString(delimiter, expr)` -> `Array(String)`. Note
|
|
179
|
+
* the argument order is reversed compared to the others (separator comes
|
|
180
|
+
* first in ClickHouse).
|
|
181
|
+
* - MySQL, MariaDB, MSSQL, Oracle, DB2, SQLite: throw. None of these have a
|
|
182
|
+
* clean way to produce an array/collection from a scalar expression:
|
|
183
|
+
* - MySQL/MariaDB have no array type at all (only `SUBSTRING_INDEX` for
|
|
184
|
+
* extracting a single part by position, which is a different contract).
|
|
185
|
+
* - MSSQL's `STRING_SPLIT` is a table-valued function usable only in a
|
|
186
|
+
* `FROM` clause, not as a scalar expression.
|
|
187
|
+
* - Oracle/DB2/SQLite have no built-in split-to-array function; producing
|
|
188
|
+
* one requires `CONNECT BY`/recursive CTE tricks that cannot be
|
|
189
|
+
* expressed as a single SQL fragment.
|
|
190
|
+
*/
|
|
191
|
+
export declare function split(dialect: Dialect, expr: SqlExpr, delimiter: string): LiteralExpression & {
|
|
192
|
+
$literal: string;
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* Repeat a string N times.
|
|
196
|
+
*
|
|
197
|
+
* - MySQL, MariaDB, Postgres, CockroachDB, Redshift, DB2, Snowflake,
|
|
198
|
+
* ClickHouse: native `REPEAT(expr, n)` (ClickHouse: `repeat(expr, n)`).
|
|
199
|
+
* - MSSQL: has no `REPEAT`; uses `REPLICATE(expr, n)`, which is exactly
|
|
200
|
+
* equivalent.
|
|
201
|
+
* - Oracle: has no `REPEAT`. Workaround: `RPAD(expr, LENGTH(expr) * n,
|
|
202
|
+
* expr)` — `RPAD`'s first argument already contributes one copy of
|
|
203
|
+
* `expr`, and padding with `expr` itself out to `length(expr) * n`
|
|
204
|
+
* characters fills in the remaining `n - 1` copies, producing `expr`
|
|
205
|
+
* repeated exactly `n` times (requires `expr` to be non-empty, since
|
|
206
|
+
* Oracle treats `''` as `NULL`).
|
|
207
|
+
* - SQLite: throws. SQLite has no `REPEAT` function and no safe
|
|
208
|
+
* single-expression workaround (the zeroblob/hex tricks that exist are
|
|
209
|
+
* fragile and only work for single-character pad values).
|
|
210
|
+
*/
|
|
211
|
+
export declare function repeat(dialect: Dialect, expr: SqlExpr, n: number): LiteralExpression & {
|
|
212
|
+
$literal: string;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Reverse a string.
|
|
216
|
+
*
|
|
217
|
+
* - MySQL, MariaDB, MSSQL, Postgres (9.1+), CockroachDB, Snowflake: native
|
|
218
|
+
* `REVERSE(expr)`.
|
|
219
|
+
* - ClickHouse: `reverse()` reverses BYTES, not characters, which breaks
|
|
220
|
+
* multi-byte text; `reverseUTF8(expr)` is used instead for correctness.
|
|
221
|
+
* - Oracle: no built-in `REVERSE` function for strings; there is no safe
|
|
222
|
+
* single-expression workaround (would require a hierarchical
|
|
223
|
+
* `CONNECT BY LEVEL` query), so this throws.
|
|
224
|
+
* - DB2: no built-in `REVERSE` scalar function in Db2 for LUW; throws for
|
|
225
|
+
* the same reason as Oracle.
|
|
226
|
+
* - Redshift: not present in Redshift's documented string-function list
|
|
227
|
+
* (Redshift's SQL dialect is derived from an old Postgres release that
|
|
228
|
+
* predates Postgres's `REVERSE`); throws rather than risk incorrect SQL.
|
|
229
|
+
* - SQLite: no built-in `REVERSE` function; throws.
|
|
230
|
+
*/
|
|
231
|
+
export declare function reverse(dialect: Dialect, expr: SqlExpr): LiteralExpression & {
|
|
232
|
+
$literal: string;
|
|
233
|
+
};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed window-function builder API.
|
|
3
|
+
*
|
|
4
|
+
* Provides a fluent, chainable builder for SQL window functions
|
|
5
|
+
* (`OVER (PARTITION BY ... ORDER BY ... ROWS/RANGE BETWEEN ...)`) so callers
|
|
6
|
+
* never need to hand-write raw SQL strings for `ROW_NUMBER()`, `RANK()`,
|
|
7
|
+
* `LAG()`, `LEAD()`, and friends.
|
|
8
|
+
*
|
|
9
|
+
* This module is intentionally self-contained: it does not add any new
|
|
10
|
+
* dispatch branches to the shared SQL compiler. Every builder resolves
|
|
11
|
+
* directly to a final SQL fragment string, which is then wrapped with the
|
|
12
|
+
* existing `literalExpr()`/`literal()` helpers from `src/operators.ts` so it
|
|
13
|
+
* slots into `attributes: [...]` arrays exactly the way `fn()`/`col()`/
|
|
14
|
+
* `cast()` do today (see `attributeToSql()` / `processAttribute()` in
|
|
15
|
+
* `src/query-builders/sql-compiler.ts`, which both already know how to
|
|
16
|
+
* render `{ __type: 'literal', sql }` and `[expr, alias]` tuples).
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { rowNumber, rank, lag, sumOver } from './query-builders/functions/window';
|
|
21
|
+
* import { col } from '../../operators';
|
|
22
|
+
*
|
|
23
|
+
* User.findAll({
|
|
24
|
+
* attributes: [
|
|
25
|
+
* 'department',
|
|
26
|
+
* 'salary',
|
|
27
|
+
* rowNumber().partitionBy('department').orderBy('salary', 'DESC').as('rn'),
|
|
28
|
+
* rank().partitionBy(col('department')).orderBy(col('salary'), 'DESC').as('rnk'),
|
|
29
|
+
* lag(col('salary'), 1).partitionBy('department').orderBy('hireDate').as('prevSalary'),
|
|
30
|
+
* sumOver(col('salary'))
|
|
31
|
+
* .partitionBy('department')
|
|
32
|
+
* .orderBy('hireDate')
|
|
33
|
+
* .rows({ start: 'unboundedPreceding', end: 'currentRow' })
|
|
34
|
+
* .as('runningTotal'),
|
|
35
|
+
* ],
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import { type FnExpression, type ColExpression, type LiteralExpression } from '../../operators';
|
|
40
|
+
import { SortDirection } from '../../types';
|
|
41
|
+
/**
|
|
42
|
+
* Dialects that support ANSI-standard `OVER (...)` window function syntax.
|
|
43
|
+
* All of these are ANSI SQL:2003 window-function compatible in their modern
|
|
44
|
+
* versions:
|
|
45
|
+
* - mysql (8.0+), mariadb (10.2+): full support
|
|
46
|
+
* - postgres, cockroachdb, redshift: full support (Redshift/CockroachDB are
|
|
47
|
+
* Postgres-derived and share the same syntax)
|
|
48
|
+
* - mssql: full support since SQL Server 2012 (frame clauses since 2012)
|
|
49
|
+
* - oracle: full support (analytic functions), including RESPECT/IGNORE NULLS
|
|
50
|
+
* - sqlite: full support since 3.25.0 (2018)
|
|
51
|
+
* - db2: full support (OLAP specification)
|
|
52
|
+
* - snowflake: full support
|
|
53
|
+
* - clickhouse: full support since 21.3+ (contrary to older assumptions,
|
|
54
|
+
* ClickHouse does implement standard `OVER (...)` window functions, it's
|
|
55
|
+
* just historically been a later addition than in other engines)
|
|
56
|
+
*/
|
|
57
|
+
export type WindowDialect = 'mysql' | 'mariadb' | 'postgres' | 'mssql' | 'oracle' | 'sqlite' | 'cockroachdb' | 'redshift' | 'db2' | 'snowflake' | 'clickhouse';
|
|
58
|
+
/**
|
|
59
|
+
* Sort direction for ORDER BY within a window definition.
|
|
60
|
+
*
|
|
61
|
+
* Accepts the shared {@link SortDirection} enum (re-exported from `../../types`)
|
|
62
|
+
* in addition to the raw `'ASC'` / `'DESC'` string literals, which remain fully
|
|
63
|
+
* supported for backward compatibility.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* // Using raw string literals (still supported)
|
|
68
|
+
* rowNumber().partitionBy('department').orderBy('salary', 'DESC')
|
|
69
|
+
*
|
|
70
|
+
* // Using the SortDirection enum
|
|
71
|
+
* import { SortDirection } from 'prorm';
|
|
72
|
+
* rowNumber().partitionBy('department').orderBy('salary', SortDirection.DESC)
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export type WindowOrderDirection = SortDirection | 'ASC' | 'DESC';
|
|
76
|
+
/**
|
|
77
|
+
* `NULLS FIRST` / `NULLS LAST` modifier, supported by most (not all) dialects.
|
|
78
|
+
*
|
|
79
|
+
* Companion enum {@link NullsOrder} is available for the `'FIRST' | 'LAST'`
|
|
80
|
+
* string-literal union below; raw string literals continue to work unchanged.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Using raw string literals (still supported)
|
|
85
|
+
* rowNumber().orderBy('salary', 'DESC', 'LAST')
|
|
86
|
+
*
|
|
87
|
+
* // Using the NullsOrder enum
|
|
88
|
+
* import { NullsOrder } from './query-builders/functions/window';
|
|
89
|
+
* rowNumber().orderBy('salary', 'DESC', NullsOrder.LAST)
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare enum NullsOrder {
|
|
93
|
+
FIRST = "FIRST",
|
|
94
|
+
LAST = "LAST"
|
|
95
|
+
}
|
|
96
|
+
export type WindowNulls = NullsOrder | 'FIRST' | 'LAST';
|
|
97
|
+
/**
|
|
98
|
+
* A frame boundary for ROWS/RANGE clauses.
|
|
99
|
+
* - 'unboundedPreceding' -> UNBOUNDED PRECEDING
|
|
100
|
+
* - 'unboundedFollowing' -> UNBOUNDED FOLLOWING
|
|
101
|
+
* - 'currentRow' -> CURRENT ROW
|
|
102
|
+
* - { preceding: n } -> n PRECEDING
|
|
103
|
+
* - { following: n } -> n FOLLOWING
|
|
104
|
+
*/
|
|
105
|
+
export type WindowFrameBoundary = 'unboundedPreceding' | 'unboundedFollowing' | 'currentRow' | {
|
|
106
|
+
preceding: number;
|
|
107
|
+
} | {
|
|
108
|
+
following: number;
|
|
109
|
+
};
|
|
110
|
+
/** A ROWS/RANGE frame clause: `BETWEEN start AND end`. */
|
|
111
|
+
export interface WindowFrame {
|
|
112
|
+
start: WindowFrameBoundary;
|
|
113
|
+
end?: WindowFrameBoundary;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Acceptable argument types for window function calls, PARTITION BY, and
|
|
117
|
+
* ORDER BY entries: plain column names (strings), other typed expressions
|
|
118
|
+
* (`col()`, `fn()`, `literal()`), or raw numbers (e.g. offsets/defaults).
|
|
119
|
+
*/
|
|
120
|
+
export type WindowArg = string | number | ColExpression | FnExpression | LiteralExpression | {
|
|
121
|
+
$literal: string;
|
|
122
|
+
} | null | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* A chainable builder that accumulates PARTITION BY / ORDER BY / frame
|
|
125
|
+
* clauses for a single window function call and renders the final
|
|
126
|
+
* `FN(args) OVER (...)` SQL fragment.
|
|
127
|
+
*/
|
|
128
|
+
export declare class WindowFunctionBuilder {
|
|
129
|
+
private readonly fnName;
|
|
130
|
+
private readonly fnArgs;
|
|
131
|
+
private partitions;
|
|
132
|
+
private orders;
|
|
133
|
+
private frameMode?;
|
|
134
|
+
private frame?;
|
|
135
|
+
private dialect?;
|
|
136
|
+
constructor(fnName: string, fnArgs?: WindowArg[]);
|
|
137
|
+
/**
|
|
138
|
+
* Set (or narrow) the target dialect. Only matters for the rare cases
|
|
139
|
+
* where OVER-clause syntax genuinely diverges (all listed dialects use the
|
|
140
|
+
* same ANSI-standard OVER syntax today, so this is mostly a documented
|
|
141
|
+
* escape hatch for future dialect-specific tweaks).
|
|
142
|
+
*/
|
|
143
|
+
forDialect(dialect: WindowDialect): this;
|
|
144
|
+
/** Add one or more PARTITION BY columns/expressions. Repeatable/additive. */
|
|
145
|
+
partitionBy(...cols: WindowArg[]): this;
|
|
146
|
+
/**
|
|
147
|
+
* Add an ORDER BY entry to the window definition. Call multiple times to
|
|
148
|
+
* order by multiple columns; each call appends one entry.
|
|
149
|
+
*/
|
|
150
|
+
orderBy(expr: WindowArg, direction?: WindowOrderDirection, nulls?: WindowNulls): this;
|
|
151
|
+
/** Set a ROWS frame clause, e.g. `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`. */
|
|
152
|
+
rows(frame: WindowFrame): this;
|
|
153
|
+
/** Set a RANGE frame clause, e.g. `RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`. */
|
|
154
|
+
range(frame: WindowFrame): this;
|
|
155
|
+
/** Render the `FN(args) OVER (...)` SQL fragment (no alias). */
|
|
156
|
+
toSQL(): string;
|
|
157
|
+
/**
|
|
158
|
+
* Terminal call: returns an `[expr, alias]` tuple compatible with the
|
|
159
|
+
* existing `attributes: [...]` pattern (see `attributeToSql()` /
|
|
160
|
+
* `attributeToSqlWithAlias()` in `sql-compiler.ts`, both of which already
|
|
161
|
+
* know how to render `[LiteralExpression, alias]` tuples without any core
|
|
162
|
+
* changes).
|
|
163
|
+
*/
|
|
164
|
+
as(alias: string): [LiteralExpression, string];
|
|
165
|
+
/**
|
|
166
|
+
* Allow the builder to be used directly wherever a raw SQL literal is
|
|
167
|
+
* expected (e.g. passed straight into `literal()`-consuming positions)
|
|
168
|
+
* without requiring `.as(...)`.
|
|
169
|
+
*/
|
|
170
|
+
toLiteral(): LiteralExpression;
|
|
171
|
+
}
|
|
172
|
+
/** `ROW_NUMBER() OVER (...)` */
|
|
173
|
+
export declare function rowNumber(): WindowFunctionBuilder;
|
|
174
|
+
/** `RANK() OVER (...)` */
|
|
175
|
+
export declare function rank(): WindowFunctionBuilder;
|
|
176
|
+
/** `DENSE_RANK() OVER (...)` */
|
|
177
|
+
export declare function denseRank(): WindowFunctionBuilder;
|
|
178
|
+
/** `PERCENT_RANK() OVER (...)` */
|
|
179
|
+
export declare function percentRank(): WindowFunctionBuilder;
|
|
180
|
+
/** `CUME_DIST() OVER (...)` */
|
|
181
|
+
export declare function cumeDist(): WindowFunctionBuilder;
|
|
182
|
+
/** `NTILE(buckets) OVER (...)` */
|
|
183
|
+
export declare function ntile(buckets: number): WindowFunctionBuilder;
|
|
184
|
+
/** `LAG(expr[, offset[, default]]) OVER (...)` */
|
|
185
|
+
export declare function lag(expr: WindowArg, offset?: number, defaultValue?: WindowArg): WindowFunctionBuilder;
|
|
186
|
+
/** `LEAD(expr[, offset[, default]]) OVER (...)` */
|
|
187
|
+
export declare function lead(expr: WindowArg, offset?: number, defaultValue?: WindowArg): WindowFunctionBuilder;
|
|
188
|
+
/** `FIRST_VALUE(expr) OVER (...)` */
|
|
189
|
+
export declare function firstValue(expr: WindowArg): WindowFunctionBuilder;
|
|
190
|
+
/** `LAST_VALUE(expr) OVER (...)` */
|
|
191
|
+
export declare function lastValue(expr: WindowArg): WindowFunctionBuilder;
|
|
192
|
+
/** `NTH_VALUE(expr, n) OVER (...)` */
|
|
193
|
+
export declare function nthValue(expr: WindowArg, n: number): WindowFunctionBuilder;
|
|
194
|
+
/** `SUM(expr) OVER (...)` */
|
|
195
|
+
export declare function sumOver(expr: WindowArg): WindowFunctionBuilder;
|
|
196
|
+
/** `AVG(expr) OVER (...)` */
|
|
197
|
+
export declare function avgOver(expr: WindowArg): WindowFunctionBuilder;
|
|
198
|
+
/** `COUNT(expr | *) OVER (...)` */
|
|
199
|
+
export declare function countOver(expr?: WindowArg): WindowFunctionBuilder;
|
|
200
|
+
/** `MIN(expr) OVER (...)` */
|
|
201
|
+
export declare function minOver(expr: WindowArg): WindowFunctionBuilder;
|
|
202
|
+
/** `MAX(expr) OVER (...)` */
|
|
203
|
+
export declare function maxOver(expr: WindowArg): WindowFunctionBuilder;
|
|
204
|
+
/**
|
|
205
|
+
* Generic escape hatch: build a window function call for any function name
|
|
206
|
+
* not covered by the named helpers above (e.g. dialect-specific analytic
|
|
207
|
+
* functions).
|
|
208
|
+
*/
|
|
209
|
+
export declare function windowFn(fnName: string, ...args: WindowArg[]): WindowFunctionBuilder;
|