acts_store_postgres/
lib.rs1#![allow(rustdoc::bare_urls)]
4#![doc = include_str!("../README.md")]
5
6mod collection;
7mod database;
8mod synclient;
9
10use 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}