[package]
name = "ruststream-sqlx"
description = "SQL databases for the RustStream messaging framework through sqlx: a transactional outbox over any RustStream broker and task queues in Postgres, MySQL/MariaDB and SQLite tables."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
readme = "../../README.md"
exclude = [".sqlx", "sqlx.toml"]
keywords = ["sqlx", "outbox", "queue", "messaging", "ruststream"]
categories = ["asynchronous", "database"]
[lints]
workspace = true
[package.metadata.docs.rs]
all-features = true
[features]
default = []
inbox = [
"dep:ruststream-sqlx-macros",
"dep:ruststream",
"dep:sqlx",
"dep:sqlx-core",
"sqlx/any",
"dep:futures",
"dep:tokio",
"dep:tokio-util",
"dep:tracing",
"dep:thiserror",
"dep:sync_wrapper",
"dep:stackfuture",
"dep:foldhash",
]
outbox = [
"dep:ruststream-sqlx-macros",
"dep:ruststream",
"dep:sqlx",
"dep:tokio",
"dep:tracing",
"dep:thiserror",
]
postgres = [
"ruststream-sqlx-dialect/postgres",
"ruststream-sqlx-macros?/postgres",
"sqlx?/postgres",
]
mysql = [
"ruststream-sqlx-dialect/mysql",
"ruststream-sqlx-macros?/mysql",
"sqlx?/mysql",
]
sqlite = [
"ruststream-sqlx-dialect/sqlite",
"ruststream-sqlx-macros?/sqlite",
"sqlx?/sqlite",
]
any = ["inbox", "sqlx/any"]
chrono = ["inbox", "dep:chrono", "sqlx/chrono"]
time = ["inbox", "dep:time", "sqlx/time"]
json = ["sqlx?/json"]
testing = ["dep:ruststream", "ruststream/testing"]
asyncapi = ["inbox", "ruststream/asyncapi", "dep:serde"]
[dependencies]
ruststream-sqlx-dialect.workspace = true
ruststream-sqlx-macros = { workspace = true, optional = true }
ruststream = { workspace = true, optional = true }
sqlx = { workspace = true, optional = true }
sqlx-core = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
tokio = { workspace = true, optional = true, features = ["rt", "time", "sync", "macros"] }
tokio-util = { workspace = true, optional = true }
tracing = { workspace = true, optional = true }
thiserror = { workspace = true, optional = true }
sync_wrapper = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
time = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
stackfuture = { workspace = true, optional = true }
foldhash = { workspace = true, optional = true }
[dev-dependencies]
ruststream = { workspace = true, features = ["macros", "json", "memory", "testing", "conformance"] }
sqlx = { workspace = true, features = ["postgres", "mysql", "sqlite", "chrono", "json", "derive", "macros", "sqlx-toml"] }
tokio = { version = "1.52", default-features = false, features = ["rt-multi-thread", "macros", "time", "sync", "net", "io-util"] }
chrono.workspace = true
futures = { workspace = true, features = ["executor"] }
serde.workspace = true
serde_json.workspace = true
trybuild.workspace = true
dhat.workspace = true
[[example]]
name = "inbox"
required-features = ["inbox", "postgres"]
[[example]]
name = "outbox"
required-features = ["outbox", "postgres"]