use crate::entity::IEntityType;
use super::super::ast::{OrderBy, OrderDirection};
use super::super::predicate::Predicate;
use super::core::QueryBuilder;
impl<T: IEntityType> QueryBuilder<T> {
#[doc(hidden)]
pub fn order_by_column(mut self, column: &str) -> Self {
self.state
.orderings
.push(OrderBy::new(column, OrderDirection::Ascending));
self
}
#[doc(hidden)]
pub fn order_by_desc_column(mut self, column: &str) -> Self {
self.state
.orderings
.push(OrderBy::new(column, OrderDirection::Descending));
self
}
pub fn distinct(mut self) -> Self {
self.state.distinct = true;
self
}
pub fn filter(self, predicate: impl Into<Predicate<T>>) -> Self {
match predicate.into().into_where_expr() {
Some(expr) => self.apply_query_filter(expr),
None => self,
}
}
pub fn skip(mut self, count: usize) -> Self {
self.state.offset = Some(count);
self
}
pub fn take(mut self, count: usize) -> Self {
self.state.limit = Some(count);
self
}
}