ts-prorm-orm 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +711 -0
- package/dist/index.js +19 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Compiler
|
|
3
|
+
* Compiles query objects to SQL strings with parameter substitution
|
|
4
|
+
*/
|
|
5
|
+
import { Dialect } from '../dialects/dialect';
|
|
6
|
+
import { WhereOptions, Order, IncludeOptions, WindowFunctionOptions, WindowFrame, ModelStatic, PivotOptions, UnpivotOptions } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Field mapping for attribute to column name translation
|
|
9
|
+
*/
|
|
10
|
+
export interface FieldMapping {
|
|
11
|
+
/**
|
|
12
|
+
* Map of attribute name to DB column name
|
|
13
|
+
* e.g., { firstName: 'first_name', lastName: 'last_name' }
|
|
14
|
+
*/
|
|
15
|
+
attributeToColumn: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Map of DB column name to attribute name
|
|
18
|
+
* e.g., { first_name: 'firstName', last_name: 'lastName' }
|
|
19
|
+
*/
|
|
20
|
+
columnToAttribute: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* SQL Compiler options
|
|
24
|
+
*/
|
|
25
|
+
export interface SqlCompilerOptions {
|
|
26
|
+
/**
|
|
27
|
+
* The dialect to use for compilation
|
|
28
|
+
*/
|
|
29
|
+
dialect?: Dialect;
|
|
30
|
+
/**
|
|
31
|
+
* Whether to use parameterized queries
|
|
32
|
+
*/
|
|
33
|
+
parameterized?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* The character used for parameter placeholders
|
|
36
|
+
*/
|
|
37
|
+
paramChar?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to inline values (not use parameters)
|
|
40
|
+
*/
|
|
41
|
+
inlineValues?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Pretty print the SQL
|
|
44
|
+
*/
|
|
45
|
+
pretty?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Field mapping for attribute to column name translation
|
|
48
|
+
* Used when model uses 'field' property in attributes
|
|
49
|
+
*/
|
|
50
|
+
fieldMapping?: FieldMapping;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* SQL Compiler class
|
|
54
|
+
* Compiles query objects to SQL strings with proper escaping
|
|
55
|
+
*/
|
|
56
|
+
export declare class SqlCompiler {
|
|
57
|
+
private dialect;
|
|
58
|
+
private options;
|
|
59
|
+
private fieldMapping;
|
|
60
|
+
constructor(dialect?: Dialect, options?: SqlCompilerOptions);
|
|
61
|
+
/**
|
|
62
|
+
* Set the field mapping
|
|
63
|
+
*/
|
|
64
|
+
setFieldMapping(fieldMapping: FieldMapping): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get the DB column name for an attribute
|
|
67
|
+
*/
|
|
68
|
+
getColumnName(attributeName: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Get the attribute name for a DB column
|
|
71
|
+
*/
|
|
72
|
+
getAttributeName(columnName: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Set the dialect
|
|
75
|
+
*/
|
|
76
|
+
setDialect(dialect: Dialect): void;
|
|
77
|
+
/**
|
|
78
|
+
* Set compiler options
|
|
79
|
+
*/
|
|
80
|
+
setOptions(options: SqlCompilerOptions): void;
|
|
81
|
+
/**
|
|
82
|
+
* Escape a value for use in SQL
|
|
83
|
+
*/
|
|
84
|
+
escape(value: any): string;
|
|
85
|
+
/**
|
|
86
|
+
* Escape an identifier (column, table name)
|
|
87
|
+
*/
|
|
88
|
+
escapeId(identifier: unknown): string;
|
|
89
|
+
/**
|
|
90
|
+
* Convert an attribute expression to SQL
|
|
91
|
+
* Handles fn(), col(), literal(), and plain strings
|
|
92
|
+
* @param attr - The attribute value (string, FnExpression, ColExpression, LiteralExpression, or array)
|
|
93
|
+
* @param tableAlias - Optional table alias to prepend to column names
|
|
94
|
+
* @returns The SQL representation of the attribute
|
|
95
|
+
*/
|
|
96
|
+
attributeToSql(attr: any, tableAlias?: string): string;
|
|
97
|
+
/**
|
|
98
|
+
* Process an attribute value (which could be a column name, fn expression, col expression, or literal)
|
|
99
|
+
* into a SQL expression string
|
|
100
|
+
*
|
|
101
|
+
* @param attr - The attribute value to process
|
|
102
|
+
* @param tableAlias - Optional table alias to prefix column names with
|
|
103
|
+
* @returns The SQL expression string
|
|
104
|
+
*/
|
|
105
|
+
processAttribute(attr: any, tableAlias?: string): string;
|
|
106
|
+
/**
|
|
107
|
+
* Convert an attribute to SQL with optional alias
|
|
108
|
+
* Handles formats like:
|
|
109
|
+
* - 'columnName' -> "columnName"
|
|
110
|
+
* - ['columnName', 'alias'] -> "columnName" AS "alias"
|
|
111
|
+
* - [fn('COUNT', col('id')), 'count'] -> COUNT("id") AS "count"
|
|
112
|
+
* - ['COUNT(*)', 'count'] -> COUNT(*) AS "count"
|
|
113
|
+
*
|
|
114
|
+
* @param attr - The attribute (string or array with alias)
|
|
115
|
+
* @param tableAlias - Optional table alias
|
|
116
|
+
* @returns SQL fragment with optional alias
|
|
117
|
+
*/
|
|
118
|
+
attributeToSqlWithAlias(attr: any, tableAlias?: string): string;
|
|
119
|
+
/**
|
|
120
|
+
* Compile WHERE clause
|
|
121
|
+
*/
|
|
122
|
+
compileWhere(where: WhereOptions, options?: {
|
|
123
|
+
paramChar?: string;
|
|
124
|
+
}): {
|
|
125
|
+
sql: string;
|
|
126
|
+
values: any[];
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Build WHERE clause from WhereOptions
|
|
130
|
+
*/
|
|
131
|
+
private buildWhereClause;
|
|
132
|
+
/**
|
|
133
|
+
* Build logical WHERE clause (AND, OR, NOT)
|
|
134
|
+
*/
|
|
135
|
+
private buildLogicalWhereClause;
|
|
136
|
+
/**
|
|
137
|
+
* Build a single field condition
|
|
138
|
+
*/
|
|
139
|
+
private buildFieldCondition;
|
|
140
|
+
/**
|
|
141
|
+
* Compile ORDER BY clause
|
|
142
|
+
*/
|
|
143
|
+
compileOrder(order: Order): string;
|
|
144
|
+
/**
|
|
145
|
+
* Compile LIMIT/OFFSET clause
|
|
146
|
+
* Handles SQLite which requires LIMIT when using OFFSET
|
|
147
|
+
*/
|
|
148
|
+
compileLimitOffset(limit?: number | string, offset?: number | string): string;
|
|
149
|
+
/**
|
|
150
|
+
* Compile GROUP BY clause
|
|
151
|
+
* Supports:
|
|
152
|
+
* - Plain strings: 'role', 'userId'
|
|
153
|
+
* - Arrays of strings: ['role', 'status']
|
|
154
|
+
* - col() expressions: col('role'), col('table.column')
|
|
155
|
+
* - fn() expressions: fn('UPPER', col('name'))
|
|
156
|
+
* - literal expressions: literal('YEAR(created_at)')
|
|
157
|
+
* - Array of mixed expressions
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* group: 'role'
|
|
161
|
+
* group: ['role', 'status']
|
|
162
|
+
* group: col('role')
|
|
163
|
+
* group: [col('role'), fn('COUNT', col('id'))]
|
|
164
|
+
*/
|
|
165
|
+
compileGroupBy(group?: string | string[], groupType?: 'rollup' | 'cube' | 'grouping' | 'none', groupingSets?: string[][]): string;
|
|
166
|
+
/**
|
|
167
|
+
* Compile Common Table Expression (CTE) clause
|
|
168
|
+
* Supports both regular WITH and WITH RECURSIVE
|
|
169
|
+
*/
|
|
170
|
+
compileCTE(ctes?: Array<{
|
|
171
|
+
name: string;
|
|
172
|
+
columns?: string[];
|
|
173
|
+
query: string;
|
|
174
|
+
recursive?: boolean;
|
|
175
|
+
}>): string;
|
|
176
|
+
/**
|
|
177
|
+
* Compile HAVING clause for aggregation filtering
|
|
178
|
+
* Similar to WHERE but specifically for aggregated results
|
|
179
|
+
* Supports all operators: Op.gt, Op.eq, Op.between, etc.
|
|
180
|
+
* Also supports direct aggregation functions: COUNT(), SUM(), AVG(), MAX(), MIN()
|
|
181
|
+
*/
|
|
182
|
+
compileHaving(having: any, options?: {
|
|
183
|
+
paramChar?: string;
|
|
184
|
+
}): {
|
|
185
|
+
sql: string;
|
|
186
|
+
values: any[];
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Get SQL operator from operator key
|
|
190
|
+
*/
|
|
191
|
+
private getOperatorSql;
|
|
192
|
+
/**
|
|
193
|
+
* Build HAVING clause from having options
|
|
194
|
+
*/
|
|
195
|
+
private buildHavingClause;
|
|
196
|
+
/**
|
|
197
|
+
* Build logical HAVING clause (AND, OR, NOT)
|
|
198
|
+
*/
|
|
199
|
+
private buildLogicalHavingClause;
|
|
200
|
+
/**
|
|
201
|
+
* Build a single HAVING condition
|
|
202
|
+
*/
|
|
203
|
+
private buildHavingCondition;
|
|
204
|
+
/**
|
|
205
|
+
* Compile a full SELECT query
|
|
206
|
+
*/
|
|
207
|
+
compileSelect(options: {
|
|
208
|
+
tableName: string;
|
|
209
|
+
attributes?: string[] | {
|
|
210
|
+
include?: string[];
|
|
211
|
+
exclude?: string[];
|
|
212
|
+
};
|
|
213
|
+
where?: WhereOptions;
|
|
214
|
+
include?: IncludeOptions[];
|
|
215
|
+
order?: Order;
|
|
216
|
+
limit?: number | string;
|
|
217
|
+
offset?: number | string;
|
|
218
|
+
group?: string | string[];
|
|
219
|
+
groupType?: 'rollup' | 'cube' | 'grouping' | 'none';
|
|
220
|
+
groupingSets?: string[][];
|
|
221
|
+
having?: WhereOptions;
|
|
222
|
+
cte?: Array<{
|
|
223
|
+
name: string;
|
|
224
|
+
columns?: string[];
|
|
225
|
+
query: string;
|
|
226
|
+
recursive?: boolean;
|
|
227
|
+
}>;
|
|
228
|
+
pivot?: PivotOptions;
|
|
229
|
+
unpivot?: UnpivotOptions;
|
|
230
|
+
pivotValues?: string[];
|
|
231
|
+
}): {
|
|
232
|
+
sql: string;
|
|
233
|
+
values: any[];
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* Compile a PIVOT query - transform rows to columns
|
|
237
|
+
*/
|
|
238
|
+
compilePivot(options: {
|
|
239
|
+
tableName: string;
|
|
240
|
+
pivot: PivotOptions;
|
|
241
|
+
groupBy: string | string[];
|
|
242
|
+
where?: WhereOptions;
|
|
243
|
+
order?: Order;
|
|
244
|
+
limit?: number | string;
|
|
245
|
+
offset?: number | string;
|
|
246
|
+
}): {
|
|
247
|
+
sql: string;
|
|
248
|
+
values: any[];
|
|
249
|
+
};
|
|
250
|
+
/**
|
|
251
|
+
* Compile a PIVOT query with specific pivot values (after they're resolved)
|
|
252
|
+
*/
|
|
253
|
+
compilePivotWithValues(options: {
|
|
254
|
+
tableName: string;
|
|
255
|
+
pivot: PivotOptions;
|
|
256
|
+
pivotValues: string[];
|
|
257
|
+
groupBy: string | string[];
|
|
258
|
+
where?: WhereOptions;
|
|
259
|
+
order?: Order;
|
|
260
|
+
limit?: number | string;
|
|
261
|
+
offset?: number | string;
|
|
262
|
+
}): {
|
|
263
|
+
sql: string;
|
|
264
|
+
values: any[];
|
|
265
|
+
};
|
|
266
|
+
/**
|
|
267
|
+
* Compile an UNPIVOT query - transform columns to rows
|
|
268
|
+
*/
|
|
269
|
+
compileUnpivot(options: {
|
|
270
|
+
tableName: string;
|
|
271
|
+
unpivot: UnpivotOptions;
|
|
272
|
+
where?: WhereOptions;
|
|
273
|
+
order?: Order;
|
|
274
|
+
limit?: number | string;
|
|
275
|
+
offset?: number | string;
|
|
276
|
+
}): {
|
|
277
|
+
sql: string;
|
|
278
|
+
values: any[];
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Compile an INSERT query
|
|
282
|
+
*/
|
|
283
|
+
compileInsert(options: {
|
|
284
|
+
tableName: string;
|
|
285
|
+
values: Record<string, any>;
|
|
286
|
+
returning?: boolean | string[];
|
|
287
|
+
}): {
|
|
288
|
+
sql: string;
|
|
289
|
+
values: any[];
|
|
290
|
+
};
|
|
291
|
+
/**
|
|
292
|
+
* Compile an UPDATE query
|
|
293
|
+
*/
|
|
294
|
+
compileUpdate(options: {
|
|
295
|
+
tableName: string;
|
|
296
|
+
values: Record<string, any>;
|
|
297
|
+
where: WhereOptions;
|
|
298
|
+
limit?: number;
|
|
299
|
+
returning?: boolean | string[];
|
|
300
|
+
}): {
|
|
301
|
+
sql: string;
|
|
302
|
+
values: any[];
|
|
303
|
+
};
|
|
304
|
+
/**
|
|
305
|
+
* Compile a DELETE query
|
|
306
|
+
*/
|
|
307
|
+
compileDelete(options: {
|
|
308
|
+
tableName: string;
|
|
309
|
+
where: WhereOptions;
|
|
310
|
+
limit?: number;
|
|
311
|
+
returning?: boolean | string[];
|
|
312
|
+
}): {
|
|
313
|
+
sql: string;
|
|
314
|
+
values: any[];
|
|
315
|
+
};
|
|
316
|
+
/**
|
|
317
|
+
* Compile a UNION/EXCEPT/INTERSECT query
|
|
318
|
+
* Supports combining multiple queries with UNION, UNION ALL, EXCEPT, or INTERSECT
|
|
319
|
+
*/
|
|
320
|
+
compileUnion(options: {
|
|
321
|
+
/** The main query (uses same structure as compileSelect) */
|
|
322
|
+
main: {
|
|
323
|
+
tableName: string;
|
|
324
|
+
attributes?: string[] | {
|
|
325
|
+
include?: string[];
|
|
326
|
+
exclude?: string[];
|
|
327
|
+
};
|
|
328
|
+
where?: WhereOptions;
|
|
329
|
+
include?: IncludeOptions[];
|
|
330
|
+
order?: Order;
|
|
331
|
+
limit?: number | string;
|
|
332
|
+
offset?: number | string;
|
|
333
|
+
};
|
|
334
|
+
/** Array of union queries */
|
|
335
|
+
union: Array<{
|
|
336
|
+
type: 'UNION' | 'UNION ALL' | 'EXCEPT' | 'INTERSECT';
|
|
337
|
+
model?: ModelStatic<any>;
|
|
338
|
+
tableName?: string;
|
|
339
|
+
where?: WhereOptions;
|
|
340
|
+
attributes?: string[] | {
|
|
341
|
+
include?: string[];
|
|
342
|
+
exclude?: string[];
|
|
343
|
+
};
|
|
344
|
+
order?: Order;
|
|
345
|
+
limit?: number | string;
|
|
346
|
+
offset?: number | string;
|
|
347
|
+
include?: IncludeOptions[];
|
|
348
|
+
}>;
|
|
349
|
+
/** Order by for the combined result */
|
|
350
|
+
order?: Order;
|
|
351
|
+
/** Limit for the combined result */
|
|
352
|
+
limit?: number | string;
|
|
353
|
+
/** Offset for the combined result */
|
|
354
|
+
offset?: number | string;
|
|
355
|
+
}): {
|
|
356
|
+
sql: string;
|
|
357
|
+
values: any[];
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* Compile an EXCEPT query - returns rows from main query that don't exist in except query
|
|
361
|
+
*/
|
|
362
|
+
compileExcept(mainQuery: {
|
|
363
|
+
tableName: string;
|
|
364
|
+
attributes?: string[] | {
|
|
365
|
+
include?: string[];
|
|
366
|
+
exclude?: string[];
|
|
367
|
+
};
|
|
368
|
+
where?: WhereOptions;
|
|
369
|
+
include?: IncludeOptions[];
|
|
370
|
+
}, exceptQuery: {
|
|
371
|
+
tableName: string;
|
|
372
|
+
attributes?: string[] | {
|
|
373
|
+
include?: string[];
|
|
374
|
+
exclude?: string[];
|
|
375
|
+
};
|
|
376
|
+
where?: WhereOptions;
|
|
377
|
+
include?: IncludeOptions[];
|
|
378
|
+
}, options?: {
|
|
379
|
+
order?: Order;
|
|
380
|
+
limit?: number | string;
|
|
381
|
+
offset?: number | string;
|
|
382
|
+
}): {
|
|
383
|
+
sql: string;
|
|
384
|
+
values: any[];
|
|
385
|
+
};
|
|
386
|
+
/**
|
|
387
|
+
* Compile an INTERSECT query - returns rows that exist in both queries
|
|
388
|
+
*/
|
|
389
|
+
compileIntersect(mainQuery: {
|
|
390
|
+
tableName: string;
|
|
391
|
+
attributes?: string[] | {
|
|
392
|
+
include?: string[];
|
|
393
|
+
exclude?: string[];
|
|
394
|
+
};
|
|
395
|
+
where?: WhereOptions;
|
|
396
|
+
include?: IncludeOptions[];
|
|
397
|
+
}, intersectQuery: {
|
|
398
|
+
tableName: string;
|
|
399
|
+
attributes?: string[] | {
|
|
400
|
+
include?: string[];
|
|
401
|
+
exclude?: string[];
|
|
402
|
+
};
|
|
403
|
+
where?: WhereOptions;
|
|
404
|
+
include?: IncludeOptions[];
|
|
405
|
+
}, options?: {
|
|
406
|
+
order?: Order;
|
|
407
|
+
limit?: number | string;
|
|
408
|
+
offset?: number | string;
|
|
409
|
+
}): {
|
|
410
|
+
sql: string;
|
|
411
|
+
values: any[];
|
|
412
|
+
};
|
|
413
|
+
/**
|
|
414
|
+
* Format SQL for different dialects
|
|
415
|
+
*/
|
|
416
|
+
formatForDialect(sql: string, dialect: string): string;
|
|
417
|
+
/**
|
|
418
|
+
* Format SQL for MySQL
|
|
419
|
+
*/
|
|
420
|
+
private formatForMySQL;
|
|
421
|
+
/**
|
|
422
|
+
* Format SQL for PostgreSQL
|
|
423
|
+
*/
|
|
424
|
+
private formatForPostgres;
|
|
425
|
+
/**
|
|
426
|
+
* Format SQL for SQLite
|
|
427
|
+
*/
|
|
428
|
+
private formatForSQLite;
|
|
429
|
+
/**
|
|
430
|
+
* Format SQL for MSSQL
|
|
431
|
+
*/
|
|
432
|
+
private formatForMSSQL;
|
|
433
|
+
/**
|
|
434
|
+
* Resolve the 'all' include option to actual include configurations
|
|
435
|
+
*/
|
|
436
|
+
private resolveAllInclude;
|
|
437
|
+
/**
|
|
438
|
+
* Flatten nested includes for proper JOIN ordering
|
|
439
|
+
* Returns a flat array of include objects with parent alias information
|
|
440
|
+
*/
|
|
441
|
+
private flattenIncludesForJoins;
|
|
442
|
+
/**
|
|
443
|
+
* Build anti-join subquery for NOT EXISTS or NOT IN patterns
|
|
444
|
+
*/
|
|
445
|
+
private buildAntiJoinSubquery;
|
|
446
|
+
/**
|
|
447
|
+
* Build lateral subquery for inline subqueries with LATERAL keyword
|
|
448
|
+
*/
|
|
449
|
+
private buildLateralSubquery;
|
|
450
|
+
/**
|
|
451
|
+
* Generate column list with proper aliasing to avoid duplicates
|
|
452
|
+
*/
|
|
453
|
+
private generateSelectColumns;
|
|
454
|
+
/**
|
|
455
|
+
* Compile PARTITION BY clause
|
|
456
|
+
*/
|
|
457
|
+
compilePartitionBy(partitionBy: string | string[] | undefined): string;
|
|
458
|
+
/**
|
|
459
|
+
* Compile window frame specification
|
|
460
|
+
* Examples:
|
|
461
|
+
* - ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
|
|
462
|
+
* - RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|
|
463
|
+
* - GROUPS 2 PRECEDING AND CURRENT ROW
|
|
464
|
+
*/
|
|
465
|
+
compileWindowFrame(windowFrame: WindowFrame | undefined): string;
|
|
466
|
+
/**
|
|
467
|
+
* Compile a single frame bound (start or end)
|
|
468
|
+
*/
|
|
469
|
+
private compileFrameBound;
|
|
470
|
+
/**
|
|
471
|
+
* Compile lock options for row-level locking
|
|
472
|
+
* Supports NOWAIT and SKIP LOCKED for PostgreSQL and MySQL 8.0+
|
|
473
|
+
* @param lock - Lock options
|
|
474
|
+
* @param dialect - The database dialect
|
|
475
|
+
* @returns The compiled lock SQL clause
|
|
476
|
+
*/
|
|
477
|
+
compileLockOptions(lock: any, dialect?: string): string;
|
|
478
|
+
/**
|
|
479
|
+
* Compile OVER clause with partition, order, and window frame
|
|
480
|
+
*/
|
|
481
|
+
compileOverClause(options: WindowFunctionOptions): string;
|
|
482
|
+
/**
|
|
483
|
+
* Compile a window function expression
|
|
484
|
+
* @param functionName - The window function name (ROW_NUMBER, RANK, etc.)
|
|
485
|
+
* @param args - Arguments to the window function
|
|
486
|
+
* @param options - Window function options
|
|
487
|
+
* @returns The compiled SQL expression
|
|
488
|
+
*/
|
|
489
|
+
compileWindowFunction(functionName: string, args?: any[], options?: WindowFunctionOptions): string;
|
|
490
|
+
/**
|
|
491
|
+
* Pretty print SQL
|
|
492
|
+
*/
|
|
493
|
+
prettyPrint(sql: string): string;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Generate MySQL JSON_EXTRACT function
|
|
497
|
+
* @param columnName - The column containing JSON data
|
|
498
|
+
* @param path - The JSON path (e.g., '$.key' or '$.array[0]')
|
|
499
|
+
*/
|
|
500
|
+
export declare function jsonExtract(columnName: string, path: string): string;
|
|
501
|
+
/**
|
|
502
|
+
* Generate MySQL JSON_UNQUOTE(JSON_EXTRACT(...)) for unquoted values
|
|
503
|
+
* @param columnName - The column containing JSON data
|
|
504
|
+
* @param path - The JSON path (e.g., '$.key' or '$.array[0]')
|
|
505
|
+
*/
|
|
506
|
+
export declare function jsonExtractUnquote(columnName: string, path: string): string;
|
|
507
|
+
/**
|
|
508
|
+
* Generate MySQL JSON_SET function to set a value in JSON
|
|
509
|
+
* @param columnName - The column containing JSON data
|
|
510
|
+
* @param path - The JSON path
|
|
511
|
+
* @param value - The value to set (can be a column reference or literal)
|
|
512
|
+
* @param extraPaths - Additional paths and values to set
|
|
513
|
+
*/
|
|
514
|
+
export declare function jsonSet(columnName: string, path: string, value: string, ...extraPaths: [string, string][]): string;
|
|
515
|
+
/**
|
|
516
|
+
* Generate MySQL JSON_INSERT function to insert a value in JSON
|
|
517
|
+
* @param columnName - The column containing JSON data
|
|
518
|
+
* @param path - The JSON path
|
|
519
|
+
* @param value - The value to insert
|
|
520
|
+
*/
|
|
521
|
+
export declare function jsonInsert(columnName: string, path: string, value: string): string;
|
|
522
|
+
/**
|
|
523
|
+
* Generate MySQL JSON_REPLACE function to replace a value in JSON
|
|
524
|
+
* @param columnName - The column containing JSON data
|
|
525
|
+
* @param path - The JSON path
|
|
526
|
+
* @param value - The value to replace
|
|
527
|
+
*/
|
|
528
|
+
export declare function jsonReplace(columnName: string, path: string, value: string): string;
|
|
529
|
+
/**
|
|
530
|
+
* Generate MySQL JSON_REMOVE function to remove a value from JSON
|
|
531
|
+
* @param columnName - The column containing JSON data
|
|
532
|
+
* @param path - The JSON path to remove
|
|
533
|
+
*/
|
|
534
|
+
export declare function jsonRemove(columnName: string, path: string): string;
|
|
535
|
+
/**
|
|
536
|
+
* Generate MySQL JSON_KEYS function to get keys from JSON object
|
|
537
|
+
* @param columnName - The column containing JSON data
|
|
538
|
+
* @param path - Optional path to get keys from specific object
|
|
539
|
+
*/
|
|
540
|
+
export declare function jsonKeys(columnName: string, path?: string): string;
|
|
541
|
+
/**
|
|
542
|
+
* Generate MySQL JSON_LENGTH function to get length of JSON array/object
|
|
543
|
+
* @param columnName - The column containing JSON data
|
|
544
|
+
* @param path - Optional path to get length of specific array/object
|
|
545
|
+
*/
|
|
546
|
+
export declare function jsonLength(columnName: string, path?: string): string;
|
|
547
|
+
/**
|
|
548
|
+
* Generate MySQL JSON_CONTAINS function to check if JSON contains a value
|
|
549
|
+
* @param columnName - The column containing JSON data
|
|
550
|
+
* @param value - The value to check for
|
|
551
|
+
* @param path - The path to check at
|
|
552
|
+
*/
|
|
553
|
+
export declare function jsonContains(columnName: string, value: string, path: string): string;
|
|
554
|
+
/**
|
|
555
|
+
* Generate MySQL JSON_SEARCH function for full-text search in JSON
|
|
556
|
+
* @param columnName - The column containing JSON data
|
|
557
|
+
* @param searchString - The string to search for
|
|
558
|
+
* @param escapeChar - Optional escape character
|
|
559
|
+
* @param path - Optional path to search within
|
|
560
|
+
*/
|
|
561
|
+
export declare function jsonSearch(columnName: string, searchString: string, escapeChar?: string, path?: string): string;
|
|
562
|
+
export default SqlCompiler;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subquery Builder
|
|
3
|
+
* Provides an ORM-like way to build subqueries without raw SQL
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Subquery builder options
|
|
7
|
+
*/
|
|
8
|
+
export interface SubqueryOptions {
|
|
9
|
+
/** Model or table name to use for the subquery */
|
|
10
|
+
model: string | {
|
|
11
|
+
tableName?: string;
|
|
12
|
+
name?: string;
|
|
13
|
+
};
|
|
14
|
+
/** Where conditions */
|
|
15
|
+
where?: Record<string, any>;
|
|
16
|
+
/** Columns to select */
|
|
17
|
+
columns?: string[];
|
|
18
|
+
/** Order by */
|
|
19
|
+
order?: any;
|
|
20
|
+
/** Group by */
|
|
21
|
+
group?: string | string[];
|
|
22
|
+
/** Having conditions */
|
|
23
|
+
having?: Record<string, any>;
|
|
24
|
+
/** Limit results */
|
|
25
|
+
limit?: number;
|
|
26
|
+
/** Offset results */
|
|
27
|
+
offset?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Exists subquery options
|
|
31
|
+
*/
|
|
32
|
+
export interface ExistsSubqueryOptions {
|
|
33
|
+
/** Model or table name to check existence in */
|
|
34
|
+
model: string | {
|
|
35
|
+
tableName?: string;
|
|
36
|
+
name?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Where conditions */
|
|
39
|
+
where?: Record<string, any>;
|
|
40
|
+
/** Join type for EXISTS */
|
|
41
|
+
correlation?: 'INNER' | 'LEFT';
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Scalar subquery options (returns single value)
|
|
45
|
+
*/
|
|
46
|
+
export interface ScalarSubqueryOptions {
|
|
47
|
+
/** Model or table name for the subquery */
|
|
48
|
+
model: string | {
|
|
49
|
+
tableName?: string;
|
|
50
|
+
name?: string;
|
|
51
|
+
};
|
|
52
|
+
/** Column to aggregate */
|
|
53
|
+
column: string;
|
|
54
|
+
/** Aggregate function */
|
|
55
|
+
aggregate?: 'COUNT' | 'SUM' | 'AVG' | 'MAX' | 'MIN';
|
|
56
|
+
/** Where conditions */
|
|
57
|
+
where?: Record<string, any>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Builder for creating subqueries programmatically
|
|
61
|
+
*/
|
|
62
|
+
export declare class SubqueryBuilder {
|
|
63
|
+
/**
|
|
64
|
+
* Create an IN subquery
|
|
65
|
+
* @example
|
|
66
|
+
* // Find users with posts using model class
|
|
67
|
+
* User.findAll({
|
|
68
|
+
* where: {
|
|
69
|
+
* id: { [Op.in]: SubqueryBuilder.select('userId', { model: Post }) }
|
|
70
|
+
* }
|
|
71
|
+
* })
|
|
72
|
+
* @example
|
|
73
|
+
* // Using table name string
|
|
74
|
+
* SubqueryBuilder.select('userId', { model: 'posts' })
|
|
75
|
+
*/
|
|
76
|
+
static select(column: string, options: SubqueryOptions): string;
|
|
77
|
+
/**
|
|
78
|
+
* Create an EXISTS subquery
|
|
79
|
+
* @example
|
|
80
|
+
* // Find users who have posts using model class
|
|
81
|
+
* User.findAll({
|
|
82
|
+
* where: {
|
|
83
|
+
* [Op.exists]: SubqueryBuilder.exists({
|
|
84
|
+
* model: Post,
|
|
85
|
+
* where: { userId: { [Op.col]: 'User.id' } }
|
|
86
|
+
* })
|
|
87
|
+
* }
|
|
88
|
+
* })
|
|
89
|
+
* @example
|
|
90
|
+
* // Using table name string
|
|
91
|
+
* SubqueryBuilder.exists({ model: 'posts', where: {...} })
|
|
92
|
+
*/
|
|
93
|
+
static exists(options: ExistsSubqueryOptions): object;
|
|
94
|
+
/**
|
|
95
|
+
* Create a NOT EXISTS subquery
|
|
96
|
+
*/
|
|
97
|
+
static notExists(options: ExistsSubqueryOptions): object;
|
|
98
|
+
/**
|
|
99
|
+
* Create a scalar subquery (COUNT, SUM, etc.)
|
|
100
|
+
* @example
|
|
101
|
+
* // Get user with post count using model class
|
|
102
|
+
* User.findAll({
|
|
103
|
+
* attributes: {
|
|
104
|
+
* include: [
|
|
105
|
+
* [SubqueryBuilder.count({ model: Post, column: 'userId' }), 'postCount']
|
|
106
|
+
* ]
|
|
107
|
+
* }
|
|
108
|
+
* })
|
|
109
|
+
*/
|
|
110
|
+
static count(options: ScalarSubqueryOptions): object;
|
|
111
|
+
static sum(options: ScalarSubqueryOptions): object;
|
|
112
|
+
static avg(options: ScalarSubqueryOptions): object;
|
|
113
|
+
static max(options: ScalarSubqueryOptions): object;
|
|
114
|
+
static min(options: ScalarSubqueryOptions): object;
|
|
115
|
+
/**
|
|
116
|
+
* Create a correlated subquery using column reference
|
|
117
|
+
* @example
|
|
118
|
+
* SubqueryBuilder.correlated({ outerModel: User, outerColumn: 'id', innerModel: Post, innerColumn: 'userId' })
|
|
119
|
+
*/
|
|
120
|
+
static correlated(options: {
|
|
121
|
+
outerModel: string | {
|
|
122
|
+
tableName?: string;
|
|
123
|
+
name?: string;
|
|
124
|
+
};
|
|
125
|
+
outerColumn: string;
|
|
126
|
+
innerModel: string | {
|
|
127
|
+
tableName?: string;
|
|
128
|
+
name?: string;
|
|
129
|
+
};
|
|
130
|
+
innerColumn: string;
|
|
131
|
+
}): object;
|
|
132
|
+
}
|
|
133
|
+
export default SubqueryBuilder;
|