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
- Define a
Component
withFromRow
andPrimaryKey
#[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 }
}
- Add the
SqlxPlugin
to theApp
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));
}
- Notice the effects of
SqlxTasks::handle_tasks
fn query(mut foos: Query<&Foo>) {
for foo in &foos {
dbg!(foo);
}
}
- Respond to
SqlxEventStatus
events
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§
- Components represent data backed by rows in the database
- Both writer
SqlxEvent
and readerSqlxEventStatus
Structs§
- A
Resource
of tasks with the resulting components from the database