Crate bevy_sqlx

source ·
Expand description

Bevy SQLx is a database plugin for Bevy’s ECS which allows for SQL queries to be performed and data entities to be spawned and managed.

§Setup

#[derive(Component, FromRow)]
struct Foo {
    id: u32,
    flag: bool,
    text: String,
}

impl PrimaryKey for Foo {
    type Column = u32;
    fn primary_key(&self) -> Self::Column { self.id }
}
let url = "sqlite:db/sqlite.db";
let app = App::new()
    .add_plugins(DefaultPlugins)
    .add_plugins(SqlxPlugin::<Sqlite, Foo>::from_url(&url))
    .run();

§Usage

  • Send SqlxEvent events to query the database
fn select(mut events: EventWriter<SqlxEvent<Sqlite, Foo>>) {
    let sql = "SELECT * FROM foos";
    events.send(SqlxEvent::<Sqlite, Foo>::query(sql));
}
fn query(mut foos: Query<&Foo>) {
    for foo in &foos {
        dbg!(foo);
    }
}
fn status(
    mut statuses: EventReader<SqlxEventStatus<Sqlite, Foo>>,
) {
    for status in statuses.read() {
        match status {
            SqlxEventStatus::Start(label) => {},
            SqlxEventStatus::Spawn(label, id, _) => {},
            SqlxEventStatus::Update(label, id, _) => {},
            SqlxEventStatus::Error(label, err) => {},
        }
    }
}

Re-exports§

Modules§

Structs§