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,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection Pool Management
|
|
3
|
+
* Manages a pool of database connections for efficient resource usage
|
|
4
|
+
* Includes health checks, connection validation, and comprehensive metrics
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
import { PoolOptions } from './types';
|
|
8
|
+
export { PoolOptions } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Pool event types
|
|
11
|
+
*/
|
|
12
|
+
export type PoolEventType = 'acquire' | 'release' | 'destroy' | 'create' | 'remove' | 'error' | 'enqueue' | 'dequeue' | 'timeout' | 'health-check' | 'connection-invalid' | 'reconnect';
|
|
13
|
+
/**
|
|
14
|
+
* Pool events interface
|
|
15
|
+
*/
|
|
16
|
+
export interface PoolEvents {
|
|
17
|
+
acquire: (connection: any) => void;
|
|
18
|
+
release: (connection: any) => void;
|
|
19
|
+
destroy: (connection: any) => void;
|
|
20
|
+
create: (connection: any) => void;
|
|
21
|
+
remove: (connection: any) => void;
|
|
22
|
+
error: (error: Error) => void;
|
|
23
|
+
enqueue: () => void;
|
|
24
|
+
dequeue: () => void;
|
|
25
|
+
timeout: (connection: any) => void;
|
|
26
|
+
'health-check': (connection: any, healthy: boolean) => void;
|
|
27
|
+
'connection-invalid': (connection: any) => void;
|
|
28
|
+
reconnect: (connection: any, success: boolean) => void;
|
|
29
|
+
}
|
|
30
|
+
export interface PoolConnectionOptions {
|
|
31
|
+
id?: string;
|
|
32
|
+
timestamp?: number;
|
|
33
|
+
metadata?: Record<string, any>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Health check configuration for connections
|
|
37
|
+
*/
|
|
38
|
+
export interface HealthCheckConfig {
|
|
39
|
+
/** Enable health checks */
|
|
40
|
+
enabled: boolean;
|
|
41
|
+
/** Interval in milliseconds between health checks */
|
|
42
|
+
interval: number;
|
|
43
|
+
/** Timeout for health check query in milliseconds */
|
|
44
|
+
timeout: number;
|
|
45
|
+
/** SQL query to use for health check */
|
|
46
|
+
query: string;
|
|
47
|
+
/** Number of consecutive failures before removing connection */
|
|
48
|
+
maxFailures: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Pool metrics for monitoring
|
|
52
|
+
*/
|
|
53
|
+
export interface PoolMetrics {
|
|
54
|
+
/** Total connections in pool */
|
|
55
|
+
size: number;
|
|
56
|
+
/** Available (idle) connections */
|
|
57
|
+
available: number;
|
|
58
|
+
/** Connections currently in use */
|
|
59
|
+
inUse: number;
|
|
60
|
+
/** Total connections acquired since pool creation */
|
|
61
|
+
acquired: number;
|
|
62
|
+
/** Total connections released since pool creation */
|
|
63
|
+
released: number;
|
|
64
|
+
/** Total connections destroyed */
|
|
65
|
+
destroyed: number;
|
|
66
|
+
/** Requests waiting for a connection */
|
|
67
|
+
pending: number;
|
|
68
|
+
/** Connection acquire success rate (0-1) */
|
|
69
|
+
hitRate: number;
|
|
70
|
+
/** Average wait time in milliseconds */
|
|
71
|
+
avgWaitTime: number;
|
|
72
|
+
/** Maximum wait time observed in milliseconds */
|
|
73
|
+
maxWaitTime: number;
|
|
74
|
+
/** Total number of health checks performed */
|
|
75
|
+
healthChecks: number;
|
|
76
|
+
/** Number of failed health checks */
|
|
77
|
+
failedHealthChecks: number;
|
|
78
|
+
/** Number of connection validations performed */
|
|
79
|
+
validations: number;
|
|
80
|
+
/** Number of failed validations */
|
|
81
|
+
failedValidations: number;
|
|
82
|
+
/** Number of successful reconnection attempts */
|
|
83
|
+
reconnects: number;
|
|
84
|
+
/** Uptime in milliseconds */
|
|
85
|
+
uptime: number;
|
|
86
|
+
}
|
|
87
|
+
export interface PoolConfig extends PoolOptions {
|
|
88
|
+
/**
|
|
89
|
+
* Time in milliseconds to evict idle connections
|
|
90
|
+
*/
|
|
91
|
+
evict?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Callback when a connection is acquired
|
|
94
|
+
*/
|
|
95
|
+
onAcquire?: (connection: any) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Callback when a connection is released
|
|
98
|
+
*/
|
|
99
|
+
onRelease?: (connection: any) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Callback when a connection is destroyed
|
|
102
|
+
*/
|
|
103
|
+
onDestroy?: (connection: any) => void;
|
|
104
|
+
/**
|
|
105
|
+
* Callback on pool error
|
|
106
|
+
*/
|
|
107
|
+
onError?: (error: Error) => void;
|
|
108
|
+
/**
|
|
109
|
+
* Health check configuration
|
|
110
|
+
*/
|
|
111
|
+
healthCheck?: Partial<HealthCheckConfig>;
|
|
112
|
+
/**
|
|
113
|
+
* Enable connection validation on borrow
|
|
114
|
+
*/
|
|
115
|
+
validateOnBorrow?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Timeout for connection validation in milliseconds
|
|
118
|
+
*/
|
|
119
|
+
validationTimeout?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Custom validation query (overrides healthCheck.query)
|
|
122
|
+
*/
|
|
123
|
+
validationQuery?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Enable reconnection for failed connections
|
|
126
|
+
*/
|
|
127
|
+
enableReconnection?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Maximum number of reconnection attempts
|
|
130
|
+
*/
|
|
131
|
+
maxReconnectAttempts?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Interval between reconnection attempts in milliseconds
|
|
134
|
+
*/
|
|
135
|
+
reconnectInterval?: number;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Pooled connection wrapper with health tracking
|
|
139
|
+
*/
|
|
140
|
+
export declare class PooledConnection {
|
|
141
|
+
id: string;
|
|
142
|
+
connection: any;
|
|
143
|
+
inUse: boolean;
|
|
144
|
+
timestamp: number;
|
|
145
|
+
metadata: Record<string, any>;
|
|
146
|
+
healthCheckFailures: number;
|
|
147
|
+
lastHealthCheck: number;
|
|
148
|
+
lastValidation: number;
|
|
149
|
+
isHealthy: boolean;
|
|
150
|
+
connectTimestamp: number;
|
|
151
|
+
constructor(connection: any, id?: string);
|
|
152
|
+
/**
|
|
153
|
+
* Mark the connection as in use
|
|
154
|
+
*/
|
|
155
|
+
markInUse(): void;
|
|
156
|
+
/**
|
|
157
|
+
* Release the connection back to the pool
|
|
158
|
+
*/
|
|
159
|
+
release(): void;
|
|
160
|
+
/**
|
|
161
|
+
* Check if the connection is idle for too long
|
|
162
|
+
*/
|
|
163
|
+
isIdle(timeout: number): boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Check if the connection has been idle longer than the given timeout
|
|
166
|
+
*/
|
|
167
|
+
isIdleExceeding(timeout: number): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Increment health check failure counter
|
|
170
|
+
*/
|
|
171
|
+
recordHealthCheckFailure(): void;
|
|
172
|
+
/**
|
|
173
|
+
* Reset health check failures on successful check
|
|
174
|
+
*/
|
|
175
|
+
resetHealthCheckFailures(): void;
|
|
176
|
+
/**
|
|
177
|
+
* Get connection age in milliseconds
|
|
178
|
+
*/
|
|
179
|
+
getAge(): number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Connection Pool class
|
|
183
|
+
* Manages a pool of database connections with configurable limits
|
|
184
|
+
*/
|
|
185
|
+
export declare class ConnectionPool extends EventEmitter {
|
|
186
|
+
private config;
|
|
187
|
+
protected connections: Map<string, PooledConnection>;
|
|
188
|
+
private waitingQueue;
|
|
189
|
+
private evictTimer?;
|
|
190
|
+
private _isDestroyed;
|
|
191
|
+
protected _size: number;
|
|
192
|
+
protected _available: number;
|
|
193
|
+
protected _inUse: number;
|
|
194
|
+
protected _acquired: number;
|
|
195
|
+
protected _released: number;
|
|
196
|
+
protected _destroyed: number;
|
|
197
|
+
protected _pending: number;
|
|
198
|
+
/**
|
|
199
|
+
* Maximum number of connections in the pool
|
|
200
|
+
*/
|
|
201
|
+
get max(): number;
|
|
202
|
+
/**
|
|
203
|
+
* Minimum number of idle connections
|
|
204
|
+
*/
|
|
205
|
+
get min(): number;
|
|
206
|
+
/**
|
|
207
|
+
* Get the pending requests count
|
|
208
|
+
*/
|
|
209
|
+
get pending(): number;
|
|
210
|
+
/**
|
|
211
|
+
* Constructor
|
|
212
|
+
*/
|
|
213
|
+
constructor(config: PoolConfig);
|
|
214
|
+
/**
|
|
215
|
+
* Initialize the pool with a factory function to create connections
|
|
216
|
+
*/
|
|
217
|
+
initialize(): Promise<void>;
|
|
218
|
+
/**
|
|
219
|
+
* Get a connection from the pool
|
|
220
|
+
*/
|
|
221
|
+
getConnection(): Promise<PooledConnection>;
|
|
222
|
+
/**
|
|
223
|
+
* Release a connection back to the pool
|
|
224
|
+
*/
|
|
225
|
+
releaseConnection(pooledConnection: PooledConnection): void;
|
|
226
|
+
/**
|
|
227
|
+
* Destroy a connection
|
|
228
|
+
*/
|
|
229
|
+
destroyConnection(pooledConnection: PooledConnection): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* Destroy a specific connection or the entire pool
|
|
232
|
+
* @param connection - Optional connection to destroy. If not provided, destroys the entire pool
|
|
233
|
+
*/
|
|
234
|
+
destroy(connection?: any): Promise<void>;
|
|
235
|
+
/**
|
|
236
|
+
* Get pool statistics
|
|
237
|
+
*/
|
|
238
|
+
get stats(): {
|
|
239
|
+
size: number;
|
|
240
|
+
available: number;
|
|
241
|
+
inUse: number;
|
|
242
|
+
acquired: number;
|
|
243
|
+
released: number;
|
|
244
|
+
destroyed: number;
|
|
245
|
+
pending: number;
|
|
246
|
+
};
|
|
247
|
+
/**
|
|
248
|
+
* Get the current pool size
|
|
249
|
+
*/
|
|
250
|
+
get size(): number;
|
|
251
|
+
/**
|
|
252
|
+
* Get the number of available connections
|
|
253
|
+
*/
|
|
254
|
+
get available(): number;
|
|
255
|
+
/**
|
|
256
|
+
* Get the number of connections in use
|
|
257
|
+
*/
|
|
258
|
+
get inUse(): number;
|
|
259
|
+
/**
|
|
260
|
+
* Check if the pool is destroyed
|
|
261
|
+
*/
|
|
262
|
+
get isDestroyed(): boolean;
|
|
263
|
+
/**
|
|
264
|
+
* Get the number of connections in use (alias for inUse)
|
|
265
|
+
*/
|
|
266
|
+
get used(): number;
|
|
267
|
+
/**
|
|
268
|
+
* Get an available connection from the pool
|
|
269
|
+
*/
|
|
270
|
+
private getAvailableConnection;
|
|
271
|
+
/**
|
|
272
|
+
* Create a new connection
|
|
273
|
+
*/
|
|
274
|
+
protected createConnection(): Promise<PooledConnection>;
|
|
275
|
+
/**
|
|
276
|
+
* Process the waiting queue
|
|
277
|
+
*/
|
|
278
|
+
private processWaitingQueue;
|
|
279
|
+
/**
|
|
280
|
+
* Start the evictor to clean up idle connections
|
|
281
|
+
*/
|
|
282
|
+
private startEvictor;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Database-specific connection pool implementation
|
|
286
|
+
*/
|
|
287
|
+
export declare class DatabaseConnectionPool extends ConnectionPool {
|
|
288
|
+
private connectionFactory;
|
|
289
|
+
constructor(config: PoolConfig & {
|
|
290
|
+
factory: () => Promise<any>;
|
|
291
|
+
});
|
|
292
|
+
/**
|
|
293
|
+
* Create a new database connection
|
|
294
|
+
*/
|
|
295
|
+
protected createConnection(): Promise<PooledConnection>;
|
|
296
|
+
/**
|
|
297
|
+
* Get a connection using async/await
|
|
298
|
+
*/
|
|
299
|
+
acquire(): Promise<any>;
|
|
300
|
+
/**
|
|
301
|
+
* Release a connection
|
|
302
|
+
*/
|
|
303
|
+
release(connection: any): void;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Create a new connection pool
|
|
307
|
+
*/
|
|
308
|
+
export declare function createPool(config: PoolConfig & {
|
|
309
|
+
factory: () => Promise<any>;
|
|
310
|
+
}): DatabaseConnectionPool;
|
|
311
|
+
export default ConnectionPool;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Audit class decorator — automatically record model lifecycle events to an
|
|
3
|
+
* in-memory audit log.
|
|
4
|
+
*
|
|
5
|
+
* When applied to a model class the decorator registers beforeCreate,
|
|
6
|
+
* beforeUpdate, and beforeDestroy hooks (via ModelClass.addHook) that append
|
|
7
|
+
* structured entries to a per-class log.
|
|
8
|
+
*
|
|
9
|
+
* Example:
|
|
10
|
+
*
|
|
11
|
+
* @Audit({ tableName: 'audit_log', trackFields: ['name', 'email'] })
|
|
12
|
+
* class User extends Model { ... }
|
|
13
|
+
*
|
|
14
|
+
* // After create/update/destroy hooks fire:
|
|
15
|
+
* const log = getAuditLog(User);
|
|
16
|
+
* clearAuditLog(User);
|
|
17
|
+
*/
|
|
18
|
+
export interface AuditOptions {
|
|
19
|
+
/** Name of the conceptual audit table (used as label in entries). Default: 'audit_log'. */
|
|
20
|
+
tableName?: string;
|
|
21
|
+
/** If provided, only these fields are captured in newValues/oldValues. */
|
|
22
|
+
trackFields?: string[];
|
|
23
|
+
/** Field name on the model that holds the current user identifier. */
|
|
24
|
+
userField?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AuditEntry {
|
|
27
|
+
action: 'CREATE' | 'UPDATE' | 'DELETE';
|
|
28
|
+
model: string;
|
|
29
|
+
newValues?: Record<string, any>;
|
|
30
|
+
oldValues?: Record<string, any>;
|
|
31
|
+
user?: any;
|
|
32
|
+
timestamp: Date;
|
|
33
|
+
}
|
|
34
|
+
/** Return all audit log entries accumulated for a model class. */
|
|
35
|
+
export declare function getAuditLog(target: any): AuditEntry[];
|
|
36
|
+
/** Clear all audit log entries for a model class. */
|
|
37
|
+
export declare function clearAuditLog(target: any): void;
|
|
38
|
+
/**
|
|
39
|
+
* Mark a model class for automatic audit logging.
|
|
40
|
+
*
|
|
41
|
+
* Hooks are registered via `ModelClass.addHook` if the method exists, so this
|
|
42
|
+
* decorator is compatible with both Prorm-style models and plain mock classes
|
|
43
|
+
* that expose addHook manually in tests.
|
|
44
|
+
*/
|
|
45
|
+
export declare function Audit(options?: AuditOptions): ClassDecorator;
|
|
46
|
+
/** Read the AuditOptions stored on a decorated class. */
|
|
47
|
+
export declare function getAuditOptions(target: any): (AuditOptions & {
|
|
48
|
+
tableName: string;
|
|
49
|
+
}) | undefined;
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Check decorator for the ORM — generates CHECK constraints without writing raw SQL.
|
|
3
|
+
*
|
|
4
|
+
* Supports ORM-native operator syntax that gets converted to SQL CHECK expressions.
|
|
5
|
+
*
|
|
6
|
+
* Usage Examples:
|
|
7
|
+
*
|
|
8
|
+
* // Column-level check with ORM operators
|
|
9
|
+
* @Check({ age: { $gte: 18 } })
|
|
10
|
+
* age: number;
|
|
11
|
+
*
|
|
12
|
+
* // Multiple column checks
|
|
13
|
+
* @Check({
|
|
14
|
+
* status: { $in: ['active', 'pending', 'draft'] },
|
|
15
|
+
* email: { $regex: '^[^@]+@[^@]+$' }
|
|
16
|
+
* })
|
|
17
|
+
* email: string;
|
|
18
|
+
*
|
|
19
|
+
* // Custom condition with message
|
|
20
|
+
* @Check({
|
|
21
|
+
* condition: (row) => row.startDate < row.endDate,
|
|
22
|
+
* message: 'Start date must be before end date'
|
|
23
|
+
* })
|
|
24
|
+
* startDate: Date;
|
|
25
|
+
*
|
|
26
|
+
* // Column-level check (explicit column)
|
|
27
|
+
* @CheckColumn('price', { $gte: 0 }, 'Price must be positive')
|
|
28
|
+
* @CheckColumn('quantity', { $gt: 0 }, 'Quantity must be greater than zero')
|
|
29
|
+
*
|
|
30
|
+
* // Table-level check (multiple columns)
|
|
31
|
+
* @CheckTable({
|
|
32
|
+
* condition: (row) => row.quantity * row.price >= row.minimumOrder,
|
|
33
|
+
* message: 'Total must meet minimum order amount'
|
|
34
|
+
* })
|
|
35
|
+
*/
|
|
36
|
+
/**
|
|
37
|
+
* ORM operator types for CHECK constraints
|
|
38
|
+
* Maps to SQL operators for CHECK constraint generation
|
|
39
|
+
*/
|
|
40
|
+
export type CheckOperator = {
|
|
41
|
+
$eq: any;
|
|
42
|
+
} | {
|
|
43
|
+
$ne: any;
|
|
44
|
+
} | {
|
|
45
|
+
$gt: number | string;
|
|
46
|
+
} | {
|
|
47
|
+
$gte: number | string;
|
|
48
|
+
} | {
|
|
49
|
+
$lt: number | string;
|
|
50
|
+
} | {
|
|
51
|
+
$lte: number | string;
|
|
52
|
+
} | {
|
|
53
|
+
$in: any[];
|
|
54
|
+
} | {
|
|
55
|
+
$notIn: any[];
|
|
56
|
+
} | {
|
|
57
|
+
$between: [any, any];
|
|
58
|
+
} | {
|
|
59
|
+
$notBetween: [any, any];
|
|
60
|
+
} | {
|
|
61
|
+
$like: string;
|
|
62
|
+
} | {
|
|
63
|
+
$notLike: string;
|
|
64
|
+
} | {
|
|
65
|
+
$iLike: string;
|
|
66
|
+
} | {
|
|
67
|
+
$notILike: string;
|
|
68
|
+
} | {
|
|
69
|
+
$regex: string;
|
|
70
|
+
} | {
|
|
71
|
+
$notRegexp: string;
|
|
72
|
+
} | {
|
|
73
|
+
$iRegexp: string;
|
|
74
|
+
} | {
|
|
75
|
+
$notIRegexp: string;
|
|
76
|
+
} | {
|
|
77
|
+
$isNull: null;
|
|
78
|
+
} | {
|
|
79
|
+
$isNotNull: null;
|
|
80
|
+
} | {
|
|
81
|
+
$contains: any;
|
|
82
|
+
} | {
|
|
83
|
+
$containedBy: any;
|
|
84
|
+
} | {
|
|
85
|
+
$overlap: any[];
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Field-level check constraint definition
|
|
89
|
+
*/
|
|
90
|
+
export interface FieldCheckConstraint {
|
|
91
|
+
field: string;
|
|
92
|
+
operator: CheckOperator;
|
|
93
|
+
message?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Row-level check constraint for table-level checks
|
|
97
|
+
* Uses a function to express cross-column conditions
|
|
98
|
+
*/
|
|
99
|
+
export interface RowCheckConstraint {
|
|
100
|
+
condition: (row: Record<string, any>) => boolean;
|
|
101
|
+
message?: string;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check constraint options for @Check decorator
|
|
105
|
+
* Can specify field-level checks or row-level checks
|
|
106
|
+
*/
|
|
107
|
+
export interface CheckConstraintOptions {
|
|
108
|
+
/** Single field check with operator */
|
|
109
|
+
[field: string]: CheckOperator | RowCheckConstraint;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Options for @CheckColumn decorator
|
|
113
|
+
*/
|
|
114
|
+
export interface CheckColumnOptions {
|
|
115
|
+
/** Column name to check */
|
|
116
|
+
column: string;
|
|
117
|
+
/** Operator and value */
|
|
118
|
+
operator: CheckOperator;
|
|
119
|
+
/** Optional custom error message */
|
|
120
|
+
message?: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Options for @CheckTable decorator
|
|
124
|
+
*/
|
|
125
|
+
export interface CheckTableOptions {
|
|
126
|
+
/** Row-level condition function */
|
|
127
|
+
condition: (row: Record<string, any>) => boolean;
|
|
128
|
+
/** Custom error message */
|
|
129
|
+
message?: string;
|
|
130
|
+
/** Constraint name */
|
|
131
|
+
name?: string;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Internal storage for check constraints
|
|
135
|
+
*/
|
|
136
|
+
export interface StoredCheckConstraint {
|
|
137
|
+
type: 'column' | 'table';
|
|
138
|
+
name: string;
|
|
139
|
+
field?: string;
|
|
140
|
+
operator?: CheckOperator;
|
|
141
|
+
condition?: (row: Record<string, any>) => boolean;
|
|
142
|
+
message?: string;
|
|
143
|
+
sql?: string;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Supported SQL dialect identifiers used throughout the ORM
|
|
147
|
+
*/
|
|
148
|
+
export type CheckDialect = 'mysql' | 'mariadb' | 'postgres' | 'mssql' | 'oracle' | 'sqlite';
|
|
149
|
+
/**
|
|
150
|
+
* Convert ORM operator to SQL CHECK expression
|
|
151
|
+
* @param fieldName - The column name
|
|
152
|
+
* @param operator - The ORM operator object
|
|
153
|
+
* @param dialect - The target SQL dialect (defaults to 'postgres' for backwards compatibility)
|
|
154
|
+
* @returns SQL expression string
|
|
155
|
+
*/
|
|
156
|
+
export declare function operatorToSQL(fieldName: string, operator: CheckOperator, dialect?: CheckDialect): string;
|
|
157
|
+
/**
|
|
158
|
+
* @Check decorator — attach CHECK constraints to a column or multiple columns.
|
|
159
|
+
*
|
|
160
|
+
* For column-level use (on class property):
|
|
161
|
+
* @Check({ age: { $gte: 18 } })
|
|
162
|
+
* age: number;
|
|
163
|
+
*
|
|
164
|
+
* For multiple checks:
|
|
165
|
+
* @Check({
|
|
166
|
+
* status: { $in: ['active', 'pending'] },
|
|
167
|
+
* email: { $regex: '^[^@]+@[^@]+$' }
|
|
168
|
+
* })
|
|
169
|
+
* email: string;
|
|
170
|
+
*
|
|
171
|
+
* For row-level condition:
|
|
172
|
+
* @Check({
|
|
173
|
+
* condition: (row) => row.startDate < row.endDate,
|
|
174
|
+
* message: 'Start date must be before end date'
|
|
175
|
+
* })
|
|
176
|
+
* startDate: Date;
|
|
177
|
+
*/
|
|
178
|
+
export declare function Check(options: CheckConstraintOptions): PropertyDecorator;
|
|
179
|
+
/**
|
|
180
|
+
* @CheckColumn decorator — explicit column-level CHECK constraint.
|
|
181
|
+
*
|
|
182
|
+
* @CheckColumn('price', { $gte: 0 }, 'Price must be positive')
|
|
183
|
+
* price: number;
|
|
184
|
+
*/
|
|
185
|
+
export declare function CheckColumn(column: string, operator: CheckOperator, message?: string): PropertyDecorator;
|
|
186
|
+
/**
|
|
187
|
+
* @CheckTable decorator — table-level CHECK constraint with multi-column conditions.
|
|
188
|
+
*
|
|
189
|
+
* @CheckTable({
|
|
190
|
+
* condition: (row) => row.quantity * row.price >= row.minimumOrder,
|
|
191
|
+
* message: 'Total must meet minimum order amount'
|
|
192
|
+
* })
|
|
193
|
+
*/
|
|
194
|
+
export declare function CheckTable(options: CheckTableOptions): ClassDecorator;
|
|
195
|
+
/**
|
|
196
|
+
* Get all CHECK constraints from a model class or instance
|
|
197
|
+
*/
|
|
198
|
+
export declare function getCheckConstraints(target: any): StoredCheckConstraint[];
|
|
199
|
+
/**
|
|
200
|
+
* Get all table-level CHECK constraints from a model class
|
|
201
|
+
*/
|
|
202
|
+
export declare function getTableCheckConstraints(target: any): StoredCheckConstraint[];
|
|
203
|
+
/**
|
|
204
|
+
* Get all CHECK constraints (both column and table level)
|
|
205
|
+
*/
|
|
206
|
+
export declare function getAllCheckConstraints(target: any): StoredCheckConstraint[];
|
|
207
|
+
/**
|
|
208
|
+
* Build CREATE TABLE CHECK constraint SQL
|
|
209
|
+
*/
|
|
210
|
+
export declare function buildCheckConstraintSQL(tableName: string, constraint: StoredCheckConstraint, dialect?: CheckDialect): string;
|
|
211
|
+
/**
|
|
212
|
+
* Build all CHECK constraints for a table
|
|
213
|
+
*/
|
|
214
|
+
export declare function buildAllCheckConstraints(tableName: string, constraints: StoredCheckConstraint[], dialect?: CheckDialect): string[];
|
|
215
|
+
/**
|
|
216
|
+
* Clear CHECK constraints (useful for testing)
|
|
217
|
+
*/
|
|
218
|
+
export declare function clearCheckConstraints(target: any): void;
|