ruststream-sqlx 0.7.0

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.
Documentation
use ruststream::OutgoingMessage;
use ruststream_sqlx::{Outbox, outbox};
use sqlx::{PgConnection, Postgres};

#[derive(Outbox, sqlx::FromRow)]
#[outbox(table = "outbox", custom(fetch))]
struct Untaken {
    #[field(id)]
    id: i64,
    #[field(name)]
    name: String,
    #[field(payload)]
    payload: Vec<u8>,
}

impl outbox::Publish<Postgres> for Untaken {
    async fn publish(conn: &mut PgConnection, msg: &OutgoingMessage<'_>) -> sqlx::Result<i64> {
        sqlx::query_scalar("INSERT INTO outbox (name, payload) VALUES ($1, $2) RETURNING id")
            .bind(msg.name())
            .bind(msg.payload())
            .fetch_one(conn)
            .await
    }
}

fn main() {
    let _ = Outbox::<Postgres>::deferred().register::<Untaken>("orders");
}