Skip to content
Snippets Groups Projects
config.rs 2.12 KiB
Newer Older
use schemars::JsonSchema;
use std::collections::HashMap;
use serde::Serialize;
use uuid::Uuid;

#[derive(Serialize, JsonSchema)]
pub struct ConfigNode {
    pub software: String,
    pub version: String,
    pub jobs: HashMap<String, Uuid>
}

impl ConfigNode {
    pub fn new(software: String, version: String) -> ConfigNode {
        ConfigNode {
            software,
            version,
            jobs: HashMap::<String, Uuid>::new()
        }
    }
}

#[derive(Serialize, JsonSchema)]
pub struct Configs {
    pub softwares: Vec<ConfigNode>
}

impl Configs {
    pub fn new() -> Configs {
        Configs {
            softwares: Vec::<ConfigNode>::new()
impl Default for Configs {
    fn default() -> Self {
        Self::new()
    }
}

#[derive(Serialize, JsonSchema)]
pub struct JobConfCommandParam {
    pub name: String,
    pub value_type: String,
    pub default_value: Option<String>,
    pub comment: Option<String>,
    pub required: bool,
    pub named: bool,
    pub parameter_name: Option<String>
}

impl From<adapters::constants::JobConfCommandParam> for JobConfCommandParam {
    fn from(value: adapters::constants::JobConfCommandParam) -> Self {
        Self {
            name: value.name,
            value_type: value.value_type.to_string(),
            default_value: value.default_value,
            comment: value.comment,
            required: value.required,
            named: value.named,
            parameter_name: value.parameter_name
    }
}

#[derive(Serialize, JsonSchema)]
pub struct JobConfCommand {
    #[serde(skip, default = "get_uuid")]
    pub uuid: Uuid,
    pub bin: String,
    pub parameters: Vec<JobConfCommandParam>
}

impl From<adapters::constants::JobConfCommand> for JobConfCommand {
    fn from(value: adapters::constants::JobConfCommand) -> Self {
        let mut converted_parameters = Vec::<JobConfCommandParam>::new();
        for param in value.parameters {
            converted_parameters.push(JobConfCommandParam::from(param));
            uuid: value.uuid,
            bin: value.bin,
            parameters: converted_parameters