[package]
name = "sz-orm-core"
description = "Core ORM engine: Model trait, ActiveRecord, QueryBuilder, Pool, Transaction, migration, and SQL dialect abstraction"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true
[features]
default = ["redis"]
testing = ["tokio/full"]
db-verify = ["sz-orm-macros/db-verify"]
redis = ["dep:redis"]
circuit-breaker = ["sz-orm-health"]
rate-limit = ["sz-orm-limit"]
auto-prewarm = []
plan-cache = ["dep:sqlparser", "dep:xxhash-rust"]
zero-copy = []
simd = ["dep:wide"]
multi-tenant-enhanced = ["dep:sz-orm-audit", "dep:sz-orm-masking"]
dist-cache = ["dep:bloomfilter", "dep:rand", "dep:sz-orm-crypto"]
test-coverage = []
arch-improvement = []
doc-completion = []
perf-smallstring = ["dep:compact_str"]
perf-enum-dispatch = []
perf-zero-copy-l2 = ["zero-copy"]
perf-box-str = []
type-safe-columns = ["sz-orm-macros/type-safe-columns"]
typed-column = []
typed-dsl = []
typed-relation = []
sql-verify-proc = ["dep:sqlparser", "dep:xxhash-rust"]
qb-migration-tool = ["dep:syn", "dep:quote"]
l1-cache = []
dialect-cockroachdb = []
dialect-yugabytedb = []
dialect-snowflake = []
dialect-redshift = []
dialect-informix = []
dialect-saphana = []
dialect-firebird = []
migration-guide = []
e2e-real-db = []
prod-redis-tls = []
prod-jwt-key-rotation = []
prod-metrics-acl = []
prod-shutdown-timeout = []
prod-leak-detection = []
prod-n1-tuning = []
prod-pool-tuning = []
prod-config-masking = []
prod-log-level = []
prod-health-endpoint = []
prod-probe-endpoint = []
prod-circuit-tuning = []
prod-rate-limit-tuning = []
prod-dialect-security = []
prod-ready = [
"prod-redis-tls",
"prod-jwt-key-rotation",
"prod-metrics-acl",
"prod-shutdown-timeout",
"prod-leak-detection",
"prod-n1-tuning",
"prod-pool-tuning",
"prod-config-masking",
"prod-log-level",
"prod-health-endpoint",
"prod-probe-endpoint",
"prod-circuit-tuning",
"prod-rate-limit-tuning",
"prod-dialect-security",
]
benchmark-suite = ["dep:criterion"]
data-validation = ["sz-orm-macros/data-validation", "dep:regex"]
validate-on-write = ["data-validation"]
migration-dry-run = ["dep:regex"]
streaming-export = ["dep:csv"]
data-seeding = ["dep:rand", "dep:serde_yaml"]
schema-diff-viz = []
cache-coherence = []
migration-branch = []
compile-governance = ["sz-orm-macros/governance-derive"]
n1-lint = ["sz-orm-macros/n1-lint"]
zero-downtime-rollback = []
connection-level-tenant = ["multi-tenant-enhanced"]
process-l1-cache = ["l1-cache", "cache-coherence"]
forward-compat-sandbox = ["zero-downtime-rollback", "migration-dry-run"]
tenant-quota-rls-enhanced = ["connection-level-tenant"]
cache-warmup-protection = ["process-l1-cache"]
[dependencies]
async-trait.workspace = true
tracing.workspace = true
thiserror.workspace = true
serde.workspace = true
serde_json.workspace = true
chrono.workspace = true
bytes.workspace = true
tokio = { workspace = true, features = ["sync", "time", "rt", "macros"] }
parking_lot.workspace = true
crossbeam-queue.workspace = true
futures.workspace = true
sz-orm-sql-validator = { version = "4.1.0", path = "../sz-orm-sql-validator" }
sz-orm-macros = { version = "4.1.0", path = "../sz-orm-macros" }
sz-orm-health = { version = "4.1.0", path = "../sz-orm-health", optional = true }
sz-orm-limit = { version = "4.1.0", path = "../sz-orm-limit", optional = true }
redis = { workspace = true, optional = true }
sqlparser = { workspace = true, optional = true }
xxhash-rust = { workspace = true, optional = true }
wide = { workspace = true, optional = true }
sz-orm-audit = { version = "4.1.0", path = "../sz-orm-audit", optional = true }
sz-orm-masking = { version = "4.1.0", path = "../sz-orm-masking", optional = true }
bloomfilter = { workspace = true, optional = true }
rand = { workspace = true, optional = true }
sz-orm-crypto = { version = "4.1.0", path = "../sz-orm-crypto", optional = true }
compact_str = { workspace = true, optional = true }
syn = { version = "2.0", features = ["full", "parsing", "visit"], optional = true }
quote = { version = "1.0", default-features = false, optional = true }
regex = { version = "1", optional = true }
csv = { version = "1.3", optional = true }
serde_yaml = { workspace = true, optional = true }
criterion = { version = "0.5", features = ["html_reports", "async_tokio"], optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["full", "test-util"] }
sz-orm-query-builder = { path = "../sz-orm-query-builder" }
sz-orm-n1-lint = { path = "../sz-orm-n1-lint", features = ["n1-lint"] }
sqlx = { version = "0.9", default-features = false, features = ["runtime-tokio", "tls-rustls", "mysql", "postgres", "sqlite", "chrono", "json"] }
rusqlite = { version = "0.32", features = ["bundled"] }
duckdb = { version = "1", features = ["bundled"] }
oracle = { version = "0.6", default-features = false, features = ["chrono"] }
tiberius = { version = "0.12", default-features = false, features = ["tds73", "chrono"] }
tokio-util = { version = "0.7", features = ["compat"] }
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }
proptest = { workspace = true }
[lib]
name = "sz_orm_core"
path = "src/lib.rs"
[[test]]
name = "core_tests"
path = "tests/core.rs"
[[test]]
name = "integration_sqlite"
path = "tests/integration_sqlite.rs"
[[test]]
name = "integration_mysql"
path = "tests/integration_mysql.rs"
[[test]]
name = "integration_pg"
path = "tests/integration_pg.rs"
[[test]]
name = "integration_oracle"
path = "tests/integration_oracle.rs"
[[test]]
name = "integration_mssql"
path = "tests/integration_mssql.rs"
[[test]]
name = "contracts"
path = "tests/contracts.rs"
[[test]]
name = "property"
path = "tests/property.rs"
[[test]]
name = "soak"
path = "tests/soak.rs"
[[test]]
name = "chaos_pool"
path = "tests/chaos_pool.rs"
[[test]]
name = "tenant_concurrency"
path = "tests/tenant_concurrency.rs"
required-features = ["multi-tenant-enhanced"]
[[test]]
name = "plan_cache_differential"
path = "tests/plan_cache_differential.rs"
required-features = ["plan-cache"]
[[test]]
name = "simd_differential"
path = "tests/simd_differential.rs"
required-features = ["simd"]
[[test]]
name = "prewarm_integration"
path = "tests/prewarm_integration.rs"
required-features = ["auto-prewarm"]
[[test]]
name = "smallstring_differential"
path = "tests/smallstring_differential.rs"
[[test]]
name = "type_safe_columns"
path = "tests/type_safe_columns.rs"
required-features = ["type-safe-columns"]
[[test]]
name = "typed_ast_aggregate"
path = "tests/typed_ast_aggregate_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_arithmetic"
path = "tests/typed_ast_arithmetic_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_string"
path = "tests/typed_ast_string_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_date"
path = "tests/typed_ast_date_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_zst_diff"
path = "tests/typed_ast_zst_diff_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_zst_assert"
path = "tests/typed_ast_zst_assert_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "typed_ast_sql_injection"
path = "tests/typed_ast_sql_injection_test.rs"
required-features = ["typed-dsl"]
[[test]]
name = "l1_cache"
path = "tests/l1_cache_test.rs"
required-features = ["l1-cache"]
[[test]]
name = "l1_l2_db"
path = "tests/l1_l2_db_test.rs"
required-features = ["l1-cache"]
[[test]]
name = "dialect_cockroachdb"
path = "tests/dialect_cockroachdb_test.rs"
required-features = ["dialect-cockroachdb"]
[[test]]
name = "dialect_yugabytedb"
path = "tests/dialect_yugabytedb_test.rs"
required-features = ["dialect-yugabytedb"]
[[test]]
name = "dialect_snowflake"
path = "tests/dialect_snowflake_test.rs"
required-features = ["dialect-snowflake"]
[[test]]
name = "dialect_redshift"
path = "tests/dialect_redshift_test.rs"
required-features = ["dialect-redshift"]
[[test]]
name = "qb_migration_lint"
path = "tests/qb_migration_lint_test.rs"
required-features = ["qb-migration-tool"]
[[test]]
name = "qb_migration_fix"
path = "tests/qb_migration_fix_test.rs"
required-features = ["qb-migration-tool"]
[[test]]
name = "qb_migration_diff"
path = "tests/qb_migration_diff_test.rs"
required-features = ["qb-migration-tool"]
[[test]]
name = "e2e_real_db_crud"
path = "tests/e2e_real_db_crud.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_transaction"
path = "tests/e2e_real_db_transaction.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_pagination"
path = "tests/e2e_real_db_pagination.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_soft_delete"
path = "tests/e2e_real_db_soft_delete.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_dialect_behavior"
path = "tests/e2e_real_db_dialect_behavior.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_eager_load"
path = "tests/e2e_real_db_eager_load.rs"
required-features = ["e2e-real-db"]
[[test]]
name = "e2e_real_db_multi_tenant"
path = "tests/e2e_real_db_multi_tenant.rs"
required-features = ["e2e-real-db", "multi-tenant-enhanced"]
[[test]]
name = "e2e_real_db_cache"
path = "tests/e2e_real_db_cache.rs"
required-features = ["e2e-real-db", "l1-cache"]
[[test]]
name = "typed_relation_test"
path = "tests/typed_relation_test.rs"
required-features = ["typed-relation"]
[[test]]
name = "sql_verify_proc_test"
path = "tests/sql_verify_proc_test.rs"
required-features = ["sql-verify-proc"]
[[test]]
name = "dialect_informix_test"
path = "tests/dialect_informix_test.rs"
required-features = ["dialect-informix"]
[[test]]
name = "dialect_saphana_test"
path = "tests/dialect_saphana_test.rs"
required-features = ["dialect-saphana"]
[[test]]
name = "dialect_firebird_test"
path = "tests/dialect_firebird_test.rs"
required-features = ["dialect-firebird"]
[[bench]]
name = "smallstring_bench"
path = "benches/smallstring_bench.rs"
harness = false
[[bench]]
name = "enum_dispatch_bench"
path = "benches/enum_dispatch_bench.rs"
harness = false
[[bench]]
name = "zero_copy_l2_bench"
path = "benches/zero_copy_l2_bench.rs"
harness = false
[[bench]]
name = "box_str_bench"
path = "benches/box_str_bench.rs"
harness = false
[[bench]]
name = "typed_overhead_bench"
path = "benches/typed_overhead_bench.rs"
harness = false
[[bench]]
name = "l1_cache_bench"
path = "benches/l1_cache_bench.rs"
harness = false
required-features = ["l1-cache"]
[[bench]]
name = "core_bench"
path = "benches/core_bench.rs"
harness = false
[[bench]]
name = "zero_copy_bench"
path = "benches/zero_copy_bench.rs"
harness = false
required-features = ["zero-copy"]
[[bench]]
name = "simd_bench"
path = "benches/simd_bench.rs"
harness = false
required-features = ["simd"]
[[bench]]
name = "regression_query_build"
path = "benches/regression_query_build.rs"
harness = false
required-features = ["benchmark-suite"]
[[bench]]
name = "regression_pool"
path = "benches/regression_pool.rs"
harness = false
required-features = ["benchmark-suite"]
[[bench]]
name = "regression_cache"
path = "benches/regression_cache.rs"
harness = false
required-features = ["benchmark-suite"]
[[bench]]
name = "regression_transaction"
path = "benches/regression_transaction.rs"
harness = false
required-features = ["benchmark-suite"]
[[bench]]
name = "regression_serialization"
path = "benches/regression_serialization.rs"
harness = false
required-features = ["benchmark-suite"]
[[bench]]
name = "regression_stream"
path = "benches/regression_stream.rs"
harness = false
required-features = ["benchmark-suite"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lints]
workspace = true