A decentralized music tracking and discovery platform built on AT Protocol 馃幍 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz
at main 44 lines 1.5 kB view raw
1use chrono::{DateTime, Utc}; 2use serde::Deserialize; 3 4#[derive(Debug, sqlx::FromRow, Deserialize, Clone)] 5pub struct Artist { 6 pub xata_id: String, 7 pub name: String, 8 pub biography: Option<String>, 9 #[serde(with = "chrono::serde::ts_seconds_option")] 10 pub born: Option<DateTime<Utc>>, 11 pub born_in: Option<String>, 12 #[serde(with = "chrono::serde::ts_seconds_option")] 13 pub died: Option<DateTime<Utc>>, 14 pub picture: Option<String>, 15 pub sha256: String, 16 pub spotify_link: Option<String>, 17 pub tidal_link: Option<String>, 18 pub youtube_link: Option<String>, 19 pub apple_music_link: Option<String>, 20 pub uri: Option<String>, 21 pub genres: Option<Vec<String>>, 22 #[serde(with = "chrono::serde::ts_seconds")] 23 pub xata_createdat: DateTime<Utc>, 24} 25 26#[derive(Debug, sqlx::FromRow, Deserialize, Clone)] 27pub struct ArtistWithoutDate { 28 pub xata_id: String, 29 pub name: String, 30 pub biography: Option<String>, 31 #[serde(with = "chrono::serde::ts_seconds_option")] 32 pub born: Option<DateTime<Utc>>, 33 pub born_in: Option<String>, 34 #[serde(with = "chrono::serde::ts_seconds_option")] 35 pub died: Option<DateTime<Utc>>, 36 pub picture: Option<String>, 37 pub sha256: String, 38 pub spotify_link: Option<String>, 39 pub tidal_link: Option<String>, 40 pub youtube_link: Option<String>, 41 pub apple_music_link: Option<String>, 42 pub uri: Option<String>, 43 pub genres: Option<Vec<String>>, 44}