#![allow(
missing_docs,
clippy::doc_lazy_continuation,
clippy::doc_overindented_list_items
)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CategoryInterface {
pub title: String,
pub visibility: Visibility,
#[serde(
rename = "thumbnailUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub thumbnail_url: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub posts: Vec<PostInterface>,
#[serde(
rename = "subCategories",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub sub_categories: Vec<SubCategoryInterface>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct InstructorDetails {
pub name: String,
pub description: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PostInterface {
pub title: String,
pub visibility: Visibility,
#[serde(
rename = "thumbnailUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub thumbnail_url: Option<String>,
#[serde(rename = "contentType")]
pub content_type: ContentType,
pub description: String,
#[serde(
rename = "bucketVideoUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub bucket_video_url: Option<String>,
#[serde(
rename = "postMaterials",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub post_materials: Vec<PostMaterialInterface>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PostMaterialInterface {
pub title: String,
#[serde(rename = "type")]
pub type_: Type,
pub url: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ProductInterface {
pub title: String,
pub description: String,
#[serde(rename = "imageUrl", default, skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub categories: Vec<CategoryInterface>,
#[serde(
rename = "instructorDetails",
default,
skip_serializing_if = "Option::is_none"
)]
pub instructor_details: Option<InstructorDetails>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PublicExporterPayload {
#[serde(rename = "locationId")]
pub location_id: String,
#[serde(rename = "userId", default, skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub products: Vec<ProductInterface>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SubCategoryInterface {
pub title: String,
pub visibility: Visibility,
#[serde(
rename = "thumbnailUrl",
default,
skip_serializing_if = "Option::is_none"
)]
pub thumbnail_url: Option<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub posts: Vec<PostInterface>,
}
pub type ContentType = String;
pub type Type = String;
pub type Visibility = String;