[package]
edition = "2024"
rust-version = "1.95"
name = "ruststream-sqlx"
version = "0.7.0"
authors = ["RustStream contributors"]
build = false
exclude = [
".sqlx",
"sqlx.toml",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
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."
readme = "README.md"
keywords = [
"sqlx",
"outbox",
"queue",
"messaging",
"ruststream",
]
categories = [
"asynchronous",
"database",
]
license = "Apache-2.0"
repository = "https://github.com/powersemmi/ruststream-sqlx"
[package.metadata.docs.rs]
all-features = true
[features]
any = [
"inbox",
"sqlx/any",
]
asyncapi = [
"inbox",
"ruststream/asyncapi",
"dep:serde",
]
chrono = [
"inbox",
"dep:chrono",
"sqlx/chrono",
]
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",
]
json = ["sqlx?/json"]
mysql = [
"ruststream-sqlx-dialect/mysql",
"ruststream-sqlx-macros?/mysql",
"sqlx?/mysql",
]
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",
]
sqlite = [
"ruststream-sqlx-dialect/sqlite",
"ruststream-sqlx-macros?/sqlite",
"sqlx?/sqlite",
]
testing = [
"dep:ruststream",
"ruststream/testing",
]
time = [
"inbox",
"dep:time",
"sqlx/time",
]
[lib]
name = "ruststream_sqlx"
path = "src/lib.rs"
[[example]]
name = "inbox"
path = "examples/inbox.rs"
required-features = [
"inbox",
"postgres",
]
[[example]]
name = "outbox"
path = "examples/outbox.rs"
required-features = [
"outbox",
"postgres",
]
[[test]]
name = "allocations"
path = "tests/allocations.rs"
[[test]]
name = "conformance"
path = "tests/conformance.rs"
[[test]]
name = "databases"
path = "tests/databases/main.rs"
[[test]]
name = "delivery"
path = "tests/delivery/main.rs"
[[test]]
name = "describe"
path = "tests/describe/main.rs"
[[test]]
name = "failures"
path = "tests/failures/main.rs"
[[test]]
name = "forms"
path = "tests/forms/main.rs"
[[test]]
name = "headers"
path = "tests/headers/main.rs"
[[test]]
name = "isolation"
path = "tests/isolation/main.rs"
[[test]]
name = "manual"
path = "tests/manual/main.rs"
[[test]]
name = "names"
path = "tests/names/main.rs"
[[test]]
name = "outbox"
path = "tests/outbox/main.rs"
[[test]]
name = "retries"
path = "tests/retries/main.rs"
[[test]]
name = "row_mode"
path = "tests/row_mode/main.rs"
[[test]]
name = "threads"
path = "tests/threads/main.rs"
[[test]]
name = "transactional"
path = "tests/transactional/main.rs"
[[test]]
name = "ui"
path = "tests/ui.rs"
[[test]]
name = "wake"
path = "tests/wake/main.rs"
[dependencies.chrono]
version = "0.4.39"
features = [
"clock",
"std",
]
optional = true
default-features = false
[dependencies.foldhash]
version = "0.2"
optional = true
default-features = false
[dependencies.futures]
version = "0.3.31"
features = [
"std",
"async-await",
]
optional = true
default-features = false
[dependencies.ruststream]
version = "0.7.1"
optional = true
default-features = false
[dependencies.ruststream-sqlx-dialect]
version = "=0.7.0"
[dependencies.ruststream-sqlx-macros]
version = "=0.7.0"
optional = true
[dependencies.serde]
version = "1.0.217"
features = [
"std",
"derive",
]
optional = true
default-features = false
[dependencies.sqlx]
version = "0.9"
features = ["runtime-tokio"]
optional = true
default-features = false
[dependencies.sqlx-core]
version = "0.9"
optional = true
default-features = false
[dependencies.stackfuture]
version = "0.3.1"
optional = true
[dependencies.sync_wrapper]
version = "1"
optional = true
[dependencies.thiserror]
version = "2"
optional = true
[dependencies.time]
version = "0.3.36"
features = [
"std",
"formatting",
]
optional = true
default-features = false
[dependencies.tokio]
version = "1.49"
features = [
"rt",
"time",
"sync",
"macros",
]
optional = true
default-features = false
[dependencies.tokio-util]
version = "0.7.10"
optional = true
default-features = false
[dependencies.tracing]
version = "0.1.41"
features = ["std"]
optional = true
default-features = false
[dev-dependencies.chrono]
version = "0.4.39"
features = [
"clock",
"std",
]
default-features = false
[dev-dependencies.dhat]
version = "0.3.3"
[dev-dependencies.futures]
version = "0.3.31"
features = [
"std",
"async-await",
"executor",
]
default-features = false
[dev-dependencies.ruststream]
version = "0.7.1"
features = [
"macros",
"json",
"memory",
"testing",
"conformance",
]
default-features = false
[dev-dependencies.serde]
version = "1.0.217"
features = [
"std",
"derive",
]
default-features = false
[dev-dependencies.serde_json]
version = "1.0.135"
[dev-dependencies.sqlx]
version = "0.9"
features = [
"runtime-tokio",
"postgres",
"mysql",
"sqlite",
"chrono",
"json",
"derive",
"macros",
"sqlx-toml",
]
default-features = false
[dev-dependencies.tokio]
version = "1.52"
features = [
"rt-multi-thread",
"macros",
"time",
"sync",
"net",
"io-util",
]
default-features = false
[dev-dependencies.trybuild]
version = "1.0.121"
[lints.clippy]
missing_const_for_fn = "allow"
module_name_repetitions = "allow"
multiple_crate_versions = "allow"
redundant_pub_crate = "allow"
[lints.clippy.cargo]
level = "warn"
priority = -1
[lints.clippy.correctness]
level = "deny"
priority = -1
[lints.clippy.nursery]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.clippy.perf]
level = "deny"
priority = -1
[lints.clippy.suspicious]
level = "deny"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "deny"
unreachable_pub = "deny"
unsafe_op_in_unsafe_fn = "deny"
unused_qualifications = "warn"