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 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}