acts_store_sqlite/
lib.rs

1//! Acts sqlite store
2
3#![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}