Docs
This commit is contained in:
parent
42f1013958
commit
06d755513e
@ -22,6 +22,7 @@ impl<'db, S> Paginator<'db, S>
|
|||||||
where
|
where
|
||||||
S: SelectorTrait + 'db,
|
S: SelectorTrait + 'db,
|
||||||
{
|
{
|
||||||
|
/// Fetch a specific page
|
||||||
pub async fn fetch_page(&mut self, page: usize) -> Result<Vec<S::Item>, QueryErr> {
|
pub async fn fetch_page(&mut self, page: usize) -> Result<Vec<S::Item>, QueryErr> {
|
||||||
self.query
|
self.query
|
||||||
.limit(self.page_size as u64)
|
.limit(self.page_size as u64)
|
||||||
@ -37,10 +38,12 @@ where
|
|||||||
Ok(buffer)
|
Ok(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Fetch the current page
|
||||||
pub async fn fetch(&mut self) -> Result<Vec<S::Item>, QueryErr> {
|
pub async fn fetch(&mut self) -> Result<Vec<S::Item>, QueryErr> {
|
||||||
self.fetch_page(self.page).await
|
self.fetch_page(self.page).await
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get the total number of pages
|
||||||
pub async fn num_pages(&mut self) -> Result<usize, QueryErr> {
|
pub async fn num_pages(&mut self) -> Result<usize, QueryErr> {
|
||||||
let builder = self.db.get_query_builder_backend();
|
let builder = self.db.get_query_builder_backend();
|
||||||
let stmt = SelectStatement::new()
|
let stmt = SelectStatement::new()
|
||||||
@ -62,14 +65,17 @@ where
|
|||||||
Ok(num_pages)
|
Ok(num_pages)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Increment the page counter
|
||||||
pub fn next(&mut self) {
|
pub fn next(&mut self) {
|
||||||
self.page += 1;
|
self.page += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get current page number
|
||||||
pub fn cur_page(&self) -> usize {
|
pub fn cur_page(&self) -> usize {
|
||||||
self.page
|
self.page
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Fetch one page and increment the page counter
|
||||||
pub async fn fetch_and_next(&mut self) -> Result<Option<Vec<S::Item>>, QueryErr> {
|
pub async fn fetch_and_next(&mut self) -> Result<Option<Vec<S::Item>>, QueryErr> {
|
||||||
let vec = self.fetch().await?;
|
let vec = self.fetch().await?;
|
||||||
self.next();
|
self.next();
|
||||||
@ -77,6 +83,7 @@ where
|
|||||||
Ok(opt)
|
Ok(opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Convert self into an async stream
|
||||||
pub fn into_stream(mut self) -> PinBoxStream<'db, Result<Vec<S::Item>, QueryErr>> {
|
pub fn into_stream(mut self) -> PinBoxStream<'db, Result<Vec<S::Item>, QueryErr>> {
|
||||||
Box::pin(stream! {
|
Box::pin(stream! {
|
||||||
loop {
|
loop {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user