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,539 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BaseGraphDialect — shared implementation of the SQL-shaped `Dialect`
|
|
4
|
+
* contract for graph/object databases.
|
|
5
|
+
*
|
|
6
|
+
* The ORM's `Model` layer talks to every backend through the `Dialect`
|
|
7
|
+
* interface (connect/query/transaction + `build*Query` codegen + DDL). This
|
|
8
|
+
* class implements that whole surface **once** for graph stores, translating:
|
|
9
|
+
*
|
|
10
|
+
* - a table -> a node label (vertex type)
|
|
11
|
+
* - a row -> a node
|
|
12
|
+
* - an INSERT -> CREATE node
|
|
13
|
+
* - a SELECT -> MATCH node (+ traversals for `include`)
|
|
14
|
+
* - a WHERE -> a graph predicate (via {@link normalizeWhere})
|
|
15
|
+
* - an association -> a graph edge/relationship
|
|
16
|
+
* - an `include` -> a graph walk over that edge
|
|
17
|
+
* - "DDL" -> node-label / edge-type / index / constraint mgmt
|
|
18
|
+
*
|
|
19
|
+
* Each concrete dialect (Neo4j / Gremlin / Dgraph) only implements the
|
|
20
|
+
* connection lifecycle and a small set of language-specific `compile*`
|
|
21
|
+
* codegen primitives; everything else is centralized here. Genuinely
|
|
22
|
+
* relational-only features (partitions, materialized views, RLS, stored
|
|
23
|
+
* procedures, foreign-data wrappers, arbitrary SQL joins) throw a typed
|
|
24
|
+
* {@link GraphCapabilityError} rather than silently doing the wrong thing.
|
|
25
|
+
*/
|
|
26
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
27
|
+
exports.BaseGraphDialect = void 0;
|
|
28
|
+
const stream_1 = require("stream");
|
|
29
|
+
const dialect_1 = require("../dialects/dialect");
|
|
30
|
+
const types_1 = require("./types");
|
|
31
|
+
class BaseGraphDialect extends dialect_1.BaseDialect {
|
|
32
|
+
constructor(options = {}) {
|
|
33
|
+
super();
|
|
34
|
+
/** In-memory registry of node/edge models defined through the builder. */
|
|
35
|
+
this.nodeModels = new Map();
|
|
36
|
+
this.edgeModels = new Map();
|
|
37
|
+
this.options = options;
|
|
38
|
+
}
|
|
39
|
+
// =====================================================================
|
|
40
|
+
// Connection / util
|
|
41
|
+
// =====================================================================
|
|
42
|
+
getConnection() {
|
|
43
|
+
return this._connection;
|
|
44
|
+
}
|
|
45
|
+
isConnected() {
|
|
46
|
+
return this._connected;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Object-mode streaming: runs the query and pushes one row (or mapped
|
|
50
|
+
* model instance) per chunk. Graph drivers don't share a common cursor
|
|
51
|
+
* API, so this buffers the driver result and re-emits it — correct and
|
|
52
|
+
* dialect-agnostic, matching the `Model.findAllStream()` contract.
|
|
53
|
+
*/
|
|
54
|
+
queryStream(statement, options) {
|
|
55
|
+
return stream_1.Readable.from(this.streamGen(statement, options));
|
|
56
|
+
}
|
|
57
|
+
async *streamGen(statement, options) {
|
|
58
|
+
const result = await this.query(statement, options);
|
|
59
|
+
for (const row of result.rows || []) {
|
|
60
|
+
yield row;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Values are parameterized, so `escape` is only a defensive fallback. */
|
|
64
|
+
escape(value) {
|
|
65
|
+
if (value === null || value === undefined)
|
|
66
|
+
return 'null';
|
|
67
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
68
|
+
return String(value);
|
|
69
|
+
return JSON.stringify(value);
|
|
70
|
+
}
|
|
71
|
+
escapeId(identifier) {
|
|
72
|
+
return (0, types_1.safeIdent)(identifier);
|
|
73
|
+
}
|
|
74
|
+
quoteIdentifier(identifier) {
|
|
75
|
+
return (0, types_1.safeIdent)(identifier);
|
|
76
|
+
}
|
|
77
|
+
quoteTable(tableName, _schema) {
|
|
78
|
+
return (0, types_1.safeIdent)(tableName);
|
|
79
|
+
}
|
|
80
|
+
/** Coarse property-type name; graph stores are largely schemaless. */
|
|
81
|
+
getDataTypeSql(dataType) {
|
|
82
|
+
const key = String(dataType?.key ?? dataType ?? '').toUpperCase();
|
|
83
|
+
if (/INT|SERIAL|DECIMAL|NUMER|FLOAT|DOUBLE|REAL/.test(key))
|
|
84
|
+
return 'number';
|
|
85
|
+
if (/BOOL/.test(key))
|
|
86
|
+
return 'boolean';
|
|
87
|
+
if (/DATE|TIME/.test(key))
|
|
88
|
+
return 'datetime';
|
|
89
|
+
if (/JSON/.test(key))
|
|
90
|
+
return 'object';
|
|
91
|
+
return 'string';
|
|
92
|
+
}
|
|
93
|
+
/** Run a compiled statement, forwarding its params as query bindings. */
|
|
94
|
+
async run(stmt, options) {
|
|
95
|
+
return this.query(stmt.text, {
|
|
96
|
+
...options,
|
|
97
|
+
bind: { ...(options?.bind || {}), ...stmt.params },
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/** Positional param array for the SQL-shaped `{ sql, values }` contract. */
|
|
101
|
+
paramValues(stmt) {
|
|
102
|
+
return Object.values(stmt.params);
|
|
103
|
+
}
|
|
104
|
+
/** Tolerant `Order` -> `[field, dir][]` normalizer. */
|
|
105
|
+
normalizeOrder(order) {
|
|
106
|
+
if (!order)
|
|
107
|
+
return [];
|
|
108
|
+
const out = [];
|
|
109
|
+
const arr = Array.isArray(order) ? order : [order];
|
|
110
|
+
for (const item of arr) {
|
|
111
|
+
if (typeof item === 'string') {
|
|
112
|
+
out.push([item, 'ASC']);
|
|
113
|
+
}
|
|
114
|
+
else if (Array.isArray(item)) {
|
|
115
|
+
const rawField = item[0];
|
|
116
|
+
const field = String(rawField && rawField.$col ? rawField.$col : rawField);
|
|
117
|
+
const dir = String(item[1] ?? 'ASC').toUpperCase() === 'DESC' ? 'DESC' : 'ASC';
|
|
118
|
+
out.push([field, dir]);
|
|
119
|
+
}
|
|
120
|
+
else if (item && typeof item === 'object' && (item.$col || item.column)) {
|
|
121
|
+
out.push([String(item.$col || item.column), 'ASC']);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return out;
|
|
125
|
+
}
|
|
126
|
+
/** Map ORM `include` entries into graph traversal steps. */
|
|
127
|
+
mapIncludes(include) {
|
|
128
|
+
if (!include || !Array.isArray(include))
|
|
129
|
+
return [];
|
|
130
|
+
const steps = [];
|
|
131
|
+
for (const inc of include) {
|
|
132
|
+
if (!inc || typeof inc !== 'object')
|
|
133
|
+
continue;
|
|
134
|
+
const model = inc.model || inc.association?.target;
|
|
135
|
+
const edge = (0, types_1.deriveAssociationEdge)({
|
|
136
|
+
associationType: inc.association?.associationType || inc.associationType,
|
|
137
|
+
as: inc.as || model?.name || model?.tableName,
|
|
138
|
+
target: model?.name || model?.tableName || inc.as,
|
|
139
|
+
edgeLabel: inc.edgeLabel,
|
|
140
|
+
});
|
|
141
|
+
steps.push({
|
|
142
|
+
edgeLabel: edge.edgeLabel,
|
|
143
|
+
direction: edge.direction === 'in' ? 'in' : 'out',
|
|
144
|
+
targetLabel: edge.target,
|
|
145
|
+
as: edge.as,
|
|
146
|
+
where: inc.where,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
return steps;
|
|
150
|
+
}
|
|
151
|
+
// =====================================================================
|
|
152
|
+
// Query builders (Dialect interface) — delegate to compile* primitives.
|
|
153
|
+
// =====================================================================
|
|
154
|
+
buildWhereClause(where, _options) {
|
|
155
|
+
const params = new types_1.ParamBag();
|
|
156
|
+
const pred = (0, types_1.normalizeWhere)(where);
|
|
157
|
+
const sql = this.renderPredicate(pred, { nodeVar: this.defaultNodeVar, params });
|
|
158
|
+
return { sql, values: params.toArray() };
|
|
159
|
+
}
|
|
160
|
+
buildOrderClause(order, _options) {
|
|
161
|
+
return this.normalizeOrder(order)
|
|
162
|
+
.map(([field, dir]) => `${this.defaultNodeVar}.${(0, types_1.safeIdent)(field)} ${dir}`)
|
|
163
|
+
.join(', ');
|
|
164
|
+
}
|
|
165
|
+
buildLimitOffset(limit, offset) {
|
|
166
|
+
const parts = [];
|
|
167
|
+
if (offset !== undefined && offset !== null && String(offset) !== '')
|
|
168
|
+
parts.push(`SKIP ${offset}`);
|
|
169
|
+
if (limit !== undefined && limit !== null && String(limit) !== '')
|
|
170
|
+
parts.push(`LIMIT ${limit}`);
|
|
171
|
+
return parts.join(' ');
|
|
172
|
+
}
|
|
173
|
+
buildInsertQuery(tableName, values, _options) {
|
|
174
|
+
const stmt = this.compileCreateNode(tableName, values);
|
|
175
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
176
|
+
}
|
|
177
|
+
buildUpdateQuery(tableName, values, where, _options) {
|
|
178
|
+
const stmt = this.compileUpdateNodes(tableName, where, values);
|
|
179
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
180
|
+
}
|
|
181
|
+
buildDeleteQuery(tableName, where, options) {
|
|
182
|
+
// A delete on a graph node detaches its relationships too, unless the
|
|
183
|
+
// caller explicitly opts out via `truncate: false`-style semantics.
|
|
184
|
+
const detach = options?.truncate !== false;
|
|
185
|
+
const stmt = this.compileDeleteNodes(tableName, where, detach);
|
|
186
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
187
|
+
}
|
|
188
|
+
buildSelectQuery(options) {
|
|
189
|
+
const spec = {
|
|
190
|
+
label: options.tableName,
|
|
191
|
+
where: options.where,
|
|
192
|
+
attributes: options.attributes,
|
|
193
|
+
order: this.normalizeOrder(options.order),
|
|
194
|
+
limit: options.limit,
|
|
195
|
+
offset: options.offset,
|
|
196
|
+
include: this.mapIncludes(options.include),
|
|
197
|
+
distinct: options.distinct,
|
|
198
|
+
};
|
|
199
|
+
const stmt = this.compileMatch(spec);
|
|
200
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
201
|
+
}
|
|
202
|
+
buildUpsertQuery(tableName, values, options) {
|
|
203
|
+
const conflictKeys = options?.conflictFields && options.conflictFields.length
|
|
204
|
+
? options.conflictFields
|
|
205
|
+
: this.identityKeys(tableName);
|
|
206
|
+
const stmt = this.compileUpsertNode(tableName, values, conflictKeys);
|
|
207
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
208
|
+
}
|
|
209
|
+
buildIncrementQuery(tableName, fields, where, options) {
|
|
210
|
+
const stmt = this.compileIncrement(tableName, fields, where, options?.by ?? 1);
|
|
211
|
+
return { sql: stmt.text, values: this.paramValues(stmt) };
|
|
212
|
+
}
|
|
213
|
+
/** Identity property/properties for a label (defaults to `id`). */
|
|
214
|
+
identityKeys(label) {
|
|
215
|
+
const model = this.nodeModels.get(label);
|
|
216
|
+
if (model?.primaryKey)
|
|
217
|
+
return [model.primaryKey];
|
|
218
|
+
if (model?.properties) {
|
|
219
|
+
const pk = Object.entries(model.properties)
|
|
220
|
+
.filter(([, def]) => def.primaryKey)
|
|
221
|
+
.map(([name]) => name);
|
|
222
|
+
if (pk.length)
|
|
223
|
+
return pk;
|
|
224
|
+
}
|
|
225
|
+
return ['id'];
|
|
226
|
+
}
|
|
227
|
+
// =====================================================================
|
|
228
|
+
// DDL-equivalent: node labels, edges, indexes, constraints.
|
|
229
|
+
// =====================================================================
|
|
230
|
+
/**
|
|
231
|
+
* "CREATE TABLE" for a graph store = declare a node label and materialize
|
|
232
|
+
* its schema hints: unique/primary-key columns become uniqueness
|
|
233
|
+
* constraints, `references` columns become association edges, and indexed
|
|
234
|
+
* columns become property indexes. Nodes themselves stay schemaless.
|
|
235
|
+
*/
|
|
236
|
+
async createTable(tableName, columns, _options) {
|
|
237
|
+
const props = {};
|
|
238
|
+
const associations = [];
|
|
239
|
+
let primaryKey;
|
|
240
|
+
for (const [name, def] of Object.entries(columns)) {
|
|
241
|
+
props[name] = {
|
|
242
|
+
type: this.getDataTypeSql(def.type),
|
|
243
|
+
unique: def.unique === true || typeof def.unique === 'string',
|
|
244
|
+
required: def.allowNull === false,
|
|
245
|
+
primaryKey: def.primaryKey === true,
|
|
246
|
+
};
|
|
247
|
+
if (def.primaryKey)
|
|
248
|
+
primaryKey = name;
|
|
249
|
+
if (def.references) {
|
|
250
|
+
associations.push((0, types_1.deriveAssociationEdge)({
|
|
251
|
+
type: 'belongsTo',
|
|
252
|
+
as: name.replace(/_?id$/i, '') || name,
|
|
253
|
+
target: def.references.table,
|
|
254
|
+
}));
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
this.nodeModels.set(tableName, { label: tableName, properties: props, primaryKey, associations });
|
|
258
|
+
if (this.isConnected()) {
|
|
259
|
+
for (const [name, def] of Object.entries(columns)) {
|
|
260
|
+
if (def.primaryKey) {
|
|
261
|
+
await this.run(this.compileCreateConstraint(tableName, [name], 'key'));
|
|
262
|
+
}
|
|
263
|
+
else if (def.unique) {
|
|
264
|
+
await this.run(this.compileCreateConstraint(tableName, [name], 'unique'));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async dropTable(tableName, _options) {
|
|
270
|
+
this.nodeModels.delete(tableName);
|
|
271
|
+
if (this.isConnected()) {
|
|
272
|
+
await this.run(this.compileDeleteNodes(tableName, undefined, true));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async addIndex(tableName, indexName, fields, _options) {
|
|
276
|
+
await this.run(this.compileCreateIndex(tableName, fields, indexName));
|
|
277
|
+
}
|
|
278
|
+
async createIndex(tableName, indexDef) {
|
|
279
|
+
await this.run(this.compileCreateIndex(tableName, indexDef.fields, indexDef.name));
|
|
280
|
+
}
|
|
281
|
+
async removeIndex(tableName, indexName) {
|
|
282
|
+
await this.run(this.compileDropIndex(tableName, indexName));
|
|
283
|
+
}
|
|
284
|
+
async dropIndex(tableName, indexName, _options) {
|
|
285
|
+
await this.run(this.compileDropIndex(tableName, indexName));
|
|
286
|
+
}
|
|
287
|
+
async createConstraint(tableName, constraintDef) {
|
|
288
|
+
const kind = constraintDef.type === 'PRIMARY KEY' ? 'key' : constraintDef.type === 'UNIQUE' ? 'unique' : 'exists';
|
|
289
|
+
await this.run(this.compileCreateConstraint(tableName, constraintDef.fields || [], kind, constraintDef.name));
|
|
290
|
+
}
|
|
291
|
+
async dropConstraint(tableName, constraintName, _options) {
|
|
292
|
+
await this.run(this.compileDropConstraint(tableName, constraintName));
|
|
293
|
+
}
|
|
294
|
+
async addConstraint(tableName, options) {
|
|
295
|
+
if (options.type === 'FOREIGN KEY' || options.type === 'CHECK') {
|
|
296
|
+
// Foreign keys are modelled as edges, not constraints; CHECK has no
|
|
297
|
+
// graph equivalent. Both are no-ops here rather than hard failures.
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
const kind = options.type === 'PRIMARY KEY' ? 'key' : 'unique';
|
|
301
|
+
await this.run(this.compileCreateConstraint(tableName, options.fields, kind, options.name));
|
|
302
|
+
}
|
|
303
|
+
async removeConstraint(tableName, constraintName) {
|
|
304
|
+
await this.run(this.compileDropConstraint(tableName, constraintName));
|
|
305
|
+
}
|
|
306
|
+
async showTables() {
|
|
307
|
+
const result = await this.run(this.compileShowLabels());
|
|
308
|
+
return (result.rows || [])
|
|
309
|
+
.map((r) => (typeof r === 'string' ? r : (r?.label ?? r?.name ?? Object.values(r || {})[0])))
|
|
310
|
+
.filter((v) => typeof v === 'string');
|
|
311
|
+
}
|
|
312
|
+
async showViews() {
|
|
313
|
+
return [];
|
|
314
|
+
}
|
|
315
|
+
async showMaterializedViews() {
|
|
316
|
+
return [];
|
|
317
|
+
}
|
|
318
|
+
async showConstraints(_tableName) {
|
|
319
|
+
return [];
|
|
320
|
+
}
|
|
321
|
+
async showIndexes(_tableName) {
|
|
322
|
+
return [];
|
|
323
|
+
}
|
|
324
|
+
async describeTable(_tableName) {
|
|
325
|
+
// Graph nodes are schemaless; describe from the registered model if any.
|
|
326
|
+
const model = this.nodeModels.get(_tableName);
|
|
327
|
+
const desc = {};
|
|
328
|
+
if (model?.properties) {
|
|
329
|
+
for (const [name, def] of Object.entries(model.properties)) {
|
|
330
|
+
desc[name] = {
|
|
331
|
+
type: def.type || 'string',
|
|
332
|
+
allowNull: !def.required,
|
|
333
|
+
defaultValue: null,
|
|
334
|
+
primaryKey: !!def.primaryKey,
|
|
335
|
+
autoIncrement: false,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return desc;
|
|
340
|
+
}
|
|
341
|
+
// Schema/namespace: graph stores use a single database/namespace. These are
|
|
342
|
+
// no-ops (or single-entry) rather than emulated SQL schemas.
|
|
343
|
+
async createSchema(_schema) {
|
|
344
|
+
/* no-op: graph stores have no sub-schemas */
|
|
345
|
+
}
|
|
346
|
+
async dropSchema(_schema, _options) {
|
|
347
|
+
/* no-op */
|
|
348
|
+
}
|
|
349
|
+
async showAllSchemas() {
|
|
350
|
+
return this.options.database ? [this.options.database] : [];
|
|
351
|
+
}
|
|
352
|
+
// Schemaless: adding/removing/changing a property is a per-node write, so
|
|
353
|
+
// there's no label-level column DDL to run here.
|
|
354
|
+
async addColumn(_tableName, _columnName, _definition) {
|
|
355
|
+
/* no-op: node properties are dynamic */
|
|
356
|
+
}
|
|
357
|
+
async removeColumn(tableName, columnName) {
|
|
358
|
+
// Emulate DROP COLUMN by removing the property from every node.
|
|
359
|
+
if (this.isConnected()) {
|
|
360
|
+
await this.run(this.compileUpdateNodes(tableName, undefined, { [columnName]: undefined }));
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
async changeColumn(_tableName, _columnName, _definition) {
|
|
364
|
+
/* no-op: node properties are dynamic and untyped */
|
|
365
|
+
}
|
|
366
|
+
async commentTable(_tableName, _comment) {
|
|
367
|
+
/* no-op: comments have no graph equivalent */
|
|
368
|
+
}
|
|
369
|
+
async commentColumn(_tableName, _columnName, _comment) {
|
|
370
|
+
/* no-op */
|
|
371
|
+
}
|
|
372
|
+
// =====================================================================
|
|
373
|
+
// Graph-native builder API (association -> edge, traversal, CRUD).
|
|
374
|
+
// =====================================================================
|
|
375
|
+
/** Register a node model (label + property schema + associations). */
|
|
376
|
+
defineNode(def) {
|
|
377
|
+
this.nodeModels.set(def.label, def);
|
|
378
|
+
}
|
|
379
|
+
/** Register an edge/relationship model between two node labels. */
|
|
380
|
+
defineEdge(def) {
|
|
381
|
+
this.edgeModels.set(def.label, def);
|
|
382
|
+
}
|
|
383
|
+
/** Create a node and return the driver result. */
|
|
384
|
+
async createNode(label, data) {
|
|
385
|
+
return this.run(this.compileCreateNode(label, data));
|
|
386
|
+
}
|
|
387
|
+
/** Find nodes matching a spec, returning the driver rows. */
|
|
388
|
+
async findNodes(spec) {
|
|
389
|
+
const result = await this.run(this.compileMatch(spec));
|
|
390
|
+
return result.rows || [];
|
|
391
|
+
}
|
|
392
|
+
/** Update nodes matching a filter. */
|
|
393
|
+
async updateNodes(label, where, values) {
|
|
394
|
+
return this.run(this.compileUpdateNodes(label, where, values));
|
|
395
|
+
}
|
|
396
|
+
/** Delete nodes matching a filter (detaching their edges). */
|
|
397
|
+
async destroyNodes(label, where) {
|
|
398
|
+
return this.run(this.compileDeleteNodes(label, where, true));
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Materialize an ORM association write as a graph edge: matches the two
|
|
402
|
+
* endpoints by filter and connects them with the association's edge label.
|
|
403
|
+
*/
|
|
404
|
+
async relate(spec) {
|
|
405
|
+
return this.run(this.compileCreateEdge(spec));
|
|
406
|
+
}
|
|
407
|
+
/** Walk an association/edge from matching start node(s) — an `include`/join as a graph traversal. */
|
|
408
|
+
async traverse(spec) {
|
|
409
|
+
const result = await this.run(this.compileTraverse(spec));
|
|
410
|
+
return result.rows || [];
|
|
411
|
+
}
|
|
412
|
+
// =====================================================================
|
|
413
|
+
// Relational-only features with no graph equivalent -> typed errors.
|
|
414
|
+
// =====================================================================
|
|
415
|
+
unsupported(feature) {
|
|
416
|
+
throw new types_1.GraphCapabilityError(feature, this.name);
|
|
417
|
+
}
|
|
418
|
+
createPartitionedTable() {
|
|
419
|
+
return this.unsupported('partitioned tables');
|
|
420
|
+
}
|
|
421
|
+
createPartition(_options) {
|
|
422
|
+
return this.unsupported('partitions');
|
|
423
|
+
}
|
|
424
|
+
attachPartition(_options) {
|
|
425
|
+
return this.unsupported('partitions');
|
|
426
|
+
}
|
|
427
|
+
detachPartition(_options) {
|
|
428
|
+
return this.unsupported('partitions');
|
|
429
|
+
}
|
|
430
|
+
dropPartition() {
|
|
431
|
+
return this.unsupported('partitions');
|
|
432
|
+
}
|
|
433
|
+
createView(_viewName, _query, _options) {
|
|
434
|
+
return this.unsupported('views');
|
|
435
|
+
}
|
|
436
|
+
dropView(_viewName, _options) {
|
|
437
|
+
return this.unsupported('views');
|
|
438
|
+
}
|
|
439
|
+
createMaterializedView(_options) {
|
|
440
|
+
return this.unsupported('materialized views');
|
|
441
|
+
}
|
|
442
|
+
refreshMaterializedView(_viewName, _options) {
|
|
443
|
+
return this.unsupported('materialized views');
|
|
444
|
+
}
|
|
445
|
+
dropMaterializedView(_viewName, _options) {
|
|
446
|
+
return this.unsupported('materialized views');
|
|
447
|
+
}
|
|
448
|
+
hasMaterializedView(_viewName) {
|
|
449
|
+
return this.unsupported('materialized views');
|
|
450
|
+
}
|
|
451
|
+
createStoredProcedure(_options) {
|
|
452
|
+
return this.unsupported('stored procedures');
|
|
453
|
+
}
|
|
454
|
+
dropStoredProcedure(_procedureName, _options) {
|
|
455
|
+
return this.unsupported('stored procedures');
|
|
456
|
+
}
|
|
457
|
+
executeStoredProcedure(_options) {
|
|
458
|
+
return this.unsupported('stored procedures');
|
|
459
|
+
}
|
|
460
|
+
hasStoredProcedure(_procedureName, _schema) {
|
|
461
|
+
return this.unsupported('stored procedures');
|
|
462
|
+
}
|
|
463
|
+
createTrigger(_options) {
|
|
464
|
+
return this.unsupported('triggers');
|
|
465
|
+
}
|
|
466
|
+
dropTrigger(_triggerName, _tableName, _options) {
|
|
467
|
+
return this.unsupported('triggers');
|
|
468
|
+
}
|
|
469
|
+
hasTrigger(_triggerName, _tableName) {
|
|
470
|
+
return this.unsupported('triggers');
|
|
471
|
+
}
|
|
472
|
+
createSequence(_options) {
|
|
473
|
+
return this.unsupported('sequences');
|
|
474
|
+
}
|
|
475
|
+
dropSequence(_sequenceName, _options) {
|
|
476
|
+
return this.unsupported('sequences');
|
|
477
|
+
}
|
|
478
|
+
nextSequenceValue(_sequenceName) {
|
|
479
|
+
return this.unsupported('sequences');
|
|
480
|
+
}
|
|
481
|
+
hasSequence(_sequenceName) {
|
|
482
|
+
return this.unsupported('sequences');
|
|
483
|
+
}
|
|
484
|
+
createPolicy(_options) {
|
|
485
|
+
return this.unsupported('row-level-security policies');
|
|
486
|
+
}
|
|
487
|
+
dropPolicy(_policyName, _tableName, _options) {
|
|
488
|
+
return this.unsupported('row-level-security policies');
|
|
489
|
+
}
|
|
490
|
+
enableRLS(_tableName, _schema) {
|
|
491
|
+
return this.unsupported('row-level-security');
|
|
492
|
+
}
|
|
493
|
+
disableRLS(_tableName, _schema) {
|
|
494
|
+
return this.unsupported('row-level-security');
|
|
495
|
+
}
|
|
496
|
+
hasPolicy(_policyName, _tableName) {
|
|
497
|
+
return this.unsupported('row-level-security policies');
|
|
498
|
+
}
|
|
499
|
+
createPartialIndex() {
|
|
500
|
+
return this.unsupported('partial indexes');
|
|
501
|
+
}
|
|
502
|
+
createExpressionIndex() {
|
|
503
|
+
return this.unsupported('expression indexes');
|
|
504
|
+
}
|
|
505
|
+
createIdentityColumn() {
|
|
506
|
+
return this.unsupported('identity columns');
|
|
507
|
+
}
|
|
508
|
+
createComputedColumn() {
|
|
509
|
+
return this.unsupported('computed columns');
|
|
510
|
+
}
|
|
511
|
+
renameTable(_oldName, _newName) {
|
|
512
|
+
return this.unsupported('renaming a node label');
|
|
513
|
+
}
|
|
514
|
+
changeOwner(_newOwner, _tableName) {
|
|
515
|
+
return this.unsupported('ownership changes');
|
|
516
|
+
}
|
|
517
|
+
createForeignDataWrapper() {
|
|
518
|
+
return this.unsupported('foreign data wrappers');
|
|
519
|
+
}
|
|
520
|
+
dropForeignDataWrapper() {
|
|
521
|
+
return this.unsupported('foreign data wrappers');
|
|
522
|
+
}
|
|
523
|
+
createForeignServer() {
|
|
524
|
+
return this.unsupported('foreign servers');
|
|
525
|
+
}
|
|
526
|
+
dropForeignServer() {
|
|
527
|
+
return this.unsupported('foreign servers');
|
|
528
|
+
}
|
|
529
|
+
createForeignTable() {
|
|
530
|
+
return this.unsupported('foreign tables');
|
|
531
|
+
}
|
|
532
|
+
createSecurityPolicy() {
|
|
533
|
+
return this.unsupported('security policies');
|
|
534
|
+
}
|
|
535
|
+
dropSecurityPolicy() {
|
|
536
|
+
return this.unsupported('security policies');
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
exports.BaseGraphDialect = BaseGraphDialect;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dgraph graph dialect — DQL (GraphQL+-) queries + JSON mutations for the
|
|
3
|
+
* ORM builder API.
|
|
4
|
+
*
|
|
5
|
+
* Maps the ORM model API onto Dgraph's uid/predicate/edge model: node labels
|
|
6
|
+
* become `dgraph.type` values, finds become DQL `func: type(...)` blocks with
|
|
7
|
+
* `@filter(...)` and `expand(_all_)`, associations become edge predicates
|
|
8
|
+
* (reverse edges via `~pred` for inbound), and writes become JSON
|
|
9
|
+
* set/delete mutations (upserts resolve uids first, then mutate). Reads are
|
|
10
|
+
* parameterized with typed DQL vars (`$p0`); mutations carry structured JSON
|
|
11
|
+
* data (no string interpolation). Users never hand-write DQL/GraphQL for
|
|
12
|
+
* standard operations.
|
|
13
|
+
*
|
|
14
|
+
* Built on the optional `dgraph-js` gRPC driver, loaded lazily; a pre-built
|
|
15
|
+
* client can be injected via `options.client`.
|
|
16
|
+
*/
|
|
17
|
+
import { Transaction } from '../../types';
|
|
18
|
+
import type { QueryOptions, QueryResult, TransactionOptions, WhereOptions } from '../../types';
|
|
19
|
+
import { BaseGraphDialect, type EdgeCreateSpec, type NodeConstraintKind, type WhereRenderContext } from '../base-graph-dialect';
|
|
20
|
+
import { type GraphConnectionOptions, type GraphPredicate, type GraphStatement, type GraphTraversalSpec, type NodeMatchSpec } from '../types';
|
|
21
|
+
export declare class DgraphGraphDialect extends BaseGraphDialect {
|
|
22
|
+
readonly name = "dgraph";
|
|
23
|
+
readonly library = "dgraph-js";
|
|
24
|
+
private client;
|
|
25
|
+
private stub;
|
|
26
|
+
private readonly activeTxns;
|
|
27
|
+
private currentTxnId;
|
|
28
|
+
constructor(options?: GraphConnectionOptions);
|
|
29
|
+
protected get defaultNodeVar(): string;
|
|
30
|
+
connect(): Promise<void>;
|
|
31
|
+
disconnect(): Promise<void>;
|
|
32
|
+
private requireClient;
|
|
33
|
+
query(statement: string, options?: QueryOptions): Promise<QueryResult>;
|
|
34
|
+
private extractRows;
|
|
35
|
+
private toStringVars;
|
|
36
|
+
getDatabaseVersion(): Promise<string>;
|
|
37
|
+
private currentTxn;
|
|
38
|
+
startTransaction(options?: TransactionOptions): Promise<Transaction>;
|
|
39
|
+
commitTransaction(transaction: Transaction): Promise<void>;
|
|
40
|
+
rollbackTransaction(transaction: Transaction): Promise<void>;
|
|
41
|
+
private mutate;
|
|
42
|
+
private resolveData;
|
|
43
|
+
private resolveRows;
|
|
44
|
+
private runMutation;
|
|
45
|
+
renderPredicate(pred: GraphPredicate, ctx: WhereRenderContext): string;
|
|
46
|
+
/** Render a predicate; with `params` uses typed DQL vars, else inlines literals. */
|
|
47
|
+
private renderDql;
|
|
48
|
+
private renderComparison;
|
|
49
|
+
private varDefs;
|
|
50
|
+
compileMatch(spec: NodeMatchSpec): GraphStatement;
|
|
51
|
+
compileCreateNode(label: string, data: Record<string, unknown>): GraphStatement;
|
|
52
|
+
compileUpdateNodes(label: string, where: WhereOptions | undefined, values: Record<string, unknown>): GraphStatement;
|
|
53
|
+
compileDeleteNodes(label: string, where: WhereOptions | undefined, _detach: boolean): GraphStatement;
|
|
54
|
+
compileUpsertNode(label: string, data: Record<string, unknown>, conflictKeys: string[]): GraphStatement;
|
|
55
|
+
compileIncrement(label: string, fields: string | string[] | Record<string, number>, where: WhereOptions | undefined, by: number): GraphStatement;
|
|
56
|
+
compileCreateEdge(spec: EdgeCreateSpec): GraphStatement;
|
|
57
|
+
compileTraverse(spec: GraphTraversalSpec): GraphStatement;
|
|
58
|
+
private uidQuery;
|
|
59
|
+
compileCreateConstraint(label: string, fields: string[], _kind: NodeConstraintKind, _name?: string): GraphStatement;
|
|
60
|
+
compileDropConstraint(_label: string, _name: string): GraphStatement;
|
|
61
|
+
compileCreateIndex(_label: string, fields: string[], _name?: string): GraphStatement;
|
|
62
|
+
compileDropIndex(_label: string, _name: string): GraphStatement;
|
|
63
|
+
compileShowLabels(): GraphStatement;
|
|
64
|
+
}
|
|
65
|
+
export default DgraphGraphDialect;
|