use mogh_resolver::Resolve;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{ResourceTarget, toml::ResourcesToml};
use super::KomodoReadRequest;
#[typeshare]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct TomlResponse {
pub toml: String,
}
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/ExportAllResourcesToToml",
description = "Get sync toml for all resources which the user has permissions to view.",
request_body(content = ExportAllResourcesToToml),
responses(
(status = 200, description = "The toml response", body = ExportAllResourcesToTomlResponse),
),
)]
pub fn export_all_resources_to_toml() {}
#[typeshare]
#[derive(Debug, Clone, Default, Serialize, Deserialize, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(ExportAllResourcesToTomlResponse)]
#[error(mogh_error::Error)]
pub struct ExportAllResourcesToToml {
#[serde(default = "default_include_resources")]
pub include_resources: bool,
#[serde(default)]
pub tags: Vec<String>,
#[serde(default)]
pub include_variables: bool,
#[serde(default)]
pub include_user_groups: bool,
pub existing: Option<ResourcesToml>,
}
fn default_include_resources() -> bool {
true
}
#[typeshare]
pub type ExportAllResourcesToTomlResponse = TomlResponse;
#[cfg(feature = "utoipa")]
#[utoipa::path(
post,
path = "/ExportResourcesToToml",
description = "Get sync toml for specific resources, variables, and user groups.",
request_body(content = ExportResourcesToToml),
responses(
(status = 200, description = "The toml response", body = ExportResourcesToTomlResponse),
),
)]
pub fn export_resources_to_toml() {}
#[typeshare]
#[derive(Debug, Clone, Default, Serialize, Deserialize, Resolve)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
#[empty_traits(KomodoReadRequest)]
#[response(ExportResourcesToTomlResponse)]
#[error(mogh_error::Error)]
pub struct ExportResourcesToToml {
#[serde(default)]
pub targets: Vec<ResourceTarget>,
#[serde(default)]
pub user_groups: Vec<String>,
#[serde(default)]
pub include_variables: bool,
pub existing: Option<ResourcesToml>,
}
#[typeshare]
pub type ExportResourcesToTomlResponse = TomlResponse;