use crate::Maybe;
use serde::Deserialize;
#[cfg(feature = "client")]
use serde::Serialize;
#[cfg(feature = "openapi")]
use utoipa::{IntoParams, ToSchema};
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct CreateGuildPayload {
pub name: String,
pub description: Option<String>,
pub icon: Option<String>,
pub banner: Option<String>,
#[serde(default)]
pub public: bool,
}
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct EditGuildPayload {
pub name: Option<String>,
#[serde(default)]
#[cfg_attr(feature = "client", serde(skip_serializing_if = "Maybe::is_absent"))]
#[cfg_attr(feature = "openapi", schema(nullable, value_type = Option<String>))]
pub description: Maybe<String>,
#[serde(default)]
#[cfg_attr(feature = "client", serde(skip_serializing_if = "Maybe::is_absent"))]
#[cfg_attr(feature = "openapi", schema(nullable, value_type = Option<String>, format = "byte"))]
pub icon: Maybe<String>,
#[serde(default)]
#[cfg_attr(feature = "client", serde(skip_serializing_if = "Maybe::is_absent"))]
#[cfg_attr(feature = "openapi", schema(nullable, value_type = Option<String>))]
pub banner: Maybe<String>,
pub public: Option<bool>,
}
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(ToSchema))]
pub struct DeleteGuildPayload {
pub password: String,
}
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(feature = "client", derive(Serialize))]
#[cfg_attr(feature = "openapi", derive(IntoParams))]
pub struct GetGuildQuery {
#[serde(default)]
pub channels: bool,
#[serde(default)]
pub members: bool,
#[serde(default)]
pub roles: bool,
}