use crate::{client::TeamId, error::InvalidArg, util::ApiConv as _, ConfigError, Result};
pub mod quic_sync;
pub use quic_sync::{
AddTeamQuicSyncConfig, CreateTeamQuicSyncConfig, CreateTeamQuicSyncConfigBuilder,
};
#[derive(Debug, Default)]
pub struct CreateTeamConfigBuilder {
quic_sync: Option<CreateTeamQuicSyncConfig>,
}
impl CreateTeamConfigBuilder {
pub fn quic_sync(mut self, cfg: CreateTeamQuicSyncConfig) -> Self {
self.quic_sync = Some(cfg);
self
}
pub fn build(self) -> Result<CreateTeamConfig> {
Ok(CreateTeamConfig {
quic_sync: self.quic_sync,
})
}
}
#[derive(Debug, Default)]
pub struct AddTeamConfigBuilder {
id: Option<TeamId>,
quic_sync: Option<AddTeamQuicSyncConfig>,
}
impl AddTeamConfigBuilder {
pub fn team_id(mut self, id: TeamId) -> Self {
self.id = Some(id);
self
}
pub fn quic_sync(mut self, cfg: AddTeamQuicSyncConfig) -> Self {
self.quic_sync = Some(cfg);
self
}
pub fn build(self) -> Result<AddTeamConfig> {
let id = self.id.ok_or_else(|| {
ConfigError::InvalidArg(InvalidArg::new(
"id",
"Missing `id` field when calling `AddTeamConfigBuilder::build`",
))
})?;
Ok(AddTeamConfig {
id,
quic_sync: self.quic_sync,
})
}
}
#[derive(Clone, Debug)]
pub struct CreateTeamConfig {
quic_sync: Option<CreateTeamQuicSyncConfig>,
}
impl CreateTeamConfig {
pub fn builder() -> CreateTeamConfigBuilder {
CreateTeamConfigBuilder::default()
}
}
impl From<CreateTeamConfig> for aranya_daemon_api::CreateTeamConfig {
fn from(value: CreateTeamConfig) -> Self {
Self {
quic_sync: value.quic_sync.map(Into::into),
}
}
}
#[derive(Clone, Debug)]
pub struct AddTeamConfig {
id: TeamId,
quic_sync: Option<AddTeamQuicSyncConfig>,
}
impl AddTeamConfig {
pub fn builder() -> AddTeamConfigBuilder {
AddTeamConfigBuilder::default()
}
}
impl From<AddTeamConfig> for aranya_daemon_api::AddTeamConfig {
fn from(value: AddTeamConfig) -> Self {
Self {
team_id: value.id.into_api(),
quic_sync: value.quic_sync.map(Into::into),
}
}
}