use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "export", derive(tsify::Tsify))]
#[cfg_attr(feature = "export", tsify(into_wasm_abi, from_wasm_abi))]
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Serialize, Deserialize, Ord, PartialOrd)]
pub enum Sort {
TitleDesc = 0,
TitleAsc = 1,
ArtistDesc = 2,
ArtistAsc = 3,
DifficultyDesc = 4,
DifficultyAsc = 5,
RankedDesc = 6,
RankedAsc = 7,
RatingDesc = 8,
RatingAsc = 9,
PlaysDesc = 10,
PlaysAsc = 11,
FavouritesDesc = 12,
FavouritesAsc = 13,
}
impl Sort {
pub fn as_str(&self) -> &str {
match self {
Sort::TitleDesc => "TitleDesc",
Sort::TitleAsc => "TitleAsc",
Sort::ArtistDesc => "ArtistDesc",
Sort::ArtistAsc => "ArtistAsc",
Sort::DifficultyDesc => "DifficultyDesc",
Sort::DifficultyAsc => "DifficultyAsc",
Sort::RankedDesc => "RankedDesc",
Sort::RankedAsc => "RankedAsc",
Sort::RatingDesc => "RatingDesc",
Sort::RatingAsc => "RatingAsc",
Sort::PlaysDesc => "PlaysDesc",
Sort::PlaysAsc => "PlaysAsc",
Sort::FavouritesDesc => "FavouritesDesc",
Sort::FavouritesAsc => "FavouritesAsc",
}
}
pub fn to_beatmapset_search(&self) -> String {
match self {
Sort::TitleDesc => "title_desc".to_string(),
Sort::TitleAsc => "title_asc".to_string(),
Sort::ArtistDesc => "artist_desc".to_string(),
Sort::ArtistAsc => "artist_asc".to_string(),
Sort::DifficultyDesc => "difficulty_desc".to_string(),
Sort::DifficultyAsc => "difficulty_asc".to_string(),
Sort::RankedDesc => "ranked_desc".to_string(),
Sort::RankedAsc => "ranked_asc".to_string(),
Sort::RatingDesc => "rating_desc".to_string(),
Sort::RatingAsc => "rating_asc".to_string(),
Sort::PlaysDesc => "plays_desc".to_string(),
Sort::PlaysAsc => "plays_asc".to_string(),
Sort::FavouritesDesc => "favourites_desc".to_string(),
Sort::FavouritesAsc => "favourites_asc".to_string(),
}
}
}
impl std::fmt::Display for Sort {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}", self.as_str())
}
}