krystv's picture
Upload 107 files
3374e90 verified
//! Plain Rust data structs that mirror FlatBuffer types.
//!
//! These are easy to construct from any source (WIT bindgen types, JSON, etc.)
//! and are consumed by the builder functions in `builders.rs`.
//!
//! Note: FlatBuffer primitive fields are non-optional (they default to 0/false).
//! Our Data structs follow the same convention — primitive fields are plain
//! values, not Option-wrapped. Use 0/empty-string/false for "missing" values.
/// Data struct for `Image`.
#[derive(Debug, Clone, Default)]
pub struct ImageData {
pub url: String,
pub layout: String,
pub width: u32,
pub height: u32,
pub blurhash: Option<String>,
}
/// Data struct for `ImageSet`.
#[derive(Debug, Clone, Default)]
pub struct ImageSetData {
pub low: Option<ImageData>,
pub medium: Option<ImageData>,
pub high: Option<ImageData>,
pub backdrop: Option<ImageData>,
pub logo: Option<ImageData>,
}
/// Data struct for `LinkedId`.
#[derive(Debug, Clone, Default)]
pub struct LinkedIdData {
pub source: String,
pub id: String,
}
/// Data struct for `Attr`.
#[derive(Debug, Clone, Default)]
pub struct AttrData {
pub key: String,
pub value: String,
}
/// Data struct for `MediaCard`.
#[derive(Debug, Clone, Default)]
pub struct MediaCardData {
pub id: String,
pub title: String,
pub kind: u8,
pub images: Option<ImageSetData>,
pub original_title: Option<String>,
pub tagline: Option<String>,
pub year: Option<String>,
pub score: u32,
pub genres: Vec<String>,
pub status: u8,
pub content_rating: Option<String>,
pub url: Option<String>,
pub ids: Vec<LinkedIdData>,
pub extra: Vec<AttrData>,
}
/// Data struct for `CategoryLink`.
#[derive(Debug, Clone, Default)]
pub struct CategoryLinkData {
pub id: String,
pub title: String,
pub subtitle: Option<String>,
pub image: Option<ImageData>,
}
/// Data struct for `HomeSection`.
#[derive(Debug, Clone, Default)]
pub struct HomeSectionData {
pub id: String,
pub title: String,
pub subtitle: Option<String>,
pub items: Vec<MediaCardData>,
pub next_page: Option<String>,
pub layout: Option<String>,
pub show_rank: bool,
pub categories: Vec<CategoryLinkData>,
pub extra: Vec<AttrData>,
}
/// Data struct for `Episode`.
#[derive(Debug, Clone, Default)]
pub struct EpisodeData {
pub id: String,
pub title: String,
pub number: f64,
pub season: f64,
pub images: Option<ImageSetData>,
pub description: Option<String>,
pub released: Option<String>,
pub score: u32,
pub url: Option<String>,
pub tags: Vec<String>,
pub extra: Vec<AttrData>,
}
/// Data struct for `Season`.
#[derive(Debug, Clone, Default)]
pub struct SeasonData {
pub id: String,
pub title: String,
pub number: f64,
pub year: u32,
pub episodes: Vec<EpisodeData>,
}
/// Data struct for `Person`.
#[derive(Debug, Clone, Default)]
pub struct PersonData {
pub id: String,
pub name: String,
pub image: Option<ImageSetData>,
pub role: Option<String>,
pub url: Option<String>,
}
/// Data struct for `MediaInfo`.
#[derive(Debug, Clone, Default)]
pub struct MediaInfoData {
pub id: String,
pub title: String,
pub kind: u8,
pub images: Option<ImageSetData>,
pub original_title: Option<String>,
pub description: Option<String>,
pub score: u32,
pub scored_by: u64,
pub year: Option<String>,
pub release_date: Option<String>,
pub genres: Vec<String>,
pub tags: Vec<String>,
pub status: u8,
pub content_rating: Option<String>,
pub seasons: Vec<SeasonData>,
pub cast: Vec<PersonData>,
pub crew: Vec<PersonData>,
pub runtime_minutes: u32,
pub trailer_url: Option<String>,
pub ids: Vec<LinkedIdData>,
pub studio: Option<String>,
pub country: Option<String>,
pub language: Option<String>,
pub url: Option<String>,
pub extra: Vec<AttrData>,
}
/// Data struct for `VideoResolution`.
#[derive(Debug, Clone, Default)]
pub struct VideoResolutionData {
pub width: u32,
pub height: u32,
pub hdr: bool,
pub label: Option<String>,
}
/// Data struct for `VideoTrack`.
#[derive(Debug, Clone, Default)]
pub struct VideoTrackData {
pub resolution: Option<VideoResolutionData>,
pub url: String,
pub mime_type: Option<String>,
pub bitrate: u64,
pub codecs: Option<String>,
}
/// Data struct for `SubtitleTrack`.
#[derive(Debug, Clone, Default)]
pub struct SubtitleTrackData {
pub label: Option<String>,
pub url: String,
pub language: Option<String>,
pub format: Option<String>,
}
/// Data struct for `Server`.
#[derive(Debug, Clone, Default)]
pub struct ServerData {
pub id: String,
pub label: Option<String>,
pub url: Option<String>,
pub priority: u8,
pub extra: Vec<AttrData>,
}
/// Data struct for `StreamSource`.
#[derive(Debug, Clone, Default)]
pub struct StreamSourceData {
pub id: String,
pub label: Option<String>,
pub format: u8,
pub manifest_url: Option<String>,
pub videos: Vec<VideoTrackData>,
pub subtitles: Vec<SubtitleTrackData>,
pub headers: Vec<AttrData>,
pub extra: Vec<AttrData>,
}