use crate::entity::{Couple, Entity};
crate::create_kind!(PodcastSubscriptionKind, "podcast-subscriptions");
pub type PodcastSubscriptionEntity = Entity<Couple, PodcastSubscriptionKind>;
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
pub struct PodcastSubscriptionDocument {
pub id: Couple, pub kind: PodcastSubscriptionKind,
pub attributes: PodcastSubscriptionAttributes,
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastSubscriptionAttributes {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_duration: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_duration: Option<u64>,
pub created_at: chrono::DateTime<chrono::Utc>,
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
pub struct PodcastSubscriptionUpdateDocument {
pub id: Couple, pub kind: PodcastSubscriptionKind,
pub attributes: PodcastSubscriptionUpdateAttributes,
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastSubscriptionUpdateAttributes {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_duration: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_duration: Option<u64>,
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastSubscriptionMeta {
pub queue_size: u32,
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastSubscriptionCreateDocument {
#[serde(rename = "type")]
pub kind: PodcastSubscriptionKind,
pub attributes: PodcastSubscriptionCreateAttributes,
}
impl PodcastSubscriptionCreateDocument {
pub fn new(feed_url: impl Into<String>) -> Self {
Self {
kind: Default::default(),
attributes: PodcastSubscriptionCreateAttributes {
feed_url: feed_url.into(),
},
}
}
}
#[cfg_attr(feature = "facet", derive(facet::Facet))]
#[derive(Clone, Debug, PartialEq, Eq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PodcastSubscriptionCreateAttributes {
pub feed_url: String,
}