use drasi_lib::bootstrap::BootstrapProvider;
use drasi_plugin_sdk::prelude::*;
use utoipa::OpenApi;
use crate::ApplicationBootstrapProvider;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, utoipa::ToSchema)]
#[schema(as = bootstrap::application::ApplicationBootstrapConfig)]
pub struct ApplicationBootstrapConfigDto {}
#[derive(OpenApi)]
#[openapi(components(schemas(ApplicationBootstrapConfigDto)))]
struct ApplicationBootstrapSchemas;
pub struct ApplicationBootstrapDescriptor;
#[async_trait]
impl BootstrapPluginDescriptor for ApplicationBootstrapDescriptor {
fn kind(&self) -> &str {
"application"
}
fn config_version(&self) -> &str {
"1.0.0"
}
fn config_schema_name(&self) -> &str {
"bootstrap.application.ApplicationBootstrapConfig"
}
fn config_schema_json(&self) -> String {
let api = ApplicationBootstrapSchemas::openapi();
serde_json::to_string(
&api.components
.as_ref()
.expect("OpenAPI components missing")
.schemas,
)
.expect("Failed to serialize config schema")
}
async fn create_bootstrap_provider(
&self,
_config_json: &serde_json::Value,
_source_config_json: &serde_json::Value,
) -> anyhow::Result<Box<dyn BootstrapProvider>> {
Ok(Box::new(ApplicationBootstrapProvider::new()))
}
}