replaced usize with u64 in PaginatorTrait (#789)

undefined
This commit is contained in:
liberwang1013 2022-08-20 22:43:17 +08:00 committed by GitHub
parent e40c351676
commit fff0c87a6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 43 additions and 43 deletions

View File

@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize};
use std::env;
use tera::Tera;
const DEFAULT_POSTS_PER_PAGE: usize = 5;
const DEFAULT_POSTS_PER_PAGE: u64 = 5;
#[derive(Debug, Clone)]
struct AppState {
@ -22,8 +22,8 @@ struct AppState {
}
#[derive(Debug, Deserialize)]
pub struct Params {
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]

View File

@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize};
use std::env;
use tera::Tera;
const DEFAULT_POSTS_PER_PAGE: usize = 5;
const DEFAULT_POSTS_PER_PAGE: u64 = 5;
#[derive(Debug, Clone)]
struct AppState {
@ -23,8 +23,8 @@ struct AppState {
#[derive(Debug, Deserialize)]
pub struct Params {
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]

View File

@ -72,8 +72,8 @@ async fn main() -> anyhow::Result<()> {
#[derive(Deserialize)]
struct Params {
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]

View File

@ -16,15 +16,15 @@ use std::net::SocketAddr;
use tokio::signal::ctrl_c;
use tokio::signal::unix::{signal, SignalKind};
const DEFAULT_POSTS_PER_PAGE: usize = 5;
const DEFAULT_POSTS_PER_PAGE: u64 = 5;
#[rpc(server, client)]
pub trait PostRpc {
#[method(name = "Post.List")]
async fn list(
&self,
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
) -> RpcResult<Vec<post::Model>>;
#[method(name = "Post.Insert")]
@ -45,8 +45,8 @@ pub struct PpcImpl {
impl PostRpcServer for PpcImpl {
async fn list(
&self,
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
) -> RpcResult<Vec<post::Model>> {
let page = page.unwrap_or(1);
let posts_per_page = posts_per_page.unwrap_or(DEFAULT_POSTS_PER_PAGE);

View File

@ -12,7 +12,7 @@ use sea_orm::{entity::*, query::*, DatabaseConnection};
use serde::Deserialize;
use tera::Tera;
const DEFAULT_POSTS_PER_PAGE: usize = 5;
const DEFAULT_POSTS_PER_PAGE: u64 = 5;
#[derive(Debug, Clone)]
struct AppState {
@ -22,8 +22,8 @@ struct AppState {
#[derive(Deserialize)]
struct Params {
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
}
#[handler]

View File

@ -20,7 +20,7 @@ use pool::Db;
pub use entity::post;
pub use entity::post::Entity as Post;
const DEFAULT_POSTS_PER_PAGE: usize = 5;
const DEFAULT_POSTS_PER_PAGE: u64 = 5;
#[get("/new")]
async fn new() -> Template {
@ -80,8 +80,8 @@ async fn update(
#[get("/?<page>&<posts_per_page>")]
async fn list(
conn: Connection<'_, Db>,
page: Option<usize>,
posts_per_page: Option<usize>,
page: Option<u64>,
posts_per_page: Option<u64>,
flash: Option<FlashMessage<'_>>,
) -> Template {
let db = conn.into_inner();

View File

@ -18,8 +18,8 @@ where
S: SelectorTrait + 'db,
{
pub(crate) query: SelectStatement,
pub(crate) page: usize,
pub(crate) page_size: usize,
pub(crate) page: u64,
pub(crate) page_size: u64,
pub(crate) db: &'db C,
pub(crate) selector: PhantomData<S>,
}
@ -28,9 +28,9 @@ where
#[derive(Clone, Debug)]
pub struct ItemsAndPagesNumber {
/// The total number of items of a paginator
pub number_of_items: usize,
pub number_of_items: u64,
/// The total number of pages of a paginator
pub number_of_pages: usize,
pub number_of_pages: u64,
}
// LINT: warn if paginator is used without an order by clause
@ -41,7 +41,7 @@ where
S: SelectorTrait + 'db,
{
/// Fetch a specific page; page index starts from zero
pub async fn fetch_page(&self, page: usize) -> Result<Vec<S::Item>, DbErr> {
pub async fn fetch_page(&self, page: u64) -> Result<Vec<S::Item>, DbErr> {
let query = self
.query
.clone()
@ -65,7 +65,7 @@ where
}
/// Get the total number of items
pub async fn num_items(&self) -> Result<usize, DbErr> {
pub async fn num_items(&self) -> Result<u64, DbErr> {
let builder = self.db.get_database_backend();
let stmt = builder.build(
SelectStatement::new()
@ -80,14 +80,14 @@ where
None => return Ok(0),
};
let num_items = match builder {
DbBackend::Postgres => result.try_get::<i64>("", "num_items")? as usize,
_ => result.try_get::<i32>("", "num_items")? as usize,
DbBackend::Postgres => result.try_get::<i64>("", "num_items")? as u64,
_ => result.try_get::<i32>("", "num_items")? as u64,
};
Ok(num_items)
}
/// Get the total number of pages
pub async fn num_pages(&self) -> Result<usize, DbErr> {
pub async fn num_pages(&self) -> Result<u64, DbErr> {
let num_items = self.num_items().await?;
let num_pages = self.compute_pages_number(num_items);
Ok(num_pages)
@ -105,8 +105,8 @@ where
}
/// Compute the number of pages for the current page
fn compute_pages_number(&self, num_items: usize) -> usize {
(num_items / self.page_size) + (num_items % self.page_size > 0) as usize
fn compute_pages_number(&self, num_items: u64) -> u64 {
(num_items / self.page_size) + (num_items % self.page_size > 0) as u64
}
/// Increment the page counter
@ -115,7 +115,7 @@ where
}
/// Get current page number
pub fn cur_page(&self) -> usize {
pub fn cur_page(&self) -> u64 {
self.page
}
@ -215,10 +215,10 @@ where
type Selector: SelectorTrait + Send + Sync + 'db;
/// Paginate the result of a select operation.
fn paginate(self, db: &'db C, page_size: usize) -> Paginator<'db, C, Self::Selector>;
fn paginate(self, db: &'db C, page_size: u64) -> Paginator<'db, C, Self::Selector>;
/// Perform a count on the paginated results
async fn count(self, db: &'db C) -> Result<usize, DbErr>
async fn count(self, db: &'db C) -> Result<u64, DbErr>
where
Self: Send + Sized,
{
@ -233,7 +233,7 @@ where
{
type Selector = S;
fn paginate(self, db: &'db C, page_size: usize) -> Paginator<'db, C, S> {
fn paginate(self, db: &'db C, page_size: u64) -> Paginator<'db, C, S> {
Paginator {
query: self.query,
page: 0,
@ -250,7 +250,7 @@ where
S: SelectorTrait + Send + Sync + 'db,
{
type Selector = S;
fn paginate(self, db: &'db C, page_size: usize) -> Paginator<'db, C, S> {
fn paginate(self, db: &'db C, page_size: u64) -> Paginator<'db, C, S> {
let sql = &self.stmt.sql[6..];
let mut query = SelectStatement::new();
query.expr(if let Some(values) = self.stmt.values {
@ -277,7 +277,7 @@ where
{
type Selector = SelectModel<M>;
fn paginate(self, db: &'db C, page_size: usize) -> Paginator<'db, C, Self::Selector> {
fn paginate(self, db: &'db C, page_size: u64) -> Paginator<'db, C, Self::Selector> {
self.into_model().paginate(db, page_size)
}
}
@ -292,7 +292,7 @@ where
{
type Selector = SelectTwoModel<M, N>;
fn paginate(self, db: &'db C, page_size: usize) -> Paginator<'db, C, Self::Selector> {
fn paginate(self, db: &'db C, page_size: u64) -> Paginator<'db, C, Self::Selector> {
self.into_model().paginate(db, page_size)
}
}
@ -492,9 +492,9 @@ mod tests {
async fn num_pages() -> Result<(), DbErr> {
let (db, num_items) = setup_num_items();
let num_items = num_items as usize;
let page_size = 2_usize;
let num_pages = (num_items / page_size) + (num_items % page_size > 0) as usize;
let num_items = num_items as u64;
let page_size = 2_u64;
let num_pages = (num_items / page_size) + (num_items % page_size > 0) as u64;
let paginator = fruit::Entity::find().paginate(&db, page_size);
assert_eq!(paginator.num_pages().await?, num_pages);
@ -524,9 +524,9 @@ mod tests {
async fn num_pages_raw() -> Result<(), DbErr> {
let (db, num_items) = setup_num_items();
let num_items = num_items as usize;
let page_size = 2_usize;
let num_pages = (num_items / page_size) + (num_items % page_size > 0) as usize;
let num_items = num_items as u64;
let page_size = 2_u64;
let num_pages = (num_items / page_size) + (num_items % page_size > 0) as u64;
let paginator = fruit::Entity::find()
.from_raw_sql(RAW_STMT.clone())
.paginate(&db, page_size);