[package]
name = "postrust-server"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
description = "PostgREST-compatible REST and GraphQL API server for PostgreSQL, built on Axum"
homepage.workspace = true
readme = "README.md"
keywords = ["postgres", "rest", "api", "graphql", "server"]
[[bin]]
name = "postrust"
path = "src/main.rs"
[target.'cfg(target_env = "musl")'.dependencies]
mimalloc = "0.1"
[features]
default = []
graphql = ["postrust-graphql", "async-graphql", "async-graphql-axum"]
admin-ui = ["graphql", "utoipa"]
otel = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-http",
"dep:tracing-opentelemetry",
"dep:opentelemetry-prometheus",
"dep:prometheus",
]
pg-socket = ["postrust-core/pg-socket"]
compat-key-order = ["serde_json/preserve_order", "postrust-core/compat-key-order"]
[dependencies]
tokio = { workspace = true, features = ["full"] }
async-trait.workspace = true
axum.workspace = true
tower.workspace = true
tower-http.workspace = true
hyper.workspace = true
sqlx.workspace = true
serde.workspace = true
serde_json.workspace = true
thiserror.workspace = true
anyhow.workspace = true
http.workspace = true
indexmap.workspace = true
bytes.workspace = true
tracing.workspace = true
tracing-subscriber.workspace = true
chrono.workspace = true
pin-project-lite = "0.2"
reqwest.workspace = true
postrust-core = { workspace = true, features = ["sqlx"] }
postrust-sql.workspace = true
postrust-auth.workspace = true
postrust-response.workspace = true
postrust-engine.workspace = true
utoipa = { version = "5", features = ["axum_extras"], optional = true }
postrust-graphql = { workspace = true, optional = true }
async-graphql = { version = "7", optional = true }
async-graphql-axum = { version = "7", optional = true }
opentelemetry = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
opentelemetry-http = { workspace = true, optional = true }
tracing-opentelemetry = { workspace = true, optional = true }
opentelemetry-prometheus = { workspace = true, optional = true }
prometheus = { workspace = true, optional = true }
[dev-dependencies]
jsonwebtoken.workspace = true
futures.workspace = true
base64.workspace = true
opentelemetry_sdk = { workspace = true, features = ["testing"] }
opentelemetry.workspace = true
postrust-core = { workspace = true, features = ["sqlx", "pg-socket"] }
postrust-sql.workspace = true
tokio-postgres = { version = "0.7.18", default-features = false }
uuid.workspace = true
pretty_assertions.workspace = true
toml.workspace = true