//! MusicHoard - a music collection manager. use serde::{Deserialize, Serialize}; use uuid; /// [MusicBrainz Identifier](https://musicbrainz.org/doc/MusicBrainz_Identifier) (MBID). pub type Mbid = uuid::Uuid; /// [Artist](https://musicbrainz.org/doc/Artist). #[derive(Deserialize, Serialize)] pub struct Artist { pub name: String, pub mbid: Option, } /// [Track](https://musicbrainz.org/doc/Track). #[derive(Deserialize, Serialize)] pub struct Track { pub number: u32, pub title: String, pub artist: Artist, pub mbid: Option, } /// [Release](https://musicbrainz.org/doc/Release). #[derive(Deserialize, Serialize)] pub struct Release { pub title: String, pub artist: String, pub tracks: Vec, pub mbid: Option, } /// [Release group primary type](https://musicbrainz.org/doc/Release_Group/Type). #[derive(Deserialize, Serialize)] pub enum ReleaseGroupType { Album, Ep, Single, Other, } /// [Release group](https://musicbrainz.org/doc/Release_Group). #[derive(Deserialize, Serialize)] pub struct ReleaseGroup { pub r#type: ReleaseGroupType, pub title: String, pub artist: Artist, pub year: u32, pub mbid: Option, pub releases: Vec, }