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
|
@@ -52,6 +52,46 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
52
52
|
// Databricks SQL Warehouses are reached over HTTPS on port 443.
|
|
53
53
|
super({ port: 443, ...config });
|
|
54
54
|
this.name = 'databricks';
|
|
55
|
+
this.unityCatalog = config.catalog;
|
|
56
|
+
this.unitySchema = config.schema;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Quote a table name using Unity Catalog's three-level namespace when a
|
|
60
|
+
* catalog is configured: `` `catalog`.`schema`.`table` ``.
|
|
61
|
+
*
|
|
62
|
+
* - A name that already contains dots (the caller passed a qualified
|
|
63
|
+
* `catalog.schema.table` or `schema.table`) is quoted segment-by-segment
|
|
64
|
+
* and returned as-is — the caller's qualification always wins.
|
|
65
|
+
* - An unqualified name is prefixed with the configured catalog and the
|
|
66
|
+
* given/`schema` option/`'default'` schema.
|
|
67
|
+
* - With no catalog configured, behaves like the inherited MySQL/Spark
|
|
68
|
+
* backtick quoting (still dot-aware).
|
|
69
|
+
*/
|
|
70
|
+
quoteTable(tableName, schema) {
|
|
71
|
+
const raw = String(tableName ?? '');
|
|
72
|
+
if (raw.includes('.')) {
|
|
73
|
+
// Already qualified — quote each segment, don't double-prefix.
|
|
74
|
+
return raw.split('.').map((p) => this.escapeId(p)).join('.');
|
|
75
|
+
}
|
|
76
|
+
const effectiveSchema = schema ?? this.unitySchema;
|
|
77
|
+
if (this.unityCatalog) {
|
|
78
|
+
const parts = [this.escapeId(this.unityCatalog), this.escapeId(effectiveSchema ?? 'default')];
|
|
79
|
+
parts.push(this.escapeId(raw));
|
|
80
|
+
return parts.join('.');
|
|
81
|
+
}
|
|
82
|
+
if (effectiveSchema) {
|
|
83
|
+
return `${this.escapeId(effectiveSchema)}.${this.escapeId(raw)}`;
|
|
84
|
+
}
|
|
85
|
+
return this.escapeId(raw);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve a table reference to its fully-qualified, quoted Unity Catalog form.
|
|
89
|
+
* Thin wrapper over {@link quoteTable} used by the Databricks-specific DDL/DML
|
|
90
|
+
* builders (which historically emitted a bare `escapeId(table)`), so those
|
|
91
|
+
* now honor the configured catalog/schema too.
|
|
92
|
+
*/
|
|
93
|
+
qualifiedTable(tableName, schema) {
|
|
94
|
+
return this.quoteTable(tableName, schema);
|
|
55
95
|
}
|
|
56
96
|
/**
|
|
57
97
|
* Map an ORM {@link DataType} to a Spark SQL / Delta type. The key
|
|
@@ -176,7 +216,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
176
216
|
if (options?.ifNotExists) {
|
|
177
217
|
sql += ' IF NOT EXISTS';
|
|
178
218
|
}
|
|
179
|
-
sql += ` ${this.
|
|
219
|
+
sql += ` ${this.qualifiedTable(tableName)} (${columnDefs.join(', ')})`;
|
|
180
220
|
// Data source / format. Delta is the default when unspecified.
|
|
181
221
|
const format = options?.using || 'DELTA';
|
|
182
222
|
sql += ` USING ${format}`;
|
|
@@ -218,7 +258,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
218
258
|
if (options?.ifNotExists) {
|
|
219
259
|
sql += ' IF NOT EXISTS';
|
|
220
260
|
}
|
|
221
|
-
sql += ` ${this.
|
|
261
|
+
sql += ` ${this.qualifiedTable(tableName)}`;
|
|
222
262
|
sql += ` USING ${options?.using || 'DELTA'}`;
|
|
223
263
|
if (options?.partitionedBy && options.partitionedBy.length > 0) {
|
|
224
264
|
sql += ` PARTITIONED BY (${options.partitionedBy.map((c) => this.escapeId(c)).join(', ')})`;
|
|
@@ -288,7 +328,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
288
328
|
const updateFields = options?.updateOnDuplicate && options.updateOnDuplicate.length > 0
|
|
289
329
|
? options.updateOnDuplicate
|
|
290
330
|
: columns.filter((c) => !conflictFields.includes(c));
|
|
291
|
-
const target = this.
|
|
331
|
+
const target = this.qualifiedTable(tableName);
|
|
292
332
|
let sql = `MERGE INTO ${target} AS target USING (SELECT ${sourceSelect}) AS source ON ${onClause}`;
|
|
293
333
|
if (updateFields.length > 0) {
|
|
294
334
|
const setClause = updateFields
|
|
@@ -386,7 +426,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
386
426
|
* `ADD COLUMN col ...`.
|
|
387
427
|
*/
|
|
388
428
|
buildAddColumnSql(tableName, columnName, definition) {
|
|
389
|
-
return `ALTER TABLE ${this.
|
|
429
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} ADD COLUMNS (${this.buildAddColumnSpecSql(columnName, definition)})`;
|
|
390
430
|
}
|
|
391
431
|
async addColumn(tableName, columnName, definition) {
|
|
392
432
|
await this.query(this.buildAddColumnSql(tableName, columnName, definition));
|
|
@@ -397,7 +437,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
397
437
|
* MySQL, so behaviourally inherited but surfaced as a sync builder for tests.
|
|
398
438
|
*/
|
|
399
439
|
buildDropColumnSql(tableName, columnName) {
|
|
400
|
-
return `ALTER TABLE ${this.
|
|
440
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} DROP COLUMN ${this.escapeId(columnName)}`;
|
|
401
441
|
}
|
|
402
442
|
async removeColumn(tableName, columnName) {
|
|
403
443
|
await this.query(this.buildDropColumnSql(tableName, columnName));
|
|
@@ -408,7 +448,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
408
448
|
* re-stating the type). This override needs no `DESCRIBE` round-trip.
|
|
409
449
|
*/
|
|
410
450
|
buildRenameColumnSql(tableName, oldColumnName, newColumnName) {
|
|
411
|
-
return `ALTER TABLE ${this.
|
|
451
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} RENAME COLUMN ${this.escapeId(oldColumnName)} TO ${this.escapeId(newColumnName)}`;
|
|
412
452
|
}
|
|
413
453
|
async renameColumn(tableName, oldColumnName, newColumnName) {
|
|
414
454
|
await this.query(this.buildRenameColumnSql(tableName, oldColumnName, newColumnName));
|
|
@@ -427,7 +467,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
427
467
|
}
|
|
428
468
|
/** Build `ALTER TABLE t ALTER COLUMN col COMMENT '...'` (Delta-supported). */
|
|
429
469
|
buildSetColumnCommentSql(tableName, columnName, comment) {
|
|
430
|
-
return `ALTER TABLE ${this.
|
|
470
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} ALTER COLUMN ${this.escapeId(columnName)} COMMENT ${this.escape(comment)}`;
|
|
431
471
|
}
|
|
432
472
|
async setColumnComment(tableName, columnName, comment) {
|
|
433
473
|
await this.query(this.buildSetColumnCommentSql(tableName, columnName, comment));
|
|
@@ -437,7 +477,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
437
477
|
*/
|
|
438
478
|
buildSetColumnNullabilitySql(tableName, columnName, notNull) {
|
|
439
479
|
const action = notNull ? 'SET NOT NULL' : 'DROP NOT NULL';
|
|
440
|
-
return `ALTER TABLE ${this.
|
|
480
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} ALTER COLUMN ${this.escapeId(columnName)} ${action}`;
|
|
441
481
|
}
|
|
442
482
|
async setColumnNullability(tableName, columnName, notNull) {
|
|
443
483
|
await this.query(this.buildSetColumnNullabilitySql(tableName, columnName, notNull));
|
|
@@ -452,7 +492,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
452
492
|
if (options?.ifExists) {
|
|
453
493
|
sql += ' IF EXISTS';
|
|
454
494
|
}
|
|
455
|
-
sql += ` ${this.
|
|
495
|
+
sql += ` ${this.qualifiedTable(tableName)}`;
|
|
456
496
|
return sql;
|
|
457
497
|
}
|
|
458
498
|
async dropTable(tableName, options) {
|
|
@@ -466,7 +506,7 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
466
506
|
const props = Object.entries(properties)
|
|
467
507
|
.map(([k, v]) => `'${k}'=${this.escape(v)}`)
|
|
468
508
|
.join(', ');
|
|
469
|
-
return `ALTER TABLE ${this.
|
|
509
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} SET TBLPROPERTIES (${props})`;
|
|
470
510
|
}
|
|
471
511
|
async setTableProperties(tableName, properties) {
|
|
472
512
|
await this.query(this.buildSetTablePropertiesSql(tableName, properties));
|
|
@@ -474,11 +514,193 @@ class DatabricksDialect extends index_1.MySQLDialect {
|
|
|
474
514
|
/** Build `ALTER TABLE t UNSET TBLPROPERTIES [IF EXISTS] ('k', ...)`. */
|
|
475
515
|
buildUnsetTablePropertiesSql(tableName, keys, ifExists = false) {
|
|
476
516
|
const list = keys.map((k) => `'${k}'`).join(', ');
|
|
477
|
-
return `ALTER TABLE ${this.
|
|
517
|
+
return `ALTER TABLE ${this.qualifiedTable(tableName)} UNSET TBLPROPERTIES ${ifExists ? 'IF EXISTS ' : ''}(${list})`;
|
|
478
518
|
}
|
|
479
519
|
async unsetTableProperties(tableName, keys, ifExists = false) {
|
|
480
520
|
await this.query(this.buildUnsetTablePropertiesSql(tableName, keys, ifExists));
|
|
481
521
|
}
|
|
522
|
+
// ---------------------------------------------------------------------------
|
|
523
|
+
// Delta Lake operational commands
|
|
524
|
+
//
|
|
525
|
+
// Delta's answer to indexing/compaction/retention/history. These are the
|
|
526
|
+
// ORM-level, no-raw-SQL entry points for the features the index API can't
|
|
527
|
+
// express (OPTIMIZE/Z-ORDER replaces CREATE INDEX; time travel replaces
|
|
528
|
+
// ad-hoc snapshot SQL; COPY INTO is the idempotent bulk loader).
|
|
529
|
+
// ---------------------------------------------------------------------------
|
|
530
|
+
/**
|
|
531
|
+
* Build `OPTIMIZE table [WHERE ...] [ZORDER BY (cols)]` — Delta's file
|
|
532
|
+
* compaction command. Z-ordering co-locates related data across the given
|
|
533
|
+
* columns to make data-skipping effective, and is the closest Delta analog to
|
|
534
|
+
* a secondary index. `where` restricts compaction to matching partitions.
|
|
535
|
+
*/
|
|
536
|
+
buildOptimizeSql(tableName, options) {
|
|
537
|
+
let sql = `OPTIMIZE ${this.qualifiedTable(tableName)}`;
|
|
538
|
+
if (options?.where) {
|
|
539
|
+
sql += ` WHERE ${options.where}`;
|
|
540
|
+
}
|
|
541
|
+
if (options?.zorderBy && options.zorderBy.length > 0) {
|
|
542
|
+
sql += ` ZORDER BY (${options.zorderBy.map((c) => this.escapeId(c)).join(', ')})`;
|
|
543
|
+
}
|
|
544
|
+
return sql;
|
|
545
|
+
}
|
|
546
|
+
/** Run `OPTIMIZE ... [ZORDER BY ...]` (see {@link buildOptimizeSql}). */
|
|
547
|
+
async optimize(tableName, options) {
|
|
548
|
+
await this.query(this.buildOptimizeSql(tableName, options));
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Build `VACUUM table [RETAIN n HOURS] [DRY RUN]` — removes data files no
|
|
552
|
+
* longer referenced by the Delta log and older than the retention window
|
|
553
|
+
* (default 168 hours / 7 days). Reclaims storage from prior versions; note it
|
|
554
|
+
* also truncates the time-travel window it removes.
|
|
555
|
+
*/
|
|
556
|
+
buildVacuumSql(tableName, options) {
|
|
557
|
+
let sql = `VACUUM ${this.qualifiedTable(tableName)}`;
|
|
558
|
+
if (options?.retainHours !== undefined) {
|
|
559
|
+
sql += ` RETAIN ${Number(options.retainHours)} HOURS`;
|
|
560
|
+
}
|
|
561
|
+
if (options?.dryRun) {
|
|
562
|
+
sql += ' DRY RUN';
|
|
563
|
+
}
|
|
564
|
+
return sql;
|
|
565
|
+
}
|
|
566
|
+
/** Run `VACUUM ...` (see {@link buildVacuumSql}). */
|
|
567
|
+
async vacuum(tableName, options) {
|
|
568
|
+
await this.query(this.buildVacuumSql(tableName, options));
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* Build a Delta time-travel `SELECT` reading a historical snapshot of a table
|
|
572
|
+
* by version number (`VERSION AS OF n`) or timestamp (`TIMESTAMP AS OF '...'`).
|
|
573
|
+
* Exactly one of `version`/`timestamp` must be given.
|
|
574
|
+
*
|
|
575
|
+
* SELECT * FROM `t` VERSION AS OF 12
|
|
576
|
+
* SELECT `a`, `b` FROM `t` TIMESTAMP AS OF '2024-01-01 00:00:00'
|
|
577
|
+
*/
|
|
578
|
+
buildTimeTravelSelectSql(tableName, options) {
|
|
579
|
+
if (options.version === undefined && options.timestamp === undefined) {
|
|
580
|
+
throw new Error('buildTimeTravelSelectSql requires either `version` or `timestamp`.');
|
|
581
|
+
}
|
|
582
|
+
if (options.version !== undefined && options.timestamp !== undefined) {
|
|
583
|
+
throw new Error('buildTimeTravelSelectSql accepts only one of `version` or `timestamp`, not both.');
|
|
584
|
+
}
|
|
585
|
+
const cols = options.columns && options.columns.length > 0
|
|
586
|
+
? options.columns.map((c) => this.escapeId(c)).join(', ')
|
|
587
|
+
: '*';
|
|
588
|
+
let sql = `SELECT ${cols} FROM ${this.qualifiedTable(tableName)}`;
|
|
589
|
+
if (options.version !== undefined) {
|
|
590
|
+
sql += ` VERSION AS OF ${Number(options.version)}`;
|
|
591
|
+
}
|
|
592
|
+
else {
|
|
593
|
+
const ts = options.timestamp instanceof Date ? options.timestamp.toISOString() : String(options.timestamp);
|
|
594
|
+
sql += ` TIMESTAMP AS OF ${this.escape(ts)}`;
|
|
595
|
+
}
|
|
596
|
+
if (options.where) {
|
|
597
|
+
sql += ` WHERE ${options.where}`;
|
|
598
|
+
}
|
|
599
|
+
return sql;
|
|
600
|
+
}
|
|
601
|
+
/** Read a historical snapshot via Delta time travel (see {@link buildTimeTravelSelectSql}). */
|
|
602
|
+
async selectAsOf(tableName, options) {
|
|
603
|
+
const result = await this.query(this.buildTimeTravelSelectSql(tableName, options));
|
|
604
|
+
return result.rows;
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Build `RESTORE TABLE t TO VERSION AS OF n` / `TO TIMESTAMP AS OF '...'` —
|
|
608
|
+
* roll a Delta table back to a prior version in place.
|
|
609
|
+
*/
|
|
610
|
+
buildRestoreSql(tableName, options) {
|
|
611
|
+
if (options.version === undefined && options.timestamp === undefined) {
|
|
612
|
+
throw new Error('buildRestoreSql requires either `version` or `timestamp`.');
|
|
613
|
+
}
|
|
614
|
+
let sql = `RESTORE TABLE ${this.qualifiedTable(tableName)}`;
|
|
615
|
+
if (options.version !== undefined) {
|
|
616
|
+
sql += ` TO VERSION AS OF ${Number(options.version)}`;
|
|
617
|
+
}
|
|
618
|
+
else {
|
|
619
|
+
const ts = options.timestamp instanceof Date ? options.timestamp.toISOString() : String(options.timestamp);
|
|
620
|
+
sql += ` TO TIMESTAMP AS OF ${this.escape(ts)}`;
|
|
621
|
+
}
|
|
622
|
+
return sql;
|
|
623
|
+
}
|
|
624
|
+
/** Restore a Delta table to a prior version/timestamp (see {@link buildRestoreSql}). */
|
|
625
|
+
async restore(tableName, options) {
|
|
626
|
+
await this.query(this.buildRestoreSql(tableName, options));
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* Build a Databricks `COPY INTO` bulk-load statement — the idempotent,
|
|
630
|
+
* exactly-once loader from a cloud file location into a Delta table:
|
|
631
|
+
*
|
|
632
|
+
* COPY INTO `t` FROM 's3://bucket/path'
|
|
633
|
+
* FILEFORMAT = CSV
|
|
634
|
+
* FILES = ('a.csv','b.csv') -- or PATTERN = '*.csv'
|
|
635
|
+
* FORMAT_OPTIONS ('header'='true')
|
|
636
|
+
* COPY_OPTIONS ('mergeSchema'='true')
|
|
637
|
+
*/
|
|
638
|
+
buildCopyIntoSql(tableName, source, options) {
|
|
639
|
+
let sql = `COPY INTO ${this.qualifiedTable(tableName)} FROM ${this.escape(source)}`;
|
|
640
|
+
sql += ` FILEFORMAT = ${options.fileFormat}`;
|
|
641
|
+
if (options.files && options.files.length > 0) {
|
|
642
|
+
sql += ` FILES = (${options.files.map((f) => this.escape(f)).join(', ')})`;
|
|
643
|
+
}
|
|
644
|
+
if (options.pattern) {
|
|
645
|
+
sql += ` PATTERN = ${this.escape(options.pattern)}`;
|
|
646
|
+
}
|
|
647
|
+
if (options.formatOptions && Object.keys(options.formatOptions).length > 0) {
|
|
648
|
+
const opts = Object.entries(options.formatOptions)
|
|
649
|
+
.map(([k, v]) => `${this.escape(k)} = ${this.escape(v)}`)
|
|
650
|
+
.join(', ');
|
|
651
|
+
sql += ` FORMAT_OPTIONS (${opts})`;
|
|
652
|
+
}
|
|
653
|
+
if (options.copyOptions && Object.keys(options.copyOptions).length > 0) {
|
|
654
|
+
const opts = Object.entries(options.copyOptions)
|
|
655
|
+
.map(([k, v]) => `${this.escape(k)} = ${this.escape(v)}`)
|
|
656
|
+
.join(', ');
|
|
657
|
+
sql += ` COPY_OPTIONS (${opts})`;
|
|
658
|
+
}
|
|
659
|
+
return sql;
|
|
660
|
+
}
|
|
661
|
+
/** Run a `COPY INTO` bulk load (see {@link buildCopyIntoSql}). */
|
|
662
|
+
async copyInto(tableName, source, options) {
|
|
663
|
+
await this.query(this.buildCopyIntoSql(tableName, source, options));
|
|
664
|
+
}
|
|
665
|
+
/**
|
|
666
|
+
* Build a general Delta `MERGE INTO ... USING <source relation> ON ...` that
|
|
667
|
+
* supports all three action branches — including `WHEN MATCHED THEN DELETE`,
|
|
668
|
+
* which the single-row {@link buildUpsertQuery} upsert path can't express.
|
|
669
|
+
* The `source` is a caller-supplied relation (a subquery/table/CTAS alias,
|
|
670
|
+
* e.g. `staging_updates`); this method wires the ON/action clauses around it.
|
|
671
|
+
*/
|
|
672
|
+
buildMergeSql(tableName, source, options) {
|
|
673
|
+
const targetAlias = options.targetAlias || 'target';
|
|
674
|
+
const sourceAlias = options.sourceAlias || 'source';
|
|
675
|
+
let sql = `MERGE INTO ${this.qualifiedTable(tableName)} AS ${targetAlias}` +
|
|
676
|
+
` USING ${source} AS ${sourceAlias}` +
|
|
677
|
+
` ON ${options.on}`;
|
|
678
|
+
if (options.whenMatchedUpdate === 'ALL') {
|
|
679
|
+
sql += ' WHEN MATCHED THEN UPDATE SET *';
|
|
680
|
+
}
|
|
681
|
+
else if (options.whenMatchedUpdate) {
|
|
682
|
+
const set = Object.entries(options.whenMatchedUpdate)
|
|
683
|
+
.map(([col, expr]) => `${this.escapeId(col)} = ${expr}`)
|
|
684
|
+
.join(', ');
|
|
685
|
+
sql += ` WHEN MATCHED THEN UPDATE SET ${set}`;
|
|
686
|
+
}
|
|
687
|
+
if (options.whenMatchedDelete) {
|
|
688
|
+
sql += ' WHEN MATCHED THEN DELETE';
|
|
689
|
+
}
|
|
690
|
+
if (options.whenNotMatchedInsert === 'ALL') {
|
|
691
|
+
sql += ' WHEN NOT MATCHED THEN INSERT *';
|
|
692
|
+
}
|
|
693
|
+
else if (options.whenNotMatchedInsert) {
|
|
694
|
+
const cols = Object.keys(options.whenNotMatchedInsert).map((c) => this.escapeId(c)).join(', ');
|
|
695
|
+
const vals = Object.values(options.whenNotMatchedInsert).join(', ');
|
|
696
|
+
sql += ` WHEN NOT MATCHED THEN INSERT (${cols}) VALUES (${vals})`;
|
|
697
|
+
}
|
|
698
|
+
return sql;
|
|
699
|
+
}
|
|
700
|
+
/** Run a general Delta `MERGE INTO` (see {@link buildMergeSql}). */
|
|
701
|
+
async mergeInto(tableName, source, options) {
|
|
702
|
+
await this.query(this.buildMergeSql(tableName, source, options));
|
|
703
|
+
}
|
|
482
704
|
async addIndex(_tableName, _indexName, _fields, _options) {
|
|
483
705
|
throw new Error(DatabricksDialect.INDEX_UNSUPPORTED);
|
|
484
706
|
}
|