1#![allow(rustdoc::bare_urls)]
4#![doc = include_str!("../README.md")]
5
6mod collection;
7mod database;
8
9#[cfg(test)]
10mod tests;
11
12use acts::{ActError, ActPlugin, Result};
13
14#[derive(Clone)]
15pub struct SqliteStore;
16
17#[derive(serde::Deserialize)]
18struct SqliteConfig {
19 database_url: String,
20}
21
22#[async_trait::async_trait]
23impl ActPlugin for SqliteStore {
24 async fn on_init(&self, engine: &acts::Engine) -> Result<()> {
25 let config = engine
26 .config()
27 .get::<SqliteConfig>("sqlite")
28 .map_err(|err| ActError::Config(format!("get sqlite config error: {}", err)))?;
29
30 let db = database::Database::new(&config.database_url);
31 db.init();
32
33 engine.extender().register_collection(db.packages());
34 engine.extender().register_collection(db.models());
35 engine.extender().register_collection(db.procs());
36 engine.extender().register_collection(db.tasks());
37 engine.extender().register_collection(db.messages());
38 engine.extender().register_collection(db.events());
39
40 Ok(())
41 }
42}