major rework
This commit is contained in:
39
src/generator/modules/discovery/mod.rs
Normal file
39
src/generator/modules/discovery/mod.rs
Normal file
@@ -0,0 +1,39 @@
|
||||
use crate::generator::DatabaseUrl;
|
||||
|
||||
use super::{Module, ModulesContext};
|
||||
use color_eyre::Result;
|
||||
use serde::Deserialize;
|
||||
use serde_inline_default::serde_inline_default;
|
||||
|
||||
#[serde_inline_default]
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct DiscoveryConfig {
|
||||
#[serde_inline_default(false)]
|
||||
pub enable: bool,
|
||||
#[serde_inline_default(None)]
|
||||
pub database_schema: Option<String>,
|
||||
#[serde_inline_default(10)]
|
||||
pub max_connections: u32,
|
||||
#[serde_inline_default(30)]
|
||||
pub acquire_timeout: u32,
|
||||
}
|
||||
#[derive(Debug)]
|
||||
pub struct DiscoveryModule;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl Module for DiscoveryModule {
|
||||
fn init(&self, ctx: &mut ModulesContext) -> Result<()> {
|
||||
ctx.get_config_auto::<DiscoveryConfig>("modules.discovery")?;
|
||||
Ok(())
|
||||
}
|
||||
async fn validate(&self, ctx: &mut ModulesContext) -> Result<bool> {
|
||||
let map = ctx.get_anymap();
|
||||
|
||||
if let (Some(config), Some(_)) = (map.get::<DiscoveryConfig>(), map.get::<DatabaseUrl>()) {
|
||||
Ok(config.enable)
|
||||
} else {
|
||||
// One or both keys are missing
|
||||
Ok(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user