Skip to main content

fusion_db/
lib.rs

1use ::config::{File, FileFormat};
2use fusion_common::ctx::Ctx;
3use fusion_core::{application::ApplicationBuilder, async_trait, configuration::ConfigRegistry, plugin::Plugin};
4pub use fusionsql::{DbConfig, ModelManager};
5
6pub mod acs;
7
8pub const DEFAULT_CONFIG_STR: &str = include_str!("../resources/default.toml");
9
10pub struct DbPlugin;
11
12#[async_trait]
13impl Plugin for DbPlugin {
14  async fn build(&self, app: &mut ApplicationBuilder) {
15    // sqlx::any::install_default_drivers();
16    app.add_config_source(File::from_str(DEFAULT_CONFIG_STR, FileFormat::Toml));
17    let config: DbConfig = app
18      .get_config_by_path("fusion.db")
19      .expect("DbPlugin config load failed, please check the config file: `fusion.db`");
20    let mm = ModelManager::new(&config, Some(app.get_fusion_config().app().name()))
21      .await
22      .unwrap()
23      .with_ctx(Ctx::new_super_admin());
24    app.add_component(mm);
25  }
26}