lamprey-common 0.1.1

yet another chat thing?
Documentation
use crate::v1::types::{util::some_option, ChannelId, MediaId, RoomId, UserId, WebhookId};
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use validator::Validate;

#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
#[cfg_attr(feature = "validator", derive(Validate))]
pub struct Webhook {
    pub id: WebhookId,
    pub room_id: Option<RoomId>,
    pub channel_id: ChannelId,
    pub creator_id: Option<UserId>,
    #[cfg_attr(feature = "validator", validate(length(min = 1, max = 64)))]
    pub name: String,
    pub avatar: Option<MediaId>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub token: Option<String>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
#[cfg_attr(feature = "validator", derive(Validate))]
pub struct WebhookCreate {
    #[validate(length(min = 1, max = 64))]
    pub name: String,
    pub avatar: Option<MediaId>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "utoipa", derive(ToSchema))]
#[cfg_attr(feature = "validator", derive(Validate))]
pub struct WebhookUpdate {
    pub channel_id: Option<ChannelId>,
    #[cfg_attr(feature = "validator", validate(length(min = 1, max = 64)))]
    pub name: Option<String>,
    #[serde(default, deserialize_with = "some_option")]
    pub avatar: Option<Option<MediaId>>,
    #[serde(default)]
    pub rotate_token: bool,
}