#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SortDirection {
Asc,
Desc,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct OrderBy {
pub column: String,
pub direction: SortDirection,
}
impl OrderBy {
pub fn asc(column: impl Into<String>) -> Self {
Self {
column: column.into(),
direction: SortDirection::Asc,
}
}
pub fn desc(column: impl Into<String>) -> Self {
Self {
column: column.into(),
direction: SortDirection::Desc,
}
}
}
impl std::fmt::Display for OrderBy {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
let direction = match self.direction {
SortDirection::Asc => "ASC",
SortDirection::Desc => "DESC",
};
write!(f, "{} {direction}", self.column)
}
}