feat(database): new `get_total_records_count` method in Pool trait

pull/170/head
Valentin271 1 year ago
parent 7b1b5f7eba
commit 77a0a22ea0
No known key found for this signature in database
GPG Key ID: 77B4667C08D99D91

@ -23,6 +23,15 @@ pub trait Pool: Send + Sync {
page: u16,
filter: Option<String>,
) -> anyhow::Result<(Vec<String>, Vec<Vec<String>>)>;
/// Get the total number of records in a table
async fn get_total_records_count(
&self,
database: &Database,
table: &Table,
filter: Option<String>,
) -> anyhow::Result<usize>;
async fn get_columns(
&self,
database: &Database,

@ -265,6 +265,27 @@ impl Pool for MySqlPool {
Ok((headers, records))
}
async fn get_total_records_count(
&self,
_database: &Database,
table: &Table,
filter: Option<String>,
) -> anyhow::Result<usize> {
let query = if let Some(filter) = filter {
format!(
"SELECT count(*) FROM `{table}` WHERE {filter}",
table = table.name,
filter = filter
)
} else {
format!("SELECT count(*) FROM `{}`", table.name)
};
let res = sqlx::query(query.as_str()).fetch_one(&self.pool).await?;
Ok(res.get::<i32, usize>(0) as usize)
}
async fn get_columns(
&self,
database: &Database,

@ -318,6 +318,27 @@ impl Pool for PostgresPool {
Ok((headers, records))
}
async fn get_total_records_count(
&self,
_database: &Database,
table: &Table,
filter: Option<String>,
) -> anyhow::Result<usize> {
let query = if let Some(filter) = filter {
format!(
"SELECT count(*) FROM `{table}` WHERE {filter}",
table = table.name,
filter = filter
)
} else {
format!("SELECT count(*) FROM `{}`", table.name)
};
let res = sqlx::query(query.as_str()).fetch_one(&self.pool).await?;
Ok(res.get::<i32, usize>(0) as usize)
}
async fn get_columns(
&self,
database: &Database,

@ -265,6 +265,27 @@ impl Pool for SqlitePool {
Ok((headers, records))
}
async fn get_total_records_count(
&self,
_database: &Database,
table: &Table,
filter: Option<String>,
) -> anyhow::Result<usize> {
let query = if let Some(filter) = filter {
format!(
"SELECT count(*) FROM `{table}` WHERE {filter}",
table = table.name,
filter = filter
)
} else {
format!("SELECT count(*) FROM `{}`", table.name)
};
let res = sqlx::query(query.as_str()).fetch_one(&self.pool).await?;
Ok(res.get::<i32, usize>(0) as usize)
}
async fn get_columns(
&self,
_database: &Database,

Loading…
Cancel
Save