derive_sql/selectable/
simpleoffset.rs

1use super::*;
2
3pub struct SimpleOffset {
4  limit: Option<usize>,
5  offset: Option<usize>,
6  next: Option<Box<dyn Selectable>>,
7}
8
9impl SimpleOffset {
10  pub fn and(mut self, next: Box<dyn Selectable>) -> SimpleOffset { self.next = Some(next); self }
11}
12
13impl Selectable for SimpleOffset {
14  fn filter(&self) -> Option<String> { self.next.as_ref().and_then(|n| n.filter()) }
15  fn limit(&self) -> Option<usize> { self.limit.as_ref().cloned() }
16  fn offset(&self) -> Option<usize> { self.offset.as_ref().cloned() }
17  fn order_by(&self) -> Option<String> { self.next.as_ref().and_then(|n| n.order_by()) }
18}
19
20impl std::convert::TryFrom<()> for SimpleOffset {
21  type Error = Box<dyn std::error::Error>;
22  fn try_from(_: ()) -> std::result::Result<Self, Self::Error> {
23    Ok(SimpleOffset { offset: None, limit: None, next: None })
24  }
25}
26
27impl std::convert::TryFrom<(usize, usize)> for SimpleOffset {
28  type Error = Box<dyn std::error::Error>;
29  fn try_from((limit, offset): (usize, usize)) -> std::result::Result<Self, Self::Error> {
30    Ok(SimpleOffset { limit: Some(limit), offset: Some(offset), next: None})
31  }
32}
33