diff --git a/set_version.sh b/set_version.sh index f3e28f9e..ef9bef81 100755 --- a/set_version.sh +++ b/set_version.sh @@ -1,3 +1,3 @@ #!/bin/bash -export version=0.4.1-alpha.9 +export version=0.4.1-alpha.10 echo "pub const VERSION: &str = \"${version}\";" > src/version.rs diff --git a/src/database/entities/january.rs b/src/database/entities/january.rs index 043561a5..c530b75e 100644 --- a/src/database/entities/january.rs +++ b/src/database/entities/january.rs @@ -3,30 +3,77 @@ use linkify::{LinkFinder, LinkKind}; use crate::util::{result::{Error, Result}, variables::JANUARY_URL}; #[derive(Serialize, Deserialize, Debug, Clone)] -pub enum MediaSize { +pub enum ImageSize { Large, Preview, } #[derive(Serialize, Deserialize, Debug, Clone)] -pub struct Media { +pub struct Image { pub url: String, pub width: isize, pub height: isize, - pub size: MediaSize, + pub size: ImageSize, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub struct Video { + pub url: String, + pub width: isize, + pub height: isize, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub enum TwitchType { + Channel, + Video, + Clip, +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +pub enum BandcampType { + Album, + Track +} + +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(tag = "type")] +pub enum Special { + None, + YouTube { + id: String, + }, + Twitch { + content_type: TwitchType, + id: String, + }, + Spotify { + content_type: String, + id: String, + }, + Soundcloud, + Bandcamp { + content_type: BandcampType, + id: String + } } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Metadata { - #[serde(skip_serializing_if = "Option::is_none")] url: Option, + special: Option, + #[serde(skip_serializing_if = "Option::is_none")] title: Option, #[serde(skip_serializing_if = "Option::is_none")] description: Option, #[serde(skip_serializing_if = "Option::is_none")] - image: Option, - + image: Option, + #[serde(skip_serializing_if = "Option::is_none")] + video: Option