ts-prorm-orm 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/README.md +194 -72
- package/dist/audit/history-query.d.ts +35 -0
- package/dist/audit/index.d.ts +16 -0
- package/dist/audit/logger.d.ts +126 -0
- package/dist/cache/cache-manager.d.ts +341 -0
- package/dist/cache/index.d.ts +8 -0
- package/dist/cache/redis-cluster-cache.d.ts +164 -0
- package/dist/cache/redis-cluster-cache.js +19 -36
- package/dist/cli/cloud.d.ts +55 -0
- package/dist/cli/cloud.js +318 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/auth.js +345 -0
- package/dist/cli/commands/billing.d.ts +2 -0
- package/dist/cli/commands/billing.js +135 -0
- package/dist/cli/commands/code.d.ts +2 -0
- package/dist/cli/commands/code.js +168 -0
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +154 -0
- package/dist/cli/commands/db.d.ts +2 -0
- package/dist/cli/commands/db.js +189 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +22 -0
- package/dist/cli/commands/keys.d.ts +2 -0
- package/dist/cli/commands/keys.js +100 -0
- package/dist/cli/commands/misc.d.ts +2 -0
- package/dist/cli/commands/misc.js +282 -0
- package/dist/cli/commands/pull.d.ts +2 -0
- package/dist/cli/commands/pull.js +306 -0
- package/dist/cli/commands/runners.d.ts +2 -0
- package/dist/cli/commands/runners.js +218 -0
- package/dist/cli/commands/scaffold.d.ts +2 -0
- package/dist/cli/commands/scaffold.js +383 -0
- package/dist/cli/commands/secrets.d.ts +2 -0
- package/dist/cli/commands/secrets.js +162 -0
- package/dist/cli/commands/store.d.ts +2 -0
- package/dist/cli/commands/store.js +274 -0
- package/dist/cli/commands/system.d.ts +10 -0
- package/dist/cli/commands/system.js +169 -0
- package/dist/cli/commands/teams.d.ts +2 -0
- package/dist/cli/commands/teams.js +189 -0
- package/dist/cli/commands/user.d.ts +2 -0
- package/dist/cli/commands/user.js +171 -0
- package/dist/cli/framework.d.ts +103 -0
- package/dist/cli/framework.js +436 -0
- package/dist/cli/io.d.ts +26 -0
- package/dist/cli/io.js +181 -0
- package/dist/cli/keychain.d.ts +10 -0
- package/dist/cli/keychain.js +101 -0
- package/dist/cli/prompt.d.ts +20 -0
- package/dist/cli/prompt.js +111 -0
- package/dist/cli.d.ts +214 -0
- package/dist/cli.js +72 -5
- package/dist/compliance/audit-trail.d.ts +66 -0
- package/dist/compliance/backup-verification.d.ts +279 -0
- package/dist/compliance/breach-detector.d.ts +197 -0
- package/dist/compliance/consent-record.d.ts +107 -0
- package/dist/compliance/consent-versioning.d.ts +169 -0
- package/dist/compliance/cross-border-log.d.ts +254 -0
- package/dist/compliance/data-classifier.d.ts +127 -0
- package/dist/compliance/data-lineage.d.ts +268 -0
- package/dist/compliance/data-masker.d.ts +110 -0
- package/dist/compliance/data-portability.d.ts +98 -0
- package/dist/compliance/data-retention.d.ts +108 -0
- package/dist/compliance/dsar-workflow.d.ts +175 -0
- package/dist/compliance/field-encryption.d.ts +84 -0
- package/dist/compliance/immutable-record.d.ts +84 -0
- package/dist/compliance/index.d.ts +93 -0
- package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
- package/dist/compliance/pseudonymization.d.ts +96 -0
- package/dist/compliance/query-firewall.d.ts +661 -0
- package/dist/compliance/rate-limiter.d.ts +203 -0
- package/dist/compliance/right-to-erasure.d.ts +96 -0
- package/dist/compliance/row-level-security.d.ts +152 -0
- package/dist/compliance/security-decorator.d.ts +388 -0
- package/dist/compliance/security-monitor.d.ts +170 -0
- package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
- package/dist/compliance/session-isolation.d.ts +286 -0
- package/dist/compliance/tls-enforcer.d.ts +51 -0
- package/dist/compliance/worm-storage.d.ts +225 -0
- package/dist/connection-manager.d.ts +130 -0
- package/dist/connection-pool.d.ts +311 -0
- package/dist/decorators/audit.d.ts +49 -0
- package/dist/decorators/check.d.ts +218 -0
- package/dist/decorators/collate.d.ts +346 -0
- package/dist/decorators/comment.d.ts +51 -0
- package/dist/decorators/database-settings.d.ts +193 -0
- package/dist/decorators/default.d.ts +148 -0
- package/dist/decorators/encryption.d.ts +175 -0
- package/dist/decorators/engine.d.ts +97 -0
- package/dist/decorators/fk-constraints.d.ts +387 -0
- package/dist/decorators/foreign-table.d.ts +57 -0
- package/dist/decorators/generated.d.ts +232 -0
- package/dist/decorators/hstore.d.ts +96 -0
- package/dist/decorators/index.d.ts +57 -0
- package/dist/decorators/index.js +14 -30
- package/dist/decorators/json-column.d.ts +47 -0
- package/dist/decorators/jsonb.d.ts +83 -0
- package/dist/decorators/orm-decorators.d.ts +274 -0
- package/dist/decorators/permissions.d.ts +192 -0
- package/dist/decorators/procedure.d.ts +168 -0
- package/dist/decorators/procedure.js +31 -7
- package/dist/decorators/query-options.d.ts +527 -0
- package/dist/decorators/range.d.ts +122 -0
- package/dist/decorators/set-column.d.ts +43 -0
- package/dist/decorators/spatial.d.ts +60 -0
- package/dist/decorators/storage.d.ts +561 -0
- package/dist/decorators/timezone.d.ts +319 -0
- package/dist/decorators/trigger.d.ts +50 -0
- package/dist/decorators/uuid.d.ts +102 -0
- package/dist/decorators/view.d.ts +213 -0
- package/dist/diagrams/chen-diagram.d.ts +70 -0
- package/dist/diagrams/chen-diagram.js +33 -31
- package/dist/diagrams/class-diagram.d.ts +78 -0
- package/dist/diagrams/class-diagram.js +23 -27
- package/dist/diagrams/dependency-diagram.d.ts +82 -0
- package/dist/diagrams/dependency-diagram.js +18 -9
- package/dist/diagrams/er-diagram.d.ts +82 -0
- package/dist/diagrams/er-diagram.js +174 -231
- package/dist/diagrams/flow-diagram.d.ts +70 -0
- package/dist/diagrams/flow-diagram.js +23 -18
- package/dist/diagrams/gantt-diagram.d.ts +67 -0
- package/dist/diagrams/gantt-diagram.js +20 -18
- package/dist/diagrams/index-diagram.d.ts +61 -0
- package/dist/diagrams/index-diagram.js +36 -31
- package/dist/diagrams/index.d.ts +155 -0
- package/dist/diagrams/index.js +7 -1
- package/dist/diagrams/migration-diagram.d.ts +67 -0
- package/dist/diagrams/migration-diagram.js +45 -57
- package/dist/diagrams/model-diagram.d.ts +85 -0
- package/dist/diagrams/model-diagram.js +225 -287
- package/dist/diagrams/package-diagram.d.ts +69 -0
- package/dist/diagrams/package-diagram.js +30 -32
- package/dist/diagrams/palette.d.ts +138 -0
- package/dist/diagrams/palette.js +134 -25
- package/dist/diagrams/relational-diagram.d.ts +82 -0
- package/dist/diagrams/relational-diagram.js +51 -59
- package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
- package/dist/diagrams/schemadoc-diagram.js +36 -28
- package/dist/diagrams/sequence-diagram.d.ts +61 -0
- package/dist/diagrams/sequence-diagram.js +20 -11
- package/dist/diagrams/state-diagram.d.ts +85 -0
- package/dist/diagrams/state-diagram.js +21 -17
- package/dist/diagrams/svg-dom.d.ts +62 -0
- package/dist/diagrams/svg-dom.js +11 -0
- package/dist/diagrams/tree-diagram.d.ts +47 -0
- package/dist/diagrams/tree-diagram.js +19 -10
- package/dist/dialects/clickhouse/index.d.ts +660 -0
- package/dist/dialects/clickhouse/index.js +107 -2
- package/dist/dialects/cockroachdb/index.d.ts +1708 -0
- package/dist/dialects/cockroachdb/index.js +139 -10
- package/dist/dialects/cratedb/index.d.ts +262 -0
- package/dist/dialects/cratedb/index.js +148 -0
- package/dist/dialects/databricks/index.d.ts +397 -0
- package/dist/dialects/databricks/index.js +233 -11
- package/dist/dialects/db2/index.d.ts +729 -0
- package/dist/dialects/db2/index.js +152 -2
- package/dist/dialects/dialect.d.ts +1653 -0
- package/dist/dialects/duckdb/index.d.ts +440 -0
- package/dist/dialects/duckdb/index.js +21 -37
- package/dist/dialects/exasol/index.d.ts +197 -0
- package/dist/dialects/exasol/index.js +14 -0
- package/dist/dialects/firebird/index.d.ts +286 -0
- package/dist/dialects/firebird/index.js +135 -0
- package/dist/dialects/greenplum/index.d.ts +336 -0
- package/dist/dialects/greenplum/index.js +168 -0
- package/dist/dialects/hana/index.d.ts +512 -0
- package/dist/dialects/hana/index.js +17 -35
- package/dist/dialects/mariadb/index.d.ts +1241 -0
- package/dist/dialects/mariadb/index.js +181 -43
- package/dist/dialects/mssql/index.d.ts +729 -0
- package/dist/dialects/mssql/index.js +76 -7
- package/dist/dialects/mysql/index.d.ts +1233 -0
- package/dist/dialects/mysql/index.js +87 -19
- package/dist/dialects/oracle/index.d.ts +1222 -0
- package/dist/dialects/oracle/index.js +210 -9
- package/dist/dialects/postgres/index.d.ts +1598 -0
- package/dist/dialects/postgres/index.js +34 -13
- package/dist/dialects/query-stream-helper.d.ts +58 -0
- package/dist/dialects/questdb/index.d.ts +430 -0
- package/dist/dialects/questdb/index.js +292 -0
- package/dist/dialects/redshift/index.d.ts +933 -0
- package/dist/dialects/redshift/index.js +17 -5
- package/dist/dialects/singlestore/index.d.ts +233 -0
- package/dist/dialects/singlestore/index.js +53 -0
- package/dist/dialects/snowflake/index.d.ts +727 -0
- package/dist/dialects/snowflake/index.js +154 -5
- package/dist/dialects/spanner/index.d.ts +660 -0
- package/dist/dialects/spanner/index.js +43 -21
- package/dist/dialects/sqlite/index.d.ts +1133 -0
- package/dist/dialects/sqlite/index.js +168 -30
- package/dist/dialects/tidb/index.d.ts +226 -0
- package/dist/dialects/tidb/index.js +10 -0
- package/dist/dialects/timescaledb/index.d.ts +286 -0
- package/dist/dialects/timescaledb/index.js +179 -0
- package/dist/dialects/trino/index.d.ts +230 -0
- package/dist/dialects/trino/index.js +85 -10
- package/dist/dialects/turso/index.d.ts +98 -0
- package/dist/dialects/turso/index.js +10 -0
- package/dist/dialects/vertica/index.d.ts +321 -0
- package/dist/dialects/vertica/index.js +161 -0
- package/dist/dialects/yugabytedb/index.d.ts +276 -0
- package/dist/dialects/yugabytedb/index.js +121 -0
- package/dist/errors/index.d.ts +378 -0
- package/dist/errors/index.js +29 -1
- package/dist/errors/utils.d.ts +53 -0
- package/dist/errors.d.ts +5 -0
- package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
- package/dist/extensions/catalog/mssql-features.d.ts +20 -0
- package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
- package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
- package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
- package/dist/extensions/index.d.ts +34 -0
- package/dist/extensions/types.d.ts +43 -0
- package/dist/external-fields/adapters.d.ts +50 -0
- package/dist/external-fields/adapters.js +227 -0
- package/dist/external-fields/decorator.d.ts +77 -0
- package/dist/external-fields/decorator.js +80 -0
- package/dist/external-fields/index.d.ts +10 -0
- package/dist/external-fields/index.js +19 -0
- package/dist/external-fields/runtime.d.ts +39 -0
- package/dist/external-fields/runtime.js +221 -0
- package/dist/foreign-data.d.ts +168 -0
- package/dist/graph/base-graph-dialect.d.ts +250 -0
- package/dist/graph/base-graph-dialect.js +539 -0
- package/dist/graph/dgraph/index.d.ts +65 -0
- package/dist/graph/dgraph/index.js +559 -0
- package/dist/graph/gremlin/index.d.ts +59 -0
- package/dist/graph/gremlin/index.js +378 -0
- package/dist/graph/index.d.ts +60 -0
- package/dist/graph/index.js +67 -0
- package/dist/graph/neo4j/index.d.ts +50 -0
- package/dist/graph/neo4j/index.js +462 -0
- package/dist/graph/types.d.ts +213 -0
- package/dist/graph/types.js +234 -0
- package/dist/hooks/hooks-manager.d.ts +189 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/index.d.ts +711 -0
- package/dist/index.js +19 -4
- package/dist/logging.d.ts +183 -0
- package/dist/migrations/index.d.ts +9 -0
- package/dist/migrations/migration.d.ts +143 -0
- package/dist/migrations/migrator.d.ts +199 -0
- package/dist/migrations/prormmigration.d.ts +131 -0
- package/dist/migrations/query-interface.d.ts +335 -0
- package/dist/migrations/seeder.d.ts +167 -0
- package/dist/models/associations.d.ts +131 -0
- package/dist/models/associations.js +7 -2
- package/dist/models/constraints.d.ts +175 -0
- package/dist/models/data-types.d.ts +1656 -0
- package/dist/models/decorators.d.ts +328 -0
- package/dist/models/decorators.js +61 -82
- package/dist/models/eager-load.d.ts +86 -0
- package/dist/models/eager-load.js +369 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/indexes.d.ts +325 -0
- package/dist/models/methods.d.ts +419 -0
- package/dist/models/model-manager.d.ts +76 -0
- package/dist/models/model.d.ts +820 -0
- package/dist/models/model.js +15 -101
- package/dist/models/operators.d.ts +29 -0
- package/dist/models/scopes.d.ts +71 -0
- package/dist/models/typescript-types.d.ts +177 -0
- package/dist/nosql/aerospike/index.d.ts +126 -0
- package/dist/nosql/allegrograph/index.d.ts +86 -0
- package/dist/nosql/arangodb/index.d.ts +285 -0
- package/dist/nosql/arangodb/index.js +274 -2
- package/dist/nosql/arangodb/where.d.ts +38 -0
- package/dist/nosql/arangodb/where.js +94 -0
- package/dist/nosql/azure-blob/index.d.ts +104 -0
- package/dist/nosql/beanstalkd/index.d.ts +88 -0
- package/dist/nosql/beequeue/index.d.ts +99 -0
- package/dist/nosql/bigchaindb/index.d.ts +113 -0
- package/dist/nosql/bigtable/index.d.ts +144 -0
- package/dist/nosql/blazegraph/index.d.ts +88 -0
- package/dist/nosql/bullmq/index.d.ts +83 -0
- package/dist/nosql/cassandra/index.d.ts +119 -0
- package/dist/nosql/chroma/index.d.ts +151 -0
- package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
- package/dist/nosql/coherence/index.d.ts +91 -0
- package/dist/nosql/cosmosdb/index.d.ts +78 -0
- package/dist/nosql/couchbase/index.d.ts +103 -0
- package/dist/nosql/dax/index.d.ts +118 -0
- package/dist/nosql/deno-kv/index.d.ts +109 -0
- package/dist/nosql/dgraph/index.d.ts +80 -0
- package/dist/nosql/doris/index.d.ts +88 -0
- package/dist/nosql/druid/index.d.ts +95 -0
- package/dist/nosql/dynamodb/index.d.ts +643 -0
- package/dist/nosql/dynamodb/index.js +423 -0
- package/dist/nosql/elasticsearch/index.d.ts +239 -0
- package/dist/nosql/etcd/index.d.ts +243 -0
- package/dist/nosql/eventhubs/index.d.ts +89 -0
- package/dist/nosql/eventstore/index.d.ts +102 -0
- package/dist/nosql/faunadb/index.d.ts +141 -0
- package/dist/nosql/faunadb/index.js +329 -0
- package/dist/nosql/firestore/index.d.ts +67 -0
- package/dist/nosql/fluree/index.d.ts +88 -0
- package/dist/nosql/fuseki/index.d.ts +94 -0
- package/dist/nosql/gcs/index.d.ts +62 -0
- package/dist/nosql/gearman/index.d.ts +77 -0
- package/dist/nosql/geode/index.d.ts +93 -0
- package/dist/nosql/graphdb/index.d.ts +86 -0
- package/dist/nosql/graylog/index.d.ts +118 -0
- package/dist/nosql/gridgain/index.d.ts +78 -0
- package/dist/nosql/hazelcast/index.d.ts +73 -0
- package/dist/nosql/hbase/index.d.ts +123 -0
- package/dist/nosql/ignite/index.d.ts +80 -0
- package/dist/nosql/immudb/index.d.ts +131 -0
- package/dist/nosql/index.d.ts +215 -0
- package/dist/nosql/infinispan/index.d.ts +95 -0
- package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
- package/dist/nosql/influxdb/flux-compiler.js +170 -0
- package/dist/nosql/influxdb/index.d.ts +300 -0
- package/dist/nosql/influxdb/index.js +0 -0
- package/dist/nosql/kafka/index.d.ts +113 -0
- package/dist/nosql/keyspaces/index.d.ts +122 -0
- package/dist/nosql/kinesis/index.d.ts +121 -0
- package/dist/nosql/leveldb/index.d.ts +112 -0
- package/dist/nosql/leveldb/index.js +103 -1
- package/dist/nosql/lmdb/index.d.ts +76 -0
- package/dist/nosql/loki/index.d.ts +126 -0
- package/dist/nosql/marklogic/index.d.ts +76 -0
- package/dist/nosql/materialize/index.d.ts +91 -0
- package/dist/nosql/meilisearch/index.d.ts +76 -0
- package/dist/nosql/memcached/index.d.ts +138 -0
- package/dist/nosql/milvus/index.d.ts +167 -0
- package/dist/nosql/minio/index.d.ts +122 -0
- package/dist/nosql/momento/index.d.ts +99 -0
- package/dist/nosql/mongodb/index.d.ts +265 -0
- package/dist/nosql/mongodb/index.js +139 -0
- package/dist/nosql/mongodb/where.d.ts +8 -0
- package/dist/nosql/mongodb/where.js +181 -0
- package/dist/nosql/nats/index.d.ts +139 -0
- package/dist/nosql/nedb/index.d.ts +79 -0
- package/dist/nosql/neo4j/index.d.ts +217 -0
- package/dist/nosql/neo4j/index.js +26 -14
- package/dist/nosql/neptune/index.d.ts +234 -0
- package/dist/nosql/neptune/index.js +23 -9
- package/dist/nosql/nsq/index.d.ts +93 -0
- package/dist/nosql/opensearch/index.d.ts +97 -0
- package/dist/nosql/orientdb/index.d.ts +72 -0
- package/dist/nosql/papertrail/index.d.ts +120 -0
- package/dist/nosql/pinecone/index.d.ts +148 -0
- package/dist/nosql/pinot/index.d.ts +90 -0
- package/dist/nosql/pouchdb/index.d.ts +95 -0
- package/dist/nosql/prometheus/index.d.ts +112 -0
- package/dist/nosql/provendb/index.d.ts +143 -0
- package/dist/nosql/provendb/index.js +262 -0
- package/dist/nosql/pubsub/index.d.ts +83 -0
- package/dist/nosql/pulsar/index.d.ts +105 -0
- package/dist/nosql/qdrant/index.d.ts +231 -0
- package/dist/nosql/qldb/index.d.ts +182 -0
- package/dist/nosql/qldb/index.js +302 -1
- package/dist/nosql/r2/index.d.ts +160 -0
- package/dist/nosql/rabbitmq/index.d.ts +131 -0
- package/dist/nosql/ravendb/index.d.ts +138 -0
- package/dist/nosql/ravendb/index.js +323 -9
- package/dist/nosql/ravendb/where.d.ts +38 -0
- package/dist/nosql/ravendb/where.js +94 -0
- package/dist/nosql/redis/index.d.ts +267 -0
- package/dist/nosql/redis/index.js +19 -5
- package/dist/nosql/redpanda/index.d.ts +117 -0
- package/dist/nosql/resque/index.d.ts +91 -0
- package/dist/nosql/rethinkdb/index.d.ts +194 -0
- package/dist/nosql/rethinkdb/index.js +290 -0
- package/dist/nosql/rethinkdb/where.d.ts +38 -0
- package/dist/nosql/rethinkdb/where.js +94 -0
- package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
- package/dist/nosql/rocksdb/document-layer.js +338 -0
- package/dist/nosql/rocksdb/index.d.ts +112 -0
- package/dist/nosql/rocksdb/index.js +103 -1
- package/dist/nosql/rocksdb/where-match.d.ts +21 -0
- package/dist/nosql/rocksdb/where-match.js +238 -0
- package/dist/nosql/rockset/index.d.ts +84 -0
- package/dist/nosql/s3/index.d.ts +170 -0
- package/dist/nosql/scylladb/index.d.ts +117 -0
- package/dist/nosql/signoz/index.d.ts +116 -0
- package/dist/nosql/sns/index.d.ts +99 -0
- package/dist/nosql/solr/index.d.ts +129 -0
- package/dist/nosql/splunk/index.d.ts +125 -0
- package/dist/nosql/sqs/index.d.ts +116 -0
- package/dist/nosql/stardog/index.d.ts +86 -0
- package/dist/nosql/starrocks/index.d.ts +89 -0
- package/dist/nosql/store.d.ts +23 -0
- package/dist/nosql/sumologic/index.d.ts +119 -0
- package/dist/nosql/surrealdb/index.d.ts +156 -0
- package/dist/nosql/surrealdb/index.js +174 -1
- package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
- package/dist/nosql/surrealdb/query-compiler.js +193 -0
- package/dist/nosql/terminusdb/index.d.ts +95 -0
- package/dist/nosql/tigergraph/index.d.ts +314 -0
- package/dist/nosql/typesense/index.d.ts +82 -0
- package/dist/nosql/unqlite/index.d.ts +68 -0
- package/dist/nosql/upstash/index.d.ts +80 -0
- package/dist/nosql/vercel-kv/index.d.ts +82 -0
- package/dist/nosql/victoriametrics/index.d.ts +129 -0
- package/dist/nosql/virtuoso/index.d.ts +87 -0
- package/dist/nosql/weaviate/index.d.ts +196 -0
- package/dist/operators/index.d.ts +7 -0
- package/dist/operators.d.ts +2947 -0
- package/dist/operators.js +46 -1
- package/dist/prisma-migrate/index.d.ts +28 -0
- package/dist/prisma-migrate/migration-generator.d.ts +21 -0
- package/dist/prisma-migrate/model-generator.d.ts +12 -0
- package/dist/prisma-migrate/relations.d.ts +28 -0
- package/dist/prisma-migrate/schema-parser.d.ts +42 -0
- package/dist/prisma-migrate/type-mapper.d.ts +20 -0
- package/dist/prorm.d.ts +2093 -0
- package/dist/prorm.js +721 -302
- package/dist/query-builders/cte-builder.d.ts +104 -0
- package/dist/query-builders/functions/aggregate.d.ts +199 -0
- package/dist/query-builders/functions/conditional.d.ts +195 -0
- package/dist/query-builders/functions/datetime.d.ts +202 -0
- package/dist/query-builders/functions/fulltext.d.ts +220 -0
- package/dist/query-builders/functions/index.d.ts +17 -0
- package/dist/query-builders/functions/json.d.ts +157 -0
- package/dist/query-builders/functions/math.d.ts +215 -0
- package/dist/query-builders/functions/string.d.ts +233 -0
- package/dist/query-builders/functions/window.d.ts +209 -0
- package/dist/query-builders/include-builder.d.ts +85 -0
- package/dist/query-builders/index-expression-builder.d.ts +153 -0
- package/dist/query-builders/index.d.ts +121 -0
- package/dist/query-builders/index.js +10 -0
- package/dist/query-builders/insert-builder.d.ts +62 -0
- package/dist/query-builders/model-helpers.d.ts +28 -0
- package/dist/query-builders/order-limit-builder.d.ts +84 -0
- package/dist/query-builders/sql-compiler.d.ts +562 -0
- package/dist/query-builders/subquery-builder.d.ts +133 -0
- package/dist/query-builders/update-builder.d.ts +71 -0
- package/dist/query-builders/view-builder.d.ts +189 -0
- package/dist/query-builders/where-builder.d.ts +124 -0
- package/dist/query-interface.d.ts +407 -0
- package/dist/query-interface.js +84 -0
- package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
- package/dist/query-optimizers/explain-plans.d.ts +187 -0
- package/dist/query-optimizers/index.d.ts +27 -0
- package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
- package/dist/query-optimizers/query-hints.d.ts +201 -0
- package/dist/query-optimizers/query-optimizer.d.ts +162 -0
- package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
- package/dist/replica-manager.d.ts +235 -0
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/migration-generator.d.ts +74 -0
- package/dist/schema/schema-differ.d.ts +114 -0
- package/dist/schema/types.d.ts +246 -0
- package/dist/schema-objects.d.ts +78 -0
- package/dist/schema-objects.js +203 -0
- package/dist/sql-constants.d.ts +240 -0
- package/dist/sqlite-advanced.d.ts +572 -0
- package/dist/streams/index.d.ts +5 -0
- package/dist/streams/transforms.d.ts +120 -0
- package/dist/transaction.d.ts +221 -0
- package/dist/types/index.d.ts +3123 -0
- package/dist/user-management.d.ts +141 -0
- package/dist/utils/date.d.ts +149 -0
- package/dist/utils/index.d.ts +359 -0
- package/dist/utils/string.d.ts +88 -0
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/validator.d.ts +306 -0
- package/package.json +20 -5
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Decorators for TypeScript
|
|
3
|
+
*
|
|
4
|
+
* Provides decorators for defining models:
|
|
5
|
+
* - @Table - Configure table options
|
|
6
|
+
* - @Attribute - Define a column attribute
|
|
7
|
+
* - @PrimaryKey - Mark as primary key
|
|
8
|
+
* - @AutoIncrement - Enable auto-increment
|
|
9
|
+
* - @NotNull - Add NOT NULL constraint
|
|
10
|
+
* - @Default - Set default value
|
|
11
|
+
* - @Unique - Add UNIQUE constraint
|
|
12
|
+
* - @Comment - Add column comment
|
|
13
|
+
*/
|
|
14
|
+
import type { IndexOptions } from '../dialects/dialect';
|
|
15
|
+
/**
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { Model, DataTypes, InferAttributes, InferCreationAttributes } from 'orm';
|
|
19
|
+
* import { Table, Attribute, PrimaryKey, AutoIncrement, NotNull, Default } from 'orm/decorators';
|
|
20
|
+
*
|
|
21
|
+
* @Table({ tableName: 'users', timestamps: true })
|
|
22
|
+
* export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
|
|
23
|
+
* @Attribute(DataTypes.INTEGER)
|
|
24
|
+
* @PrimaryKey
|
|
25
|
+
* @AutoIncrement
|
|
26
|
+
* declare id: number;
|
|
27
|
+
*
|
|
28
|
+
* @Attribute(DataTypes.STRING)
|
|
29
|
+
* @NotNull
|
|
30
|
+
* declare name: string;
|
|
31
|
+
*
|
|
32
|
+
* @Attribute(DataTypes.DATE)
|
|
33
|
+
* @Default(DataTypes.NOW)
|
|
34
|
+
* declare createdAt: Date;
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import { DataType } from './data-types';
|
|
39
|
+
interface ModelMetadata {
|
|
40
|
+
tableName?: string;
|
|
41
|
+
schema?: string;
|
|
42
|
+
schemaDelimiter?: string;
|
|
43
|
+
modelName?: string;
|
|
44
|
+
timestamps?: boolean;
|
|
45
|
+
createdAt?: string | false;
|
|
46
|
+
updatedAt?: string | false;
|
|
47
|
+
deletedAt?: string | false;
|
|
48
|
+
underscored?: boolean;
|
|
49
|
+
freezeTableName?: boolean;
|
|
50
|
+
hooks?: Record<string, any> | boolean;
|
|
51
|
+
indexes?: any[];
|
|
52
|
+
comment?: string;
|
|
53
|
+
collate?: string;
|
|
54
|
+
primaryKey?: boolean;
|
|
55
|
+
paranoid?: boolean;
|
|
56
|
+
defaultScope?: Record<string, any>;
|
|
57
|
+
scopes?: Record<string, any>;
|
|
58
|
+
validate?: Record<string, any>;
|
|
59
|
+
name?: {
|
|
60
|
+
singular?: string;
|
|
61
|
+
plural?: string;
|
|
62
|
+
};
|
|
63
|
+
getterMethods?: Record<string, any>;
|
|
64
|
+
setterMethods?: Record<string, any>;
|
|
65
|
+
version?: boolean | string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Metadata captured for an @HasOne / @HasMany / @BelongsTo / @BelongsToMany
|
|
69
|
+
* decorator, in the same spirit as AttributeMetadata above.
|
|
70
|
+
*/
|
|
71
|
+
export interface AssociationMetadata {
|
|
72
|
+
/** Association kind */
|
|
73
|
+
type: 'hasOne' | 'hasMany' | 'belongsTo' | 'belongsToMany';
|
|
74
|
+
/** Property the decorator was applied to (e.g. 'profile', 'posts') */
|
|
75
|
+
propertyKey: string;
|
|
76
|
+
/** Lazily-resolved target model class (avoids circular import ordering issues) */
|
|
77
|
+
target: () => any;
|
|
78
|
+
/** Alias for the association (defaults to the property name) */
|
|
79
|
+
as: string;
|
|
80
|
+
/** Foreign key column name */
|
|
81
|
+
foreignKey?: string;
|
|
82
|
+
/** Source-side key (used by hasOne/hasMany) */
|
|
83
|
+
sourceKey?: string;
|
|
84
|
+
/** Target-side key (used by belongsTo) */
|
|
85
|
+
targetKey?: string;
|
|
86
|
+
/** Other key on the join table (used by belongsToMany) */
|
|
87
|
+
otherKey?: string;
|
|
88
|
+
/** Through model/table for belongsToMany */
|
|
89
|
+
through?: any;
|
|
90
|
+
onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
91
|
+
onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
92
|
+
hooks?: boolean;
|
|
93
|
+
}
|
|
94
|
+
interface AttributeMetadata {
|
|
95
|
+
fieldName?: string;
|
|
96
|
+
type: DataType | string;
|
|
97
|
+
allowNull?: boolean;
|
|
98
|
+
defaultValue?: any;
|
|
99
|
+
primaryKey?: boolean;
|
|
100
|
+
autoIncrement?: boolean;
|
|
101
|
+
unique?: boolean | string;
|
|
102
|
+
notNull?: boolean;
|
|
103
|
+
comment?: string;
|
|
104
|
+
references?: string;
|
|
105
|
+
referencesKey?: string;
|
|
106
|
+
validate?: Record<string, any>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Define model options (use on model class)
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* @Table({ tableName: 'users', timestamps: true })
|
|
113
|
+
*/
|
|
114
|
+
export declare function Table(options?: TableOptions): ClassDecorator;
|
|
115
|
+
/**
|
|
116
|
+
* Table options interface
|
|
117
|
+
*/
|
|
118
|
+
export interface TableOptions {
|
|
119
|
+
/** Table name (defaults to model name) */
|
|
120
|
+
tableName?: string;
|
|
121
|
+
/** Schema name */
|
|
122
|
+
schema?: string;
|
|
123
|
+
/** Schema delimiter */
|
|
124
|
+
schemaDelimiter?: string;
|
|
125
|
+
/** Model name override */
|
|
126
|
+
modelName?: string;
|
|
127
|
+
/** Enable timestamps (default: true) */
|
|
128
|
+
timestamps?: boolean;
|
|
129
|
+
/** CreatedAt column name (default: 'createdAt') */
|
|
130
|
+
createdAt?: string | false;
|
|
131
|
+
/** UpdatedAt column name (default: 'updatedAt') */
|
|
132
|
+
updatedAt?: string | false;
|
|
133
|
+
/** DeletedAt column name for paranoid deletes */
|
|
134
|
+
deletedAt?: string | false;
|
|
135
|
+
/** Use underscored column names */
|
|
136
|
+
underscored?: boolean;
|
|
137
|
+
/** Don't pluralize table name */
|
|
138
|
+
freezeTableName?: boolean;
|
|
139
|
+
/** Lifecycle hooks (e.g. beforeCreate, afterCreate) */
|
|
140
|
+
hooks?: Record<string, (...args: any[]) => any> | boolean;
|
|
141
|
+
/** Indexes */
|
|
142
|
+
indexes?: IndexOptions[];
|
|
143
|
+
/** Table comment */
|
|
144
|
+
comment?: string;
|
|
145
|
+
/** Collation (MySQL) */
|
|
146
|
+
collate?: string;
|
|
147
|
+
/** Custom primary key */
|
|
148
|
+
primaryKey?: boolean;
|
|
149
|
+
/** Enable soft-deletes (paranoid mode). Implied when `deletedAt` is set. */
|
|
150
|
+
paranoid?: boolean;
|
|
151
|
+
/** Default scope applied to all queries unless overridden */
|
|
152
|
+
defaultScope?: Record<string, any>;
|
|
153
|
+
/** Named scopes available via Model.scope(name) */
|
|
154
|
+
scopes?: Record<string, any>;
|
|
155
|
+
/** Model-level validation rules */
|
|
156
|
+
validate?: Record<string, any>;
|
|
157
|
+
/** Singular/plural model naming overrides */
|
|
158
|
+
name?: {
|
|
159
|
+
singular?: string;
|
|
160
|
+
plural?: string;
|
|
161
|
+
};
|
|
162
|
+
/** Virtual getter methods */
|
|
163
|
+
getterMethods?: Record<string, (...args: any[]) => any>;
|
|
164
|
+
/** Virtual setter methods */
|
|
165
|
+
setterMethods?: Record<string, (...args: any[]) => any>;
|
|
166
|
+
/** Enable optimistic locking version column */
|
|
167
|
+
version?: boolean | string;
|
|
168
|
+
}
|
|
169
|
+
export declare function Attribute(type: DataType | string): PropertyDecorator;
|
|
170
|
+
/**
|
|
171
|
+
* Column decorator - alias for Attribute
|
|
172
|
+
*/
|
|
173
|
+
export declare function Column(type: DataType | string): PropertyDecorator;
|
|
174
|
+
/**
|
|
175
|
+
* AllowNull decorator - mark attribute as nullable (default)
|
|
176
|
+
*/
|
|
177
|
+
export declare function AllowNull(allowNull?: boolean): PropertyDecorator;
|
|
178
|
+
/**
|
|
179
|
+
* Mark attribute as primary key
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* @Attribute(DataTypes.INTEGER)
|
|
183
|
+
* @PrimaryKey
|
|
184
|
+
*/
|
|
185
|
+
export declare function PrimaryKey(): PropertyDecorator;
|
|
186
|
+
/**
|
|
187
|
+
* Enable auto-increment on attribute
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* @Attribute(DataTypes.INTEGER)
|
|
191
|
+
* @AutoIncrement
|
|
192
|
+
*/
|
|
193
|
+
export declare function AutoIncrement(): PropertyDecorator;
|
|
194
|
+
/**
|
|
195
|
+
* Add NOT NULL constraint
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* @Attribute(DataTypes.STRING)
|
|
199
|
+
* @NotNull
|
|
200
|
+
*/
|
|
201
|
+
export declare function NotNull(): PropertyDecorator;
|
|
202
|
+
/**
|
|
203
|
+
* Set default value
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* @Default('value')
|
|
207
|
+
* @Default(DataTypes.NOW)
|
|
208
|
+
* @Default(() => Math.random())
|
|
209
|
+
*/
|
|
210
|
+
export declare function Default(value: any): PropertyDecorator;
|
|
211
|
+
/**
|
|
212
|
+
* Add UNIQUE constraint
|
|
213
|
+
*
|
|
214
|
+
* @example
|
|
215
|
+
* @Unique
|
|
216
|
+
* @Unique('unique_name')
|
|
217
|
+
*/
|
|
218
|
+
export declare function Unique(nameOrOptions?: string | boolean): PropertyDecorator;
|
|
219
|
+
/**
|
|
220
|
+
* Add comment to column
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* @Comment('User email address')
|
|
224
|
+
*/
|
|
225
|
+
export declare function Comment(text: string): PropertyDecorator;
|
|
226
|
+
/**
|
|
227
|
+
* Define a hasOne association
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* @HasOne(() => Profile)
|
|
231
|
+
* declare profile: HasOne<Profile>;
|
|
232
|
+
*/
|
|
233
|
+
export declare function HasOne(targetFn: () => any, options?: HasOneOptions): PropertyDecorator;
|
|
234
|
+
/**
|
|
235
|
+
* Define a hasMany association
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* @HasMany(() => Post)
|
|
239
|
+
* declare posts: HasMany<Post>;
|
|
240
|
+
*/
|
|
241
|
+
export declare function HasMany(targetFn: () => any, options?: HasManyOptions): PropertyDecorator;
|
|
242
|
+
/**
|
|
243
|
+
* Define a belongsTo association
|
|
244
|
+
*
|
|
245
|
+
* @example
|
|
246
|
+
* @BelongsTo(() => User)
|
|
247
|
+
* declare user: BelongsTo<User>;
|
|
248
|
+
*/
|
|
249
|
+
export declare function BelongsTo(targetFn: () => any, options?: BelongsToOptions): PropertyDecorator;
|
|
250
|
+
/**
|
|
251
|
+
* Define a belongsToMany association
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* @BelongsToMany(() => Role, { through: UserRole })
|
|
255
|
+
* declare roles: BelongsToMany<Role>;
|
|
256
|
+
*/
|
|
257
|
+
export declare function BelongsToMany(targetFn: () => any, options: BelongsToManyOptions): PropertyDecorator;
|
|
258
|
+
export interface HasOneOptions {
|
|
259
|
+
as?: string;
|
|
260
|
+
foreignKey?: string;
|
|
261
|
+
sourceKey?: string;
|
|
262
|
+
onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
263
|
+
onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
264
|
+
hooks?: boolean;
|
|
265
|
+
}
|
|
266
|
+
export interface HasManyOptions {
|
|
267
|
+
as?: string;
|
|
268
|
+
foreignKey?: string;
|
|
269
|
+
sourceKey?: string;
|
|
270
|
+
onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
271
|
+
onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
272
|
+
hooks?: boolean;
|
|
273
|
+
}
|
|
274
|
+
export interface BelongsToOptions {
|
|
275
|
+
as?: string;
|
|
276
|
+
foreignKey?: string;
|
|
277
|
+
targetKey?: string;
|
|
278
|
+
onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
279
|
+
onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
280
|
+
hooks?: boolean;
|
|
281
|
+
}
|
|
282
|
+
export interface BelongsToManyOptions {
|
|
283
|
+
as?: string;
|
|
284
|
+
through: any;
|
|
285
|
+
foreignKey?: string;
|
|
286
|
+
otherKey?: string;
|
|
287
|
+
onDelete?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
288
|
+
onUpdate?: 'CASCADE' | 'SET NULL' | 'RESTRICT' | 'NO ACTION';
|
|
289
|
+
hooks?: boolean;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get model metadata
|
|
293
|
+
*/
|
|
294
|
+
export declare function getModelMetadata(modelName: string): ModelMetadata | undefined;
|
|
295
|
+
/**
|
|
296
|
+
* Get attribute metadata for a model
|
|
297
|
+
*/
|
|
298
|
+
export declare function getAttributeMetadata(modelName: string): Map<string, AttributeMetadata> | undefined;
|
|
299
|
+
/**
|
|
300
|
+
* Get association metadata (from @HasOne/@HasMany/@BelongsTo/@BelongsToMany)
|
|
301
|
+
* recorded for a model.
|
|
302
|
+
*/
|
|
303
|
+
export declare function getAssociationMetadata(modelName: string): AssociationMetadata[] | undefined;
|
|
304
|
+
/**
|
|
305
|
+
* Extract all attributes from a model class
|
|
306
|
+
*/
|
|
307
|
+
export declare function getModelAttributes<T = any>(model: new () => T): Record<string, AttributeMetadata>;
|
|
308
|
+
/**
|
|
309
|
+
* Clear all metadata (useful for testing)
|
|
310
|
+
*/
|
|
311
|
+
export declare function clearMetadata(): void;
|
|
312
|
+
/**
|
|
313
|
+
* Type helper for hasOne association return
|
|
314
|
+
*/
|
|
315
|
+
export type HasOne<T> = T;
|
|
316
|
+
/**
|
|
317
|
+
* Type helper for hasMany association return
|
|
318
|
+
*/
|
|
319
|
+
export type HasMany<T> = T[];
|
|
320
|
+
/**
|
|
321
|
+
* Type helper for belongsTo association return
|
|
322
|
+
*/
|
|
323
|
+
export type BelongsTo<T> = T | null;
|
|
324
|
+
/**
|
|
325
|
+
* Type helper for belongsToMany association return
|
|
326
|
+
*/
|
|
327
|
+
export type BelongsToMany<T> = T[];
|
|
328
|
+
export {};
|
|
@@ -110,20 +110,49 @@ function Table(options = {}) {
|
|
|
110
110
|
* @Attribute(DataTypes.STRING)
|
|
111
111
|
* @Attribute(DataTypes.INTEGER)
|
|
112
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Get (creating if needed) the attribute entry for a decorated property.
|
|
115
|
+
*
|
|
116
|
+
* Stacked property decorators are applied bottom-up, so a modifier such as
|
|
117
|
+
* `@PrimaryKey` frequently runs *before* the `@Column` that declares the
|
|
118
|
+
* attribute. These modifiers previously bailed out when the entry did not exist
|
|
119
|
+
* yet, and `@Column` then replaced whatever they had set - so the documented
|
|
120
|
+
* ordering
|
|
121
|
+
*
|
|
122
|
+
* @Column(DataTypes.INTEGER())
|
|
123
|
+
* @PrimaryKey()
|
|
124
|
+
* @AutoIncrement()
|
|
125
|
+
* declare id: number;
|
|
126
|
+
*
|
|
127
|
+
* produced a plain nullable INTEGER with no primary key and no auto-increment.
|
|
128
|
+
* Every decorator now goes through this helper and merges, making the stack
|
|
129
|
+
* order-independent.
|
|
130
|
+
*/
|
|
131
|
+
function ensureAttr(target, propertyKey) {
|
|
132
|
+
const modelName = target?.constructor?.name;
|
|
133
|
+
if (!modelName)
|
|
134
|
+
return undefined;
|
|
135
|
+
if (!attributeMetadata.has(modelName)) {
|
|
136
|
+
attributeMetadata.set(modelName, new Map());
|
|
137
|
+
}
|
|
138
|
+
const attrs = attributeMetadata.get(modelName);
|
|
139
|
+
const fieldName = String(propertyKey);
|
|
140
|
+
let attr = attrs.get(fieldName);
|
|
141
|
+
if (!attr) {
|
|
142
|
+
// Placeholder type; a later @Column/@Attribute overwrites just the type.
|
|
143
|
+
attr = { type: data_types_1.DataTypes.INTEGER(), allowNull: true };
|
|
144
|
+
attrs.set(fieldName, attr);
|
|
145
|
+
}
|
|
146
|
+
return attr;
|
|
147
|
+
}
|
|
113
148
|
function Attribute(type) {
|
|
114
149
|
return function (target, propertyKey) {
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
150
|
+
const attr = ensureAttr(target, propertyKey);
|
|
151
|
+
if (!attr)
|
|
117
152
|
return;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
const attrs = attributeMetadata.get(modelName);
|
|
122
|
-
const fieldName = String(propertyKey);
|
|
123
|
-
attrs.set(fieldName, {
|
|
124
|
-
type,
|
|
125
|
-
allowNull: true,
|
|
126
|
-
});
|
|
153
|
+
// Set only the type: modifiers such as @PrimaryKey / @AutoIncrement may
|
|
154
|
+
// already have run (decorators apply bottom-up) and must not be discarded.
|
|
155
|
+
attr.type = type;
|
|
127
156
|
};
|
|
128
157
|
}
|
|
129
158
|
/**
|
|
@@ -137,17 +166,9 @@ function Column(type) {
|
|
|
137
166
|
*/
|
|
138
167
|
function AllowNull(allowNull = true) {
|
|
139
168
|
return function (target, propertyKey) {
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
142
|
-
|
|
143
|
-
const attrs = attributeMetadata.get(modelName);
|
|
144
|
-
if (attrs) {
|
|
145
|
-
const fieldName = String(propertyKey);
|
|
146
|
-
const attr = attrs.get(fieldName);
|
|
147
|
-
if (attr) {
|
|
148
|
-
attr.allowNull = allowNull;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
169
|
+
const attr = ensureAttr(target, propertyKey);
|
|
170
|
+
if (attr)
|
|
171
|
+
attr.allowNull = allowNull;
|
|
151
172
|
};
|
|
152
173
|
}
|
|
153
174
|
/**
|
|
@@ -159,17 +180,8 @@ function AllowNull(allowNull = true) {
|
|
|
159
180
|
*/
|
|
160
181
|
function PrimaryKey() {
|
|
161
182
|
return function (target, propertyKey) {
|
|
162
|
-
const
|
|
163
|
-
if (
|
|
164
|
-
return;
|
|
165
|
-
const attrs = attributeMetadata.get(modelName);
|
|
166
|
-
if (attrs) {
|
|
167
|
-
const fieldName = String(propertyKey);
|
|
168
|
-
let attr = attrs.get(fieldName);
|
|
169
|
-
if (!attr) {
|
|
170
|
-
attr = { type: data_types_1.DataTypes.INTEGER() };
|
|
171
|
-
attrs.set(fieldName, attr);
|
|
172
|
-
}
|
|
183
|
+
const attr = ensureAttr(target, propertyKey);
|
|
184
|
+
if (attr) {
|
|
173
185
|
attr.primaryKey = true;
|
|
174
186
|
attr.allowNull = false;
|
|
175
187
|
}
|
|
@@ -184,17 +196,9 @@ function PrimaryKey() {
|
|
|
184
196
|
*/
|
|
185
197
|
function AutoIncrement() {
|
|
186
198
|
return function (target, propertyKey) {
|
|
187
|
-
const
|
|
188
|
-
if (
|
|
189
|
-
|
|
190
|
-
const attrs = attributeMetadata.get(modelName);
|
|
191
|
-
if (attrs) {
|
|
192
|
-
const fieldName = String(propertyKey);
|
|
193
|
-
const attr = attrs.get(fieldName);
|
|
194
|
-
if (attr) {
|
|
195
|
-
attr.autoIncrement = true;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
199
|
+
const attr = ensureAttr(target, propertyKey);
|
|
200
|
+
if (attr)
|
|
201
|
+
attr.autoIncrement = true;
|
|
198
202
|
};
|
|
199
203
|
}
|
|
200
204
|
/**
|
|
@@ -209,14 +213,10 @@ function NotNull() {
|
|
|
209
213
|
const modelName = target.constructor?.name;
|
|
210
214
|
if (!modelName)
|
|
211
215
|
return;
|
|
212
|
-
const
|
|
213
|
-
if (
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (attr) {
|
|
217
|
-
attr.notNull = true;
|
|
218
|
-
attr.allowNull = false;
|
|
219
|
-
}
|
|
216
|
+
const attr = ensureAttr(target, propertyKey);
|
|
217
|
+
if (attr) {
|
|
218
|
+
attr.notNull = true;
|
|
219
|
+
attr.allowNull = false;
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
222
|
}
|
|
@@ -230,16 +230,9 @@ function NotNull() {
|
|
|
230
230
|
*/
|
|
231
231
|
function Default(value) {
|
|
232
232
|
return function (target, propertyKey) {
|
|
233
|
-
const
|
|
234
|
-
if (
|
|
235
|
-
|
|
236
|
-
const attrs = attributeMetadata.get(modelName);
|
|
237
|
-
if (attrs) {
|
|
238
|
-
const fieldName = String(propertyKey);
|
|
239
|
-
const attr = attrs.get(fieldName);
|
|
240
|
-
if (attr) {
|
|
241
|
-
attr.defaultValue = value;
|
|
242
|
-
}
|
|
233
|
+
const attr = ensureAttr(target, propertyKey);
|
|
234
|
+
if (attr) {
|
|
235
|
+
attr.defaultValue = value;
|
|
243
236
|
}
|
|
244
237
|
};
|
|
245
238
|
}
|
|
@@ -252,16 +245,9 @@ function Default(value) {
|
|
|
252
245
|
*/
|
|
253
246
|
function Unique(nameOrOptions) {
|
|
254
247
|
return function (target, propertyKey) {
|
|
255
|
-
const
|
|
256
|
-
if (
|
|
257
|
-
|
|
258
|
-
const attrs = attributeMetadata.get(modelName);
|
|
259
|
-
if (attrs) {
|
|
260
|
-
const fieldName = String(propertyKey);
|
|
261
|
-
const attr = attrs.get(fieldName);
|
|
262
|
-
if (attr) {
|
|
263
|
-
attr.unique = typeof nameOrOptions === 'string' ? nameOrOptions : true;
|
|
264
|
-
}
|
|
248
|
+
const attr = ensureAttr(target, propertyKey);
|
|
249
|
+
if (attr) {
|
|
250
|
+
attr.unique = typeof nameOrOptions === 'string' ? nameOrOptions : true;
|
|
265
251
|
}
|
|
266
252
|
};
|
|
267
253
|
}
|
|
@@ -273,16 +259,9 @@ function Unique(nameOrOptions) {
|
|
|
273
259
|
*/
|
|
274
260
|
function Comment(text) {
|
|
275
261
|
return function (target, propertyKey) {
|
|
276
|
-
const
|
|
277
|
-
if (
|
|
278
|
-
|
|
279
|
-
const attrs = attributeMetadata.get(modelName);
|
|
280
|
-
if (attrs) {
|
|
281
|
-
const fieldName = String(propertyKey);
|
|
282
|
-
const attr = attrs.get(fieldName);
|
|
283
|
-
if (attr) {
|
|
284
|
-
attr.comment = text;
|
|
285
|
-
}
|
|
262
|
+
const attr = ensureAttr(target, propertyKey);
|
|
263
|
+
if (attr) {
|
|
264
|
+
attr.comment = text;
|
|
286
265
|
}
|
|
287
266
|
};
|
|
288
267
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared eager-loading (`include`) implementation.
|
|
3
|
+
*
|
|
4
|
+
* There used to be two separate implementations of this: one inside
|
|
5
|
+
* `Prorm.define()`'s `findAll` closure (used by models created with
|
|
6
|
+
* `prorm.define(...)`) and one in `models/model.ts` (`processNestedIncludes`,
|
|
7
|
+
* used by the class-based `Model` API). Both were live, and they had drifted:
|
|
8
|
+
* the model.ts copy treated `belongsTo` exactly like `hasMany` - querying the
|
|
9
|
+
* target table for a foreign key that actually lives on the parent - and
|
|
10
|
+
* skipped `belongsToMany` entirely with a bare `continue`. Which of the two
|
|
11
|
+
* bugs you hit depended on which API you had used to define the model.
|
|
12
|
+
*
|
|
13
|
+
* Both paths now call `loadIncludes()` below.
|
|
14
|
+
*/
|
|
15
|
+
/** Minimal view of the association records kept in `Prorm.associations`. */
|
|
16
|
+
export interface EagerLoadAssociation {
|
|
17
|
+
type: 'belongsTo' | 'hasOne' | 'hasMany' | 'belongsToMany';
|
|
18
|
+
source: any;
|
|
19
|
+
target: any;
|
|
20
|
+
foreignKey: string | string[];
|
|
21
|
+
as?: string;
|
|
22
|
+
otherKey?: string;
|
|
23
|
+
through?: string;
|
|
24
|
+
throughModel?: any;
|
|
25
|
+
options?: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
/** What the loader needs from the owning Prorm instance. */
|
|
28
|
+
export interface EagerLoadContext {
|
|
29
|
+
/**
|
|
30
|
+
* All registered associations, in declaration order.
|
|
31
|
+
*
|
|
32
|
+
* Must be an array, not a Map iterator: this is rescanned once per include
|
|
33
|
+
* and again for every nested level, and a single-use iterator would come
|
|
34
|
+
* back empty after the first scan.
|
|
35
|
+
*/
|
|
36
|
+
associations: readonly EagerLoadAssociation[];
|
|
37
|
+
/** Registered models by name, for resolving a `through` given as a string. */
|
|
38
|
+
models: Record<string, any> | Map<string, any>;
|
|
39
|
+
}
|
|
40
|
+
/** Resolve a model's primary key attribute name, defaulting to `id`. */
|
|
41
|
+
export declare function resolvePrimaryKeyAttr(m: any): string;
|
|
42
|
+
/**
|
|
43
|
+
* Find the association backing one `include` entry.
|
|
44
|
+
*
|
|
45
|
+
* Matching is deliberately strict about aliases. The previous implementation
|
|
46
|
+
* scanned for any association linking the two models and took the first hit,
|
|
47
|
+
* with a second pass that also matched the *reverse* direction - so with both
|
|
48
|
+
* `Post.belongsTo(User, { as: 'author' })` and
|
|
49
|
+
* `Post.belongsTo(User, { as: 'editor' })` declared, an unaliased
|
|
50
|
+
* `include: [User]` silently bound to whichever was registered first, and could
|
|
51
|
+
* bind to an association pointing the other way and then apply the wrong
|
|
52
|
+
* foreign-key logic to it.
|
|
53
|
+
*/
|
|
54
|
+
export declare function resolveIncludeAssociation(ctx: EagerLoadContext, parentModel: any, parentModelName: string, includeOpt: any): EagerLoadAssociation;
|
|
55
|
+
/**
|
|
56
|
+
* An include filters its parents when it is `required`, and `required` defaults
|
|
57
|
+
* to true whenever the include carries its own `where` - the same rule Sequelize
|
|
58
|
+
* uses, and the one the docs describe as INNER JOIN semantics.
|
|
59
|
+
*/
|
|
60
|
+
export declare function includeFiltersParents(includeOpt: any): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Collect the parent-key values that satisfy a filtering (`required`) include.
|
|
63
|
+
*
|
|
64
|
+
* This is what gives `required: true` and `include.where` their INNER JOIN
|
|
65
|
+
* *semantics*: the set of parent keys with a matching child is resolved first,
|
|
66
|
+
* and the caller adds it to the main query's WHERE so that LIMIT/OFFSET apply
|
|
67
|
+
* after filtering rather than before. `include` still does not emit a single
|
|
68
|
+
* JOINed SELECT - associations are fetched with their own queries - but the
|
|
69
|
+
* rows a filtering include selects are now correct.
|
|
70
|
+
*
|
|
71
|
+
* Returns the list of matching parent key values, plus the parent attribute
|
|
72
|
+
* those values should be compared against.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveRequiredIncludeFilter(ctx: EagerLoadContext, parentModel: any, parentModelName: string, rawIncludeOpt: any): Promise<{
|
|
75
|
+
parentAttr: string;
|
|
76
|
+
values: any[];
|
|
77
|
+
} | null>;
|
|
78
|
+
/**
|
|
79
|
+
* Eager-load `includeList` onto `parentRows`, recursing into nested includes.
|
|
80
|
+
*
|
|
81
|
+
* Failures are raised as `EagerLoadError` rather than swallowed. They used to be
|
|
82
|
+
* caught and reported as an empty result, which made a typo'd alias, a missing
|
|
83
|
+
* foreign key column, an unresolvable through model and a genuinely childless
|
|
84
|
+
* parent all look identical - and hid most of the bugs this module now fixes.
|
|
85
|
+
*/
|
|
86
|
+
export declare function loadIncludes(ctx: EagerLoadContext, parentRows: any[], parentModel: any, parentModelName: string, includeList: any[]): Promise<void>;
|