acts_store_postgres/
lib.rs

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