bevy_stdb 0.7.2

A Bevy-native integration for SpacetimeDB with table messages, subscriptions, and reconnect support.
Documentation
//! Bevy integration for [SpacetimeDB](https://spacetimedb.com).
//!
//! `bevy_stdb` adapts SpacetimeDB's connection and callback model into
//! Bevy-style resources, systems, and messages. Everything is configured
//! through [`StdbPlugin`](crate::prelude::StdbPlugin).
//!
//! # Architecture
//!
//! The crate is organized around four lifecycle concerns:
//!
//! - **Connection** — Establish the initial connection eagerly or on demand,
//!   expose the active connection as [`StdbConnection`](crate::prelude::StdbConnection),
//!   and track state via [`StdbConnectionState`](crate::prelude::StdbConnectionState).
//! - **Tables** — Register message channels once at startup and re-bind SDK
//!   table callbacks whenever a connection becomes active. Row changes are
//!   forwarded as Bevy [`Message`](bevy_ecs::prelude::Message)s
//!   ([`InsertMessage`](crate::prelude::InsertMessage),
//!   [`DeleteMessage`](crate::prelude::DeleteMessage),
//!   [`UpdateMessage`](crate::prelude::UpdateMessage),
//!   [`InsertUpdateMessage`](crate::prelude::InsertUpdateMessage)).
//! - **Subscriptions** — Store subscription intent separately from the live
//!   connection via [`StdbSubscriptions`](crate::prelude::StdbSubscriptions)
//!   so queries are automatically re-applied after reconnects.
//! - **Reconnect** — Optionally retry failed connections with configurable
//!   backoff via [`StdbReconnectOptions`](crate::prelude::StdbReconnectOptions).
//!
//! # Quick start
//!
//! ```ignore
//! use bevy::prelude::*;
//! use bevy_stdb::prelude::*;
//! // Generated by `spacetime generate`:
//! use module_bindings::{DbConnection, RemoteModule, PlayerRow};
//!
//! #[derive(Clone, Eq, PartialEq, Hash)]
//! enum SubKey { Players }
//!
//! fn main() {
//!     App::new()
//!         .add_plugins(DefaultPlugins)
//!         .add_plugins(
//!             StdbPlugin::<DbConnection, RemoteModule>::default()
//!                 .with_module_name("my_module")
//!                 .with_uri("http://localhost:3000")
//!                 .with_background_driver(DbConnection::run_threaded)
//!                 .with_reconnect(StdbReconnectOptions::default())
//!                 .with_subscriptions::<SubKey>()
//!                 .add_table::<PlayerRow>(|reg, db| reg.bind(db.player()))
//!         )
//!         .add_systems(Update, (on_player_insert, subscribe_players_on_connect))
//!         .run();
//! }
//!
//! fn subscribe_players_on_connect(
//!     mut connected: ReadStdbConnectedMessage,
//!     mut subs: ResMut<StdbSubscriptions<SubKey, RemoteModule>>,
//! ) {
//!     if connected.read().next().is_some() {
//!         subs.subscribe_sql(SubKey::Players, "SELECT * FROM player");
//!     }
//! }
//!
//! fn on_player_insert(mut msgs: ReadInsertMessage<PlayerRow>) {
//!     for msg in msgs.read() {
//!         info!("player inserted: {:?}", msg.row);
//!     }
//! }
//! ```
//!
//! See the [`StdbPlugin`](crate::prelude::StdbPlugin) docs for the full
//! builder API and the [README](https://github.com/onx2/bevy_stdb)
//! for detailed guides on connection driving, table registration,
//! subscriptions, and delayed connections.
pub(crate) mod channel_bridge;

mod alias;
mod connection;
mod message;
mod plugin;
mod reconnect;
mod set;
mod subscription;
mod table;

/// Common imports for `bevy_stdb`.
pub mod prelude {
    pub use crate::{
        alias::{
            ReadDeleteMessage, ReadInsertMessage, ReadInsertUpdateMessage,
            ReadRequestStdbConnectionMessage, ReadStdbConnectedMessage,
            ReadStdbConnectionErrorMessage, ReadStdbDisconnectedMessage,
            ReadStdbSubscriptionAppliedMessage, ReadStdbSubscriptionErrorMessage,
            ReadUpdateMessage, WriteRequestStdbConnectionMessage,
        },
        connection::{StdbConnection, StdbConnectionState},
        message::{
            DeleteMessage, InsertMessage, InsertUpdateMessage, RequestStdbConnectionMessage,
            StdbConnectedMessage, StdbConnectionErrorMessage, StdbDisconnectedMessage,
            StdbSubscriptionAppliedMessage, StdbSubscriptionErrorMessage, UpdateMessage,
        },
        plugin::StdbPlugin,
        reconnect::StdbReconnectOptions,
        set::StdbSet,
        subscription::StdbSubscriptions,
    };
}