[workspace]
resolver = "2"
members = [
"prax-schema",
"prax-codegen",
"prax-query",
"prax-postgres",
"prax-mysql",
"prax-sqlite",
"prax-sqlx",
"prax-migrate",
"prax-cli",
"prax-armature",
"prax-axum",
"prax-actix",
]
exclude = ["fuzz"]
[workspace.package]
version = "0.3.1"
edition = "2024"
rust-version = "1.85"
authors = ["Pegasus Heavy Industries LLC <dev@pegasusheavy.com>"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/pegasusheavy/prax"
homepage = "https://github.com/pegasusheavy/prax"
[workspace.dependencies]
prax-schema = { path = "prax-schema", version = "0.3.1" }
prax-codegen = { path = "prax-codegen", version = "0.3.1" }
prax-query = { path = "prax-query", version = "0.3.1" }
prax-postgres = { path = "prax-postgres", version = "0.3.1" }
prax-mysql = { path = "prax-mysql", version = "0.3.1" }
prax-sqlite = { path = "prax-sqlite", version = "0.3.1" }
prax-migrate = { path = "prax-migrate", version = "0.3.1" }
prax-cli = { path = "prax-cli", version = "0.3.1" }
prax-sqlx = { path = "prax-sqlx", version = "0.3.1" }
prax-armature = { path = "prax-armature", version = "0.3.1" }
prax-axum = { path = "prax-axum", version = "0.3.1" }
prax-actix = { path = "prax-actix", version = "0.3.1" }
proc-macro2 = "1.0"
quote = "1.0"
syn = { version = "2.0", features = ["full", "extra-traits", "parsing"] }
convert_case = "0.6"
tokio = { version = "1.40", features = ["full"] }
futures = "0.3"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"
thiserror = "2.0"
miette = { version = "7.0", features = ["fancy"] }
pest = "2.7"
pest_derive = "2.7"
indexmap = { version = "2.0", features = ["serde"] }
smol_str = { version = "0.3", features = ["serde"] }
smallvec = { version = "1.13", features = ["serde"] }
bumpalo = { version = "3.16", features = ["collections"] }
parking_lot = "0.12"
regex-lite = "0.1"
tokio-postgres = { version = "0.7", features = ["with-serde_json-1", "with-chrono-0_4", "with-uuid-1"] }
deadpool-postgres = { version = "0.14", features = ["serde"] }
postgres-types = { version = "0.2", features = ["derive"] }
mysql_async = { version = "0.34", default-features = false, features = ["default-rustls"] }
tokio-rusqlite = "0.6"
rusqlite = { version = "0.32", features = ["bundled"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "macros", "json", "chrono", "uuid"] }
rust_decimal = { version = "1.37", features = ["serde"] }
url = "2.5"
async-trait = "0.1"
tracing = "0.1"
uuid = { version = "1.10", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
insta = { version = "1.40", features = ["yaml"] }
pretty_assertions = "1.4"
tempfile = "3.10"
trybuild = "1.0"
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }
diesel = { version = "2.2", features = ["postgres", "mysql", "sqlite", "r2d2"] }
diesel-async = { version = "0.5", features = ["postgres", "mysql", "deadpool"] }
sea-orm = { version = "1.1", features = ["sqlx-postgres", "sqlx-mysql", "sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json"] }
tracing-flame = "0.2"
tracing-chrome = "0.7"
pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
dhat = "0.3"
memory-stats = "1.2"
[package]
name = "prax-orm"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "A next-generation, type-safe ORM for Rust inspired by Prisma"
documentation = "https://docs.rs/prax-orm"
readme = "README.md"
keywords = ["orm", "database", "postgres", "async", "sql"]
categories = ["database", "asynchronous"]
exclude = [
".github/*",
".cursor/*",
"TODO.md",
]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
prax-schema.workspace = true
prax-codegen.workspace = true
[dev-dependencies]
cargo-husky = { version = "1", default-features = false, features = ["user-hooks"] }
tokio = { workspace = true }
insta = { workspace = true }
criterion = { workspace = true }
prax-schema = { workspace = true }
prax-query = { workspace = true }
serde_json = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
toml = { workspace = true }
chrono = { workspace = true }
diesel = { workspace = true }
diesel-async = { workspace = true }
sea-orm = { workspace = true }
sqlx = { workspace = true, features = ["postgres", "mysql", "sqlite", "runtime-tokio"] }
prax-postgres = { workspace = true }
prax-mysql = { workspace = true }
prax-sqlite = { workspace = true }
rusqlite = { workspace = true }
[[bench]]
name = "query_builder"
harness = false
[[bench]]
name = "filter_operations"
harness = false
[[bench]]
name = "orm_comparison"
harness = false
[[bench]]
name = "database_execution"
harness = false
[package.metadata.husky.hooks]
pre-commit = ".cargo-husky/hooks/pre-commit"
pre-push = ".cargo-husky/hooks/pre-push"
commit-msg = ".cargo-husky/hooks/commit-msg"
[features]
default = ["postgres"]
postgres = []
mysql = []
sqlite = []
mongodb = []
profiling = ["tracing-subscriber", "tracing-flame", "tracing-chrome"]
heap-profiling = ["dhat"]
cpu-profiling = ["pprof"]
memory-stats = ["dep:memory-stats"]
[dependencies.memory-stats]
workspace = true
optional = true
[dependencies.tracing-subscriber]
workspace = true
optional = true
[dependencies.tracing-flame]
workspace = true
optional = true
[dependencies.tracing-chrome]
workspace = true
optional = true
[dependencies.dhat]
workspace = true
optional = true
[dependencies.pprof]
workspace = true
optional = true
[profile.release]
lto = "thin"
codegen-units = 1
panic = "abort"
[profile.profiling]
inherits = "release"
debug = true
strip = false
[profile.bench]
lto = "thin"
codegen-units = 1
[profile.dev]
opt-level = 0
[profile.dev-opt]
inherits = "dev"
opt-level = 2