summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-10-15 09:12:07 +0000
committerSanto Cariotti <santo@dcariotti.me>2022-10-15 09:12:07 +0000
commit9790a954fc9cc094c98faee1a8ce10f6adeec93d (patch)
treee2b2a47a590c9bd792fe3cab009e24208536cadc /src
parente1376a86a55afec15988fc763e2a126efa55bdaf (diff)
Fix filtered warnings count
Diffstat (limited to 'src')
-rw-r--r--src/models/warning.rs50
1 files changed, 38 insertions, 12 deletions
diff --git a/src/models/warning.rs b/src/models/warning.rs
index 5caf545..59fb99e 100644
--- a/src/models/warning.rs
+++ b/src/models/warning.rs
@@ -289,23 +289,49 @@ impl Warning {
pub async fn count_by_model_id(args: WarningFilter) -> Result<i64, AppError> {
let pool = unsafe { get_client() };
- let query = r#"
- SELECT COUNT(id) as count FROM warnings WHERE model_id = $1
- "#;
+ let mut query = r#"
+ SELECT COUNT(id) as count FROM warnings
+ "#
+ .to_string();
+
+ if args.model_id.is_some() {
+ query += r#" WHERE model_id = $1"#;
+ } else {
+ match args.resolved_by {
+ Some(_) => {
+ query += r#" WHERE warnings.resolved_by = $1"#;
+ }
+ None => {
+ query += r#" WHERE warnings.resolved_by IS NULL"#;
+ }
+ };
+ }
let cursor = match args.user_id {
Some(id) => {
- sqlx::query(&format!(r#"{} AND user_id = $2"#, query))
- .bind(args.model_id)
- .bind(id)
- .fetch_one(pool)
- .await?
+ let q = if args.model_id.is_some() {
+ query = format!(r#"{} AND user_id = $2"#, query);
+ sqlx::query(&query).bind(args.model_id.unwrap())
+ } else if args.resolved_by.is_some() {
+ query = format!(r#"{} AND user_id = $2"#, query);
+ sqlx::query(&query).bind(args.resolved_by.unwrap())
+ } else {
+ query = format!(r#"{} AND user_id = $1"#, query);
+ sqlx::query(&query)
+ };
+
+ q.bind(id).fetch_one(pool).await?
}
None => {
- sqlx::query(&format!(r#"{}"#, query))
- .bind(args.model_id)
- .fetch_one(pool)
- .await?
+ let q = if args.model_id.is_some() {
+ sqlx::query(&query).bind(args.model_id.unwrap())
+ } else if args.resolved_by.is_some() {
+ sqlx::query(&query).bind(args.resolved_by.unwrap())
+ } else {
+ sqlx::query(&query)
+ };
+
+ q.fetch_one(pool).await?
}
};