use std::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Sort {
Id,
Score,
Rating,
User,
Height,
Width,
Source,
Updated,
Random,
}
impl fmt::Display for Sort {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s = match self {
Self::Id => "id",
Self::Score => "score",
Self::Rating => "rating",
Self::User => "user",
Self::Height => "height",
Self::Width => "width",
Self::Source => "source",
Self::Updated => "updated",
Self::Random => "random",
};
write!(f, "{s}")
}
}
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
use crate::model::danbooru::DanbooruRating;
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
use crate::model::gelbooru::GelbooruRating;
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
use crate::model::safebooru::SafebooruRating;
#[deprecated(
since = "0.3.0",
note = "Use client-specific rating types directly (e.g., DanbooruRating). \
The Rating wrapper is no longer needed due to compile-time type safety."
)]
#[derive(Debug, Clone)]
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
pub enum Rating {
Danbooru(DanbooruRating),
Gelbooru(GelbooruRating),
Safebooru(SafebooruRating),
}
#[allow(deprecated)]
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
impl From<DanbooruRating> for Rating {
fn from(value: DanbooruRating) -> Self {
Rating::Danbooru(value)
}
}
#[allow(deprecated)]
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
impl From<GelbooruRating> for Rating {
fn from(value: GelbooruRating) -> Self {
Rating::Gelbooru(value)
}
}
#[allow(deprecated)]
#[cfg(all(feature = "danbooru", feature = "gelbooru", feature = "safebooru"))]
impl From<SafebooruRating> for Rating {
fn from(value: SafebooruRating) -> Self {
Rating::Safebooru(value)
}
}