use derive_empty_traits::EmptyTraits;
use resolver_api::Resolve;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{I64, onboarding_key::OnboardingKey};
use super::KomodoWriteRequest;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Resolve, EmptyTraits,
)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[empty_traits(KomodoWriteRequest)]
#[response(CreateOnboardingKeyResponse)]
#[error(serror::Error)]
pub struct CreateOnboardingKey {
pub name: String,
#[serde(default)]
pub expires: I64,
pub private_key: Option<String>,
#[serde(default)]
pub tags: Vec<String>,
#[serde(default)]
pub fix_existing_servers: bool,
#[serde(default)]
pub copy_server: String,
#[serde(default)]
pub create_builder: bool,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CreateOnboardingKeyResponse {
pub private_key: String,
pub created: OnboardingKey,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Resolve, EmptyTraits,
)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[empty_traits(KomodoWriteRequest)]
#[response(UpdateOnboardingKeyResponse)]
#[error(serror::Error)]
pub struct UpdateOnboardingKey {
pub public_key: String,
pub enabled: Option<bool>,
pub name: Option<String>,
pub expires: Option<I64>,
pub tags: Option<Vec<String>>,
pub fix_existing_servers: Option<bool>,
pub copy_server: Option<String>,
pub create_builder: Option<bool>,
}
impl UpdateOnboardingKey {
pub fn is_none(&self) -> bool {
self.enabled.is_none()
&& self.name.is_none()
&& self.expires.is_none()
&& self.tags.is_none()
&& self.fix_existing_servers.is_none()
&& self.copy_server.is_none()
&& self.create_builder.is_none()
}
}
#[typeshare]
pub type UpdateOnboardingKeyResponse = OnboardingKey;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Resolve, EmptyTraits,
)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
#[empty_traits(KomodoWriteRequest)]
#[response(DeleteOnboardingKeyResponse)]
#[error(serror::Error)]
pub struct DeleteOnboardingKey {
pub public_key: String,
}
#[typeshare]
pub type DeleteOnboardingKeyResponse = OnboardingKey;