refactoring de pmoconfig
This commit is contained in:
49
pmoserver/src/config_ext.rs
Normal file
49
pmoserver/src/config_ext.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
//! Extension pour intégrer l'API de configuration de pmoconfig dans pmoserver
|
||||
//!
|
||||
//! Ce module fournit le trait `ConfigExt` qui permet d'ajouter facilement
|
||||
//! l'API REST de configuration au serveur.
|
||||
|
||||
use crate::Server;
|
||||
use anyhow::Result;
|
||||
use pmoconfig::{api, get_config, ApiDoc};
|
||||
use utoipa::OpenApi;
|
||||
|
||||
/// Trait d'extension pour ajouter l'API de configuration à pmoserver
|
||||
pub trait ConfigExt {
|
||||
/// Initialise l'API de configuration et enregistre les routes HTTP
|
||||
///
|
||||
/// # Routes enregistrées
|
||||
///
|
||||
/// - `GET /api/config` - Récupérer toute la configuration
|
||||
/// - `GET /api/config/{path}` - Récupérer une valeur spécifique (ex: host.http_port)
|
||||
/// - `POST /api/config` - Mettre à jour une valeur
|
||||
/// - `GET /swagger-ui/config` - Documentation interactive Swagger
|
||||
///
|
||||
/// # Exemple
|
||||
///
|
||||
/// ```rust,ignore
|
||||
/// use pmoserver::{ServerBuilder, ConfigExt};
|
||||
///
|
||||
/// #[tokio::main]
|
||||
/// async fn main() -> anyhow::Result<()> {
|
||||
/// let mut server = ServerBuilder::new_configured().build();
|
||||
/// server.init_config_api().await?;
|
||||
/// server.start().await;
|
||||
/// Ok(())
|
||||
/// }
|
||||
/// ```
|
||||
async fn init_config_api(&mut self) -> Result<()>;
|
||||
}
|
||||
|
||||
impl ConfigExt for Server {
|
||||
async fn init_config_api(&mut self) -> Result<()> {
|
||||
let config = get_config();
|
||||
|
||||
// API REST pour la configuration
|
||||
let api_router = api::create_router(config);
|
||||
let openapi = ApiDoc::openapi();
|
||||
self.add_openapi(api_router, openapi, "config").await;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
@@ -68,9 +68,11 @@
|
||||
//! # }
|
||||
//! ```
|
||||
|
||||
pub mod config_ext;
|
||||
pub mod logs;
|
||||
pub mod server;
|
||||
|
||||
pub use config_ext::ConfigExt;
|
||||
pub use logs::{
|
||||
LogState, LoggingOptions, LogsApiDoc, SseLayer, create_logs_router, init_logging, log_dump,
|
||||
log_setup_get, log_setup_post, log_sse,
|
||||
|
||||
Reference in New Issue
Block a user