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,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explain Query Plans
|
|
3
|
+
* Provides functionality to analyze and explain SQL query execution plans
|
|
4
|
+
*/
|
|
5
|
+
import { Dialect } from '../dialects/dialect';
|
|
6
|
+
import { QueryResult } from '../types';
|
|
7
|
+
/**
|
|
8
|
+
* Explain output format options
|
|
9
|
+
*/
|
|
10
|
+
export declare enum ExplainFormat {
|
|
11
|
+
TEXT = "text",
|
|
12
|
+
JSON = "json",
|
|
13
|
+
XML = "xml",
|
|
14
|
+
YAML = "yaml",
|
|
15
|
+
TREE = "tree"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Explain options
|
|
19
|
+
*/
|
|
20
|
+
export interface ExplainOptions {
|
|
21
|
+
/** Output format (text, json, xml, yaml) */
|
|
22
|
+
format?: ExplainFormat;
|
|
23
|
+
/** For MySQL: ANALYZE the query */
|
|
24
|
+
analyze?: boolean;
|
|
25
|
+
/** For MySQL: show format JSON */
|
|
26
|
+
verbose?: boolean;
|
|
27
|
+
/** For MySQL: show costs */
|
|
28
|
+
costs?: boolean;
|
|
29
|
+
/** For MySQL: show buffers */
|
|
30
|
+
buffers?: boolean;
|
|
31
|
+
/** For MySQL: timing information */
|
|
32
|
+
timing?: boolean;
|
|
33
|
+
/** For MySQL: show schema */
|
|
34
|
+
schema?: boolean;
|
|
35
|
+
/** For MySQL: type of statement (SELECT, INSERT, UPDATE, DELETE) */
|
|
36
|
+
type?: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
|
|
37
|
+
/** Custom options to pass to EXPLAIN */
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generic explain plan entry (dialect-specific parsing may be needed)
|
|
42
|
+
*/
|
|
43
|
+
export interface ExplainPlan {
|
|
44
|
+
/** The analyzed SQL query */
|
|
45
|
+
sql: string;
|
|
46
|
+
/** Explain output (format depends on dialect) */
|
|
47
|
+
plan: any;
|
|
48
|
+
/** Raw query results from EXPLAIN */
|
|
49
|
+
rawResults: QueryResult;
|
|
50
|
+
/** Duration of the explain query in ms */
|
|
51
|
+
duration: number;
|
|
52
|
+
/** Dialect used */
|
|
53
|
+
dialect: string;
|
|
54
|
+
/** Parsed plan (if parsable) */
|
|
55
|
+
parsedPlan?: ParsedExplainStep[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parsed explain step for easier analysis
|
|
59
|
+
*/
|
|
60
|
+
export interface ParsedExplainStep {
|
|
61
|
+
/** Operation type (e.g., SCAN, INDEX, JOIN, etc.) */
|
|
62
|
+
operation: string;
|
|
63
|
+
/** Table involved (if applicable) */
|
|
64
|
+
table?: string;
|
|
65
|
+
/** Index used (if applicable) */
|
|
66
|
+
index?: string;
|
|
67
|
+
/** Number of rows to scan */
|
|
68
|
+
rows?: number;
|
|
69
|
+
/** Estimated cost (if available) */
|
|
70
|
+
cost?: number;
|
|
71
|
+
/** Additional details */
|
|
72
|
+
details?: Record<string, any>;
|
|
73
|
+
/** Child operations */
|
|
74
|
+
children?: ParsedExplainStep[];
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Explain plan generator for different database dialects
|
|
78
|
+
*/
|
|
79
|
+
export declare class ExplainPlanGenerator {
|
|
80
|
+
private dialect;
|
|
81
|
+
private defaultOptions;
|
|
82
|
+
constructor(dialect: Dialect, defaultOptions?: ExplainOptions);
|
|
83
|
+
/**
|
|
84
|
+
* Set default options for EXPLAIN queries
|
|
85
|
+
*/
|
|
86
|
+
setDefaultOptions(options: ExplainOptions): void;
|
|
87
|
+
/**
|
|
88
|
+
* Generate an explain plan for a SQL query
|
|
89
|
+
*/
|
|
90
|
+
explain(sql: string, options?: ExplainOptions): Promise<ExplainPlan>;
|
|
91
|
+
/**
|
|
92
|
+
* Build the appropriate EXPLAIN SQL statement for the dialect
|
|
93
|
+
*/
|
|
94
|
+
private buildExplainSql;
|
|
95
|
+
/**
|
|
96
|
+
* Build MySQL EXPLAIN statement
|
|
97
|
+
*/
|
|
98
|
+
private buildMySQLExplain;
|
|
99
|
+
/**
|
|
100
|
+
* Build PostgreSQL EXPLAIN statement
|
|
101
|
+
*/
|
|
102
|
+
private buildPostgresExplain;
|
|
103
|
+
/**
|
|
104
|
+
* Build SQLite EXPLAIN statement
|
|
105
|
+
*/
|
|
106
|
+
private buildSQLiteExplain;
|
|
107
|
+
/**
|
|
108
|
+
* Parse EXPLAIN output into structured format
|
|
109
|
+
*/
|
|
110
|
+
private parseExplainOutput;
|
|
111
|
+
/**
|
|
112
|
+
* Parse MySQL EXPLAIN output
|
|
113
|
+
*/
|
|
114
|
+
private parseMySQLExplain;
|
|
115
|
+
/**
|
|
116
|
+
* Parse PostgreSQL EXPLAIN output
|
|
117
|
+
*/
|
|
118
|
+
private parsePostgresExplain;
|
|
119
|
+
/**
|
|
120
|
+
* Recursively parse PostgreSQL plan nodes
|
|
121
|
+
*/
|
|
122
|
+
private parsePostgresPlanNode;
|
|
123
|
+
/**
|
|
124
|
+
* Parse SQLite EXPLAIN QUERY PLAN output
|
|
125
|
+
*/
|
|
126
|
+
private parseSQLiteExplain;
|
|
127
|
+
/**
|
|
128
|
+
* Extract operation type from SQLite detail
|
|
129
|
+
*/
|
|
130
|
+
private extractSQLiteOperation;
|
|
131
|
+
/**
|
|
132
|
+
* Extract table name from SQLite detail
|
|
133
|
+
*/
|
|
134
|
+
private extractSQLiteTable;
|
|
135
|
+
/**
|
|
136
|
+
* Extract index name from SQLite detail
|
|
137
|
+
*/
|
|
138
|
+
private extractSQLiteIndex;
|
|
139
|
+
/**
|
|
140
|
+
* Generic explain output parser
|
|
141
|
+
*/
|
|
142
|
+
private parseGenericExplain;
|
|
143
|
+
/**
|
|
144
|
+
* Analyze a query and provide optimization recommendations
|
|
145
|
+
*/
|
|
146
|
+
analyzeQuery(sql: string, options?: ExplainOptions): Promise<{
|
|
147
|
+
plan: ExplainPlan;
|
|
148
|
+
recommendations: QueryRecommendation[];
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Generate optimization recommendations based on explain plan
|
|
152
|
+
*/
|
|
153
|
+
private generateRecommendations;
|
|
154
|
+
/**
|
|
155
|
+
* Generate MySQL-specific recommendations
|
|
156
|
+
*/
|
|
157
|
+
private generateMySQLRecommendations;
|
|
158
|
+
/**
|
|
159
|
+
* Generate PostgreSQL-specific recommendations
|
|
160
|
+
*/
|
|
161
|
+
private generatePostgresRecommendations;
|
|
162
|
+
/**
|
|
163
|
+
* Generate SQLite-specific recommendations
|
|
164
|
+
*/
|
|
165
|
+
private generateSQLiteRecommendations;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Query recommendation
|
|
169
|
+
*/
|
|
170
|
+
export interface QueryRecommendation {
|
|
171
|
+
type: 'INDEX' | 'OPTIMIZATION' | 'REWRITE' | 'STATISTICS';
|
|
172
|
+
severity: 'HIGH' | 'MEDIUM' | 'LOW';
|
|
173
|
+
message: string;
|
|
174
|
+
table?: string;
|
|
175
|
+
column?: string;
|
|
176
|
+
suggestion?: string;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create an ExplainPlanGenerator instance
|
|
180
|
+
*/
|
|
181
|
+
export declare function createExplainPlanGenerator(dialect: Dialect, options?: ExplainOptions): ExplainPlanGenerator;
|
|
182
|
+
declare const _default: {
|
|
183
|
+
ExplainPlanGenerator: typeof ExplainPlanGenerator;
|
|
184
|
+
ExplainFormat: typeof ExplainFormat;
|
|
185
|
+
createExplainPlanGenerator: typeof createExplainPlanGenerator;
|
|
186
|
+
};
|
|
187
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Optimizers Module
|
|
3
|
+
* Provides various query optimization features including:
|
|
4
|
+
* - Query hint support
|
|
5
|
+
* - Explain query plans
|
|
6
|
+
* - Slow query logging
|
|
7
|
+
* - Query batch/bulk optimization
|
|
8
|
+
* - Prepared statement caching
|
|
9
|
+
*/
|
|
10
|
+
export { QueryHintManager, QueryHint, HintType, INDEX_HINT, FORCE_INDEX, USE_INDEX, JOIN_FIXED_ORDER, MERGE_HASH, NO_MERGE, } from './query-hints';
|
|
11
|
+
export { ExplainPlanGenerator, ExplainPlan, ExplainOptions, ExplainFormat, createExplainPlanGenerator, } from './explain-plans';
|
|
12
|
+
export { SlowQueryLogger, SlowQueryLogEntry, SlowQueryOptions, createSlowQueryLogger, } from './slow-query-logger';
|
|
13
|
+
export { BatchQueryOptimizer, BatchOptions, BatchResult, QueryBatch, optimizeBatchInsert, optimizeBatchUpdate, optimizeBatchDelete, } from './batch-optimizer';
|
|
14
|
+
export { PreparedStatementCache, PreparedStatementCacheOptions, CacheEntry, createPreparedStatementCache, } from './prepared-statement-cache';
|
|
15
|
+
export { QueryOptimizer, QueryOptimizationOptions, createQueryOptimizer } from './query-optimizer';
|
|
16
|
+
/**
|
|
17
|
+
* Default configuration for query optimizers
|
|
18
|
+
*/
|
|
19
|
+
export declare const defaultOptimizerConfig: {
|
|
20
|
+
slowQueryThreshold: number;
|
|
21
|
+
preparedStatementCacheSize: number;
|
|
22
|
+
batchInsertChunkSize: number;
|
|
23
|
+
batchUpdateChunkSize: number;
|
|
24
|
+
batchDeleteChunkSize: number;
|
|
25
|
+
enableExplainPlans: boolean;
|
|
26
|
+
enableQueryHints: boolean;
|
|
27
|
+
};
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepared Statement Caching
|
|
3
|
+
* Provides functionality to cache and reuse prepared statements for better performance
|
|
4
|
+
*/
|
|
5
|
+
import { Dialect } from '../dialects/dialect';
|
|
6
|
+
/**
|
|
7
|
+
* Options for prepared statement cache
|
|
8
|
+
*/
|
|
9
|
+
export interface PreparedStatementCacheOptions {
|
|
10
|
+
/** Maximum number of statements to cache */
|
|
11
|
+
maxSize: number;
|
|
12
|
+
/** Time-to-live in milliseconds for cached statements */
|
|
13
|
+
ttl?: number;
|
|
14
|
+
/** Whether to cache based on normalized SQL (with placeholders) */
|
|
15
|
+
normalizeSql?: boolean;
|
|
16
|
+
/** Callback when a statement is cached */
|
|
17
|
+
onCache?: (key: string, statement: CachedStatement) => void;
|
|
18
|
+
/** Callback when a statement is evicted */
|
|
19
|
+
onEvict?: (key: string, statement: CachedStatement) => void;
|
|
20
|
+
/** Whether to log cache operations */
|
|
21
|
+
logging?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Cached prepared statement entry
|
|
25
|
+
*/
|
|
26
|
+
export interface CacheEntry {
|
|
27
|
+
/** Unique key for the cache entry */
|
|
28
|
+
key: string;
|
|
29
|
+
/** The SQL statement */
|
|
30
|
+
sql: string;
|
|
31
|
+
/**
|
|
32
|
+
* Caller-supplied metadata about the statement shape (e.g. parameter count,
|
|
33
|
+
* normalized SQL). This is NOT a real driver-level prepared-statement handle:
|
|
34
|
+
* `Dialect.query()` in this codebase always takes the full SQL text plus a
|
|
35
|
+
* `replacements`/`bind` array/object and does its own placeholder substitution
|
|
36
|
+
* or binds per-call - there is no separate "prepare" step whose handle could be
|
|
37
|
+
* cached and reused across calls. See the `PreparedStatementCache` class doc
|
|
38
|
+
* for details. Defaults to `{}` if the caller doesn't pass anything meaningful.
|
|
39
|
+
*/
|
|
40
|
+
compiled: any;
|
|
41
|
+
/** Timestamp when the entry was created */
|
|
42
|
+
createdAt: number;
|
|
43
|
+
/** Number of times this statement was used */
|
|
44
|
+
hitCount: number;
|
|
45
|
+
/** Last time the statement was used */
|
|
46
|
+
lastUsedAt: number;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Extended cache entry with additional metadata
|
|
50
|
+
*/
|
|
51
|
+
export interface CachedStatement extends CacheEntry {
|
|
52
|
+
/** The number of times this statement has been executed */
|
|
53
|
+
executions: number;
|
|
54
|
+
/** Total time spent executing this statement */
|
|
55
|
+
totalExecutionTime: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Query cache entry for query results
|
|
59
|
+
*/
|
|
60
|
+
export interface QueryCacheEntry {
|
|
61
|
+
key: string;
|
|
62
|
+
sql: string;
|
|
63
|
+
params: any[];
|
|
64
|
+
result: any;
|
|
65
|
+
createdAt: number;
|
|
66
|
+
lastUsedAt: number;
|
|
67
|
+
hitCount: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Tracks SQL statement usage (hit/miss counts, execution timings, last-used
|
|
71
|
+
* time) keyed by normalized SQL + params, with TTL-based expiry.
|
|
72
|
+
*
|
|
73
|
+
* IMPORTANT — naming caveat: despite the name, this does **not** cache a real
|
|
74
|
+
* driver-level prepared-statement handle. None of the `Dialect` implementations
|
|
75
|
+
* in `src/dialects/**` expose a separate prepare/execute split - `query(sql,
|
|
76
|
+
* options)` always receives the full SQL text and applies `options.replacements`
|
|
77
|
+
* / `options.bind` per call (see e.g. `sqlite/index.ts` `query()`, which calls
|
|
78
|
+
* `connection.prepare(sql)` fresh on every invocation). So there is no reusable
|
|
79
|
+
* driver object for this class to hold onto; the `compiled` field on each entry
|
|
80
|
+
* is whatever metadata the caller passes to `set()` (by default just `{}`, or -
|
|
81
|
+
* see `QueryOptimizer.executeQuery()` - a lightweight `{ sql, paramCount }`
|
|
82
|
+
* descriptor). In practice this class behaves as a query-usage/hit-count
|
|
83
|
+
* tracker with an optional metadata slot, not a real statement cache. It is
|
|
84
|
+
* kept under this name for backwards compatibility with existing callers/tests;
|
|
85
|
+
* treat `getStats()` / `hitCount` / `topStatements` as the reliable surface,
|
|
86
|
+
* and don't rely on `compiled` holding an executable handle.
|
|
87
|
+
*
|
|
88
|
+
* Invalidation: entries expire via TTL (`options.ttl`, default 1 hour). Since
|
|
89
|
+
* that alone can serve stale-shaped results after schema changes made via raw
|
|
90
|
+
* DDL, `invalidateTable()` is provided to drop entries referencing a given
|
|
91
|
+
* table name on write (e.g. from a caller's insert/update/delete path); it is
|
|
92
|
+
* not auto-wired to every write in this codebase, but `QueryOptimizer.
|
|
93
|
+
* invalidateTableCache()` calls it alongside the query-result cache.
|
|
94
|
+
*/
|
|
95
|
+
export declare class PreparedStatementCache {
|
|
96
|
+
private dialect;
|
|
97
|
+
private cache;
|
|
98
|
+
private maxSize;
|
|
99
|
+
private ttl;
|
|
100
|
+
private normalizeSql;
|
|
101
|
+
private onCache?;
|
|
102
|
+
private onEvict?;
|
|
103
|
+
private logging;
|
|
104
|
+
private stats;
|
|
105
|
+
constructor(dialect: Dialect, options: PreparedStatementCacheOptions);
|
|
106
|
+
/**
|
|
107
|
+
* Get a cached prepared statement
|
|
108
|
+
*/
|
|
109
|
+
get(sql: string, params?: any[]): CachedStatement | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Store a prepared statement in the cache
|
|
112
|
+
*/
|
|
113
|
+
set(sql: string, compiled: any, params?: any[]): CachedStatement;
|
|
114
|
+
/**
|
|
115
|
+
* Record execution of a prepared statement
|
|
116
|
+
*/
|
|
117
|
+
recordExecution(key: string, executionTime: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a statement is cached
|
|
120
|
+
*/
|
|
121
|
+
has(sql: string, params?: any[]): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Clear all cached statements
|
|
124
|
+
*/
|
|
125
|
+
clear(): void;
|
|
126
|
+
/**
|
|
127
|
+
* Get cache statistics
|
|
128
|
+
*/
|
|
129
|
+
getStats(): CacheStats;
|
|
130
|
+
/**
|
|
131
|
+
* Get all cached statements
|
|
132
|
+
*/
|
|
133
|
+
getAll(): CachedStatement[];
|
|
134
|
+
/**
|
|
135
|
+
* Generate a cache key from SQL and optional parameters
|
|
136
|
+
*/
|
|
137
|
+
private generateKey;
|
|
138
|
+
/**
|
|
139
|
+
* Normalize SQL for consistent caching
|
|
140
|
+
*/
|
|
141
|
+
private normalizeSQL;
|
|
142
|
+
/**
|
|
143
|
+
* Evict the oldest entry from cache
|
|
144
|
+
*/
|
|
145
|
+
private evictOldest;
|
|
146
|
+
/**
|
|
147
|
+
* Evict a specific entry from cache
|
|
148
|
+
*/
|
|
149
|
+
private evict;
|
|
150
|
+
/**
|
|
151
|
+
* Log a message if logging is enabled
|
|
152
|
+
*/
|
|
153
|
+
private log;
|
|
154
|
+
/**
|
|
155
|
+
* Invalidate (remove) cache entries whose SQL references the given table.
|
|
156
|
+
* Intended to be called by write paths (INSERT/UPDATE/DELETE/DDL) so cached
|
|
157
|
+
* entries can't outlive schema/data changes for that table between TTL
|
|
158
|
+
* expirations. Not automatically wired into every write in this codebase -
|
|
159
|
+
* callers that write outside of `QueryOptimizer` should call this explicitly.
|
|
160
|
+
*/
|
|
161
|
+
invalidateTable(tableName: string): number;
|
|
162
|
+
/**
|
|
163
|
+
* Remove expired entries
|
|
164
|
+
*/
|
|
165
|
+
prune(): number;
|
|
166
|
+
/**
|
|
167
|
+
* Get cache size
|
|
168
|
+
*/
|
|
169
|
+
get size(): number;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Cache statistics
|
|
173
|
+
*/
|
|
174
|
+
export interface CacheStats {
|
|
175
|
+
size: number;
|
|
176
|
+
maxSize: number;
|
|
177
|
+
hits: number;
|
|
178
|
+
misses: number;
|
|
179
|
+
hitRate: number;
|
|
180
|
+
totalExecutions: number;
|
|
181
|
+
evictions: number;
|
|
182
|
+
topStatements: Array<{
|
|
183
|
+
sql: string;
|
|
184
|
+
hits: number;
|
|
185
|
+
executions: number;
|
|
186
|
+
avgExecutionTime: number;
|
|
187
|
+
}>;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Query result cache for caching query results
|
|
191
|
+
*/
|
|
192
|
+
export declare class QueryResultCache {
|
|
193
|
+
private cache;
|
|
194
|
+
private maxSize;
|
|
195
|
+
private ttl;
|
|
196
|
+
private logging;
|
|
197
|
+
constructor(options?: {
|
|
198
|
+
maxSize?: number;
|
|
199
|
+
ttl?: number;
|
|
200
|
+
logging?: boolean;
|
|
201
|
+
});
|
|
202
|
+
/**
|
|
203
|
+
* Get cached query result
|
|
204
|
+
*/
|
|
205
|
+
get(sql: string, params?: any[]): any | undefined;
|
|
206
|
+
/**
|
|
207
|
+
* Store a query result in cache
|
|
208
|
+
*/
|
|
209
|
+
set(sql: string, params: any[], result: any): void;
|
|
210
|
+
/**
|
|
211
|
+
* Check if a query result is cached
|
|
212
|
+
*/
|
|
213
|
+
has(sql: string, params?: any[]): boolean;
|
|
214
|
+
/**
|
|
215
|
+
* Invalidate cache for a specific table
|
|
216
|
+
*/
|
|
217
|
+
invalidateTable(tableName: string): number;
|
|
218
|
+
/**
|
|
219
|
+
* Clear all cached results
|
|
220
|
+
*/
|
|
221
|
+
clear(): void;
|
|
222
|
+
/**
|
|
223
|
+
* Get cache statistics
|
|
224
|
+
*/
|
|
225
|
+
getStats(): {
|
|
226
|
+
size: number;
|
|
227
|
+
maxSize: number;
|
|
228
|
+
hitCount: number;
|
|
229
|
+
};
|
|
230
|
+
/**
|
|
231
|
+
* Generate a cache key
|
|
232
|
+
*/
|
|
233
|
+
private generateKey;
|
|
234
|
+
/**
|
|
235
|
+
* Evict the oldest entry
|
|
236
|
+
*/
|
|
237
|
+
private evictOldest;
|
|
238
|
+
/**
|
|
239
|
+
* Log a message
|
|
240
|
+
*/
|
|
241
|
+
private log;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Create a prepared statement cache
|
|
245
|
+
*/
|
|
246
|
+
export declare function createPreparedStatementCache(dialect: Dialect, options?: PreparedStatementCacheOptions): PreparedStatementCache;
|
|
247
|
+
declare const _default: {
|
|
248
|
+
PreparedStatementCache: typeof PreparedStatementCache;
|
|
249
|
+
QueryResultCache: typeof QueryResultCache;
|
|
250
|
+
createPreparedStatementCache: typeof createPreparedStatementCache;
|
|
251
|
+
};
|
|
252
|
+
export default _default;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Hint Support
|
|
3
|
+
* Provides functionality to add database-specific query hints to optimize query execution
|
|
4
|
+
*/
|
|
5
|
+
import { Dialect } from '../dialects/dialect';
|
|
6
|
+
/**
|
|
7
|
+
* Types of query hints supported
|
|
8
|
+
*/
|
|
9
|
+
export declare enum HintType {
|
|
10
|
+
/** Force use of a specific index */
|
|
11
|
+
FORCE_INDEX = "FORCE INDEX",
|
|
12
|
+
/** Suggest using a specific index */
|
|
13
|
+
USE_INDEX = "USE INDEX",
|
|
14
|
+
/** Ignore certain indexes */
|
|
15
|
+
IGNORE_INDEX = "IGNORE INDEX",
|
|
16
|
+
/** Force join order */
|
|
17
|
+
JOIN_FIXED_ORDER = "JOIN_FIXED_ORDER",
|
|
18
|
+
/** Force hash join */
|
|
19
|
+
MERGE_HASH = "MERGE_HASH",
|
|
20
|
+
/** Disable merge join */
|
|
21
|
+
NO_MERGE = "NO_MERGE",
|
|
22
|
+
/** Use nested loop join */
|
|
23
|
+
NESTED_LOOP = "NESTED_LOOP",
|
|
24
|
+
/** Maximum execution time in seconds */
|
|
25
|
+
MAX_EXECUTION_TIME = "MAX_EXECUTION_TIME",
|
|
26
|
+
/** SQL_BIG_RESULT hint */
|
|
27
|
+
SQL_BIG_RESULT = "SQL_BIG_RESULT",
|
|
28
|
+
/** SQL_SMALL_RESULT hint */
|
|
29
|
+
SQL_SMALL_RESULT = "SQL_SMALL_RESULT",
|
|
30
|
+
/** PostgreSQL: Sequential scan */
|
|
31
|
+
SEQ_SCAN = "SEQ_SCAN",
|
|
32
|
+
/** PostgreSQL: No sequential scan */
|
|
33
|
+
NO_SEQ_SCAN = "NO_SEQ_SCAN",
|
|
34
|
+
/** PostgreSQL: Index scan */
|
|
35
|
+
INDEX_SCAN = "INDEX_SCAN",
|
|
36
|
+
/** PostgreSQL: No index scan */
|
|
37
|
+
NO_INDEX_SCAN = "NO_INDEX_SCAN",
|
|
38
|
+
/** SQLite: Optimize query */
|
|
39
|
+
OPTIMIZE = "OPTIMIZE",
|
|
40
|
+
/** SQLite: Query plan */
|
|
41
|
+
QUERY_PLAN = "QUERY_PLAN",
|
|
42
|
+
/** SQL_BUFFER_RESULT hint */
|
|
43
|
+
SQL_BUFFER_RESULT = "SQL_BUFFER_RESULT",
|
|
44
|
+
/** SQL_CACHE hint (MySQL query cache) */
|
|
45
|
+
SQL_CACHE = "SQL_CACHE",
|
|
46
|
+
/** SQL_NO_CACHE hint */
|
|
47
|
+
SQL_NO_CACHE = "SQL_NO_CACHE",
|
|
48
|
+
/** Index merge hints */
|
|
49
|
+
INDEX_MERGE = "INDEX_MERGE",
|
|
50
|
+
/** Subquery optimization hints */
|
|
51
|
+
SUBQUERY = "SUBQUERY"
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Query hint definition
|
|
55
|
+
*/
|
|
56
|
+
export interface QueryHint {
|
|
57
|
+
type: HintType | HintTypeExtended;
|
|
58
|
+
value?: string | string[] | number;
|
|
59
|
+
tableName?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Standard index hint for MySQL/MariaDB
|
|
63
|
+
*/
|
|
64
|
+
export declare const INDEX_HINT: {
|
|
65
|
+
FORCE: (indexName: string, tableName?: string) => QueryHint;
|
|
66
|
+
USE: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
67
|
+
IGNORE: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Predefined query hints
|
|
71
|
+
*/
|
|
72
|
+
export declare const FORCE_INDEX: (indexName: string, tableName?: string) => QueryHint;
|
|
73
|
+
export declare const USE_INDEX: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
74
|
+
export declare const JOIN_FIXED_ORDER: QueryHint;
|
|
75
|
+
export declare const MERGE_HASH: QueryHint;
|
|
76
|
+
export declare const NO_MERGE: QueryHint;
|
|
77
|
+
export declare const NESTED_LOOP: QueryHint;
|
|
78
|
+
export declare const SQL_BIG_RESULT: QueryHint;
|
|
79
|
+
export declare const SQL_SMALL_RESULT: QueryHint;
|
|
80
|
+
export declare const SQL_BUFFER_RESULT: QueryHint;
|
|
81
|
+
export declare const SQL_CACHE: QueryHint;
|
|
82
|
+
export declare const SQL_NO_CACHE: QueryHint;
|
|
83
|
+
/**
|
|
84
|
+
* Maximum execution time hint
|
|
85
|
+
*/
|
|
86
|
+
export declare const MAX_EXECUTION_TIME: (seconds: number) => QueryHint;
|
|
87
|
+
/**
|
|
88
|
+
* Query hint manager for applying hints to SQL queries
|
|
89
|
+
*/
|
|
90
|
+
export declare class QueryHintManager {
|
|
91
|
+
private dialect;
|
|
92
|
+
private enabled;
|
|
93
|
+
constructor(dialect: Dialect, options?: {
|
|
94
|
+
enabled?: boolean;
|
|
95
|
+
});
|
|
96
|
+
/**
|
|
97
|
+
* Enable or disable query hints
|
|
98
|
+
*/
|
|
99
|
+
setEnabled(enabled: boolean): void;
|
|
100
|
+
/**
|
|
101
|
+
* Check if hints are enabled
|
|
102
|
+
*/
|
|
103
|
+
isEnabled(): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Apply query hints to a SQL query
|
|
106
|
+
* @param sql - The base SQL query
|
|
107
|
+
* @param hints - Array of query hints to apply
|
|
108
|
+
* @returns SQL with hints applied
|
|
109
|
+
*/
|
|
110
|
+
applyHints(sql: string, hints: QueryHint[]): string;
|
|
111
|
+
/**
|
|
112
|
+
* Check if a hint is supported by the current dialect
|
|
113
|
+
*/
|
|
114
|
+
private isHintSupported;
|
|
115
|
+
/**
|
|
116
|
+
* Build the hint comment string for the dialect
|
|
117
|
+
*/
|
|
118
|
+
private buildHintComment;
|
|
119
|
+
/**
|
|
120
|
+
* Build MySQL/MariaDB hint comments
|
|
121
|
+
*/
|
|
122
|
+
private buildMySQLHints;
|
|
123
|
+
/**
|
|
124
|
+
* Build PostgreSQL hint comments (using pg_hint_plan format)
|
|
125
|
+
*/
|
|
126
|
+
private buildPostgresHints;
|
|
127
|
+
/**
|
|
128
|
+
* Build SQLite hint comments
|
|
129
|
+
*/
|
|
130
|
+
private buildSQLiteHints;
|
|
131
|
+
/**
|
|
132
|
+
* Build Oracle hint comments (placed immediately after SELECT/INSERT/UPDATE/DELETE,
|
|
133
|
+
* same position as the MySQL/PostgreSQL comment hints).
|
|
134
|
+
* - USE_NL: force a nested loop join
|
|
135
|
+
* - USE_HASH: force a hash join
|
|
136
|
+
* - NO_MERGE: Oracle's real NO_MERGE hint (prevents view merging); used here as
|
|
137
|
+
* the closest real Oracle equivalent for "disable merge join"
|
|
138
|
+
*/
|
|
139
|
+
private buildOracleHints;
|
|
140
|
+
/**
|
|
141
|
+
* Build a SQL Server `OPTION (...)` query hint clause, appended to the end of
|
|
142
|
+
* the statement (SQL Server does not support inline `/*+ ... *\/` comment hints).
|
|
143
|
+
* SQL Server doesn't expose a direct "disable merge join" hint, so NO_MERGE is
|
|
144
|
+
* approximated by restricting the optimizer to HASH JOIN and LOOP JOIN, which
|
|
145
|
+
* excludes merge join from consideration.
|
|
146
|
+
*/
|
|
147
|
+
private buildMssqlOptionClause;
|
|
148
|
+
/**
|
|
149
|
+
* Create a hint for forcing index usage
|
|
150
|
+
*/
|
|
151
|
+
forceIndex(indexName: string, tableName?: string): QueryHint;
|
|
152
|
+
/**
|
|
153
|
+
* Create a hint for suggesting index usage
|
|
154
|
+
*/
|
|
155
|
+
useIndex(indexName: string | string[], tableName?: string): QueryHint;
|
|
156
|
+
/**
|
|
157
|
+
* Create a hint for ignoring certain indexes
|
|
158
|
+
*/
|
|
159
|
+
ignoreIndex(indexName: string | string[], tableName?: string): QueryHint;
|
|
160
|
+
/**
|
|
161
|
+
* Create a hint for maximum execution time
|
|
162
|
+
*/
|
|
163
|
+
maxExecutionTime(seconds: number): QueryHint;
|
|
164
|
+
/**
|
|
165
|
+
* Create a hint for SQL_BIG_RESULT
|
|
166
|
+
*/
|
|
167
|
+
sqlBigResult(): QueryHint;
|
|
168
|
+
/**
|
|
169
|
+
* Create a hint for SQL_SMALL_RESULT
|
|
170
|
+
*/
|
|
171
|
+
sqlSmallResult(): QueryHint;
|
|
172
|
+
/**
|
|
173
|
+
* Create a hint for SQL_NO_CACHE
|
|
174
|
+
*/
|
|
175
|
+
sqlNoCache(): QueryHint;
|
|
176
|
+
}
|
|
177
|
+
export declare enum HintTypeExtended {
|
|
178
|
+
SEQ_SCAN = "SEQ_SCAN",
|
|
179
|
+
NO_SEQ_SCAN = "NO_SEQ_SCAN",
|
|
180
|
+
INDEX_SCAN = "INDEX_SCAN",
|
|
181
|
+
NO_INDEX_SCAN = "NO_INDEX_SCAN",
|
|
182
|
+
OPTIMIZE = "OPTIMIZE",
|
|
183
|
+
QUERY_PLAN = "QUERY_PLAN"
|
|
184
|
+
}
|
|
185
|
+
declare const _default: {
|
|
186
|
+
QueryHintManager: typeof QueryHintManager;
|
|
187
|
+
HintType: typeof HintType;
|
|
188
|
+
INDEX_HINT: {
|
|
189
|
+
FORCE: (indexName: string, tableName?: string) => QueryHint;
|
|
190
|
+
USE: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
191
|
+
IGNORE: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
192
|
+
};
|
|
193
|
+
FORCE_INDEX: (indexName: string, tableName?: string) => QueryHint;
|
|
194
|
+
USE_INDEX: (indexName: string | string[], tableName?: string) => QueryHint;
|
|
195
|
+
JOIN_FIXED_ORDER: QueryHint;
|
|
196
|
+
MERGE_HASH: QueryHint;
|
|
197
|
+
NO_MERGE: QueryHint;
|
|
198
|
+
NESTED_LOOP: QueryHint;
|
|
199
|
+
MAX_EXECUTION_TIME: (seconds: number) => QueryHint;
|
|
200
|
+
};
|
|
201
|
+
export default _default;
|