aven_core/query/
doctor.rs1use anyhow::Result;
2use sqlx::SqliteConnection;
3
4use crate::ids::WorkspaceId;
5
6pub struct WorkspaceTaskCounts {
7 pub visible: i64,
8 pub total: i64,
9}
10
11pub async fn workspace_task_counts(
12 conn: &mut SqliteConnection,
13 workspace_id: &WorkspaceId,
14) -> Result<WorkspaceTaskCounts> {
15 let visible =
16 sqlx::query_scalar("SELECT count(*) FROM tasks WHERE workspace_id = ? AND deleted = 0")
17 .bind(workspace_id)
18 .fetch_one(&mut *conn)
19 .await?;
20 let total = sqlx::query_scalar("SELECT count(*) FROM tasks WHERE workspace_id = ?")
21 .bind(workspace_id)
22 .fetch_one(&mut *conn)
23 .await?;
24 Ok(WorkspaceTaskCounts { visible, total })
25}
26
27pub async fn unresolved_conflict_count(conn: &mut SqliteConnection) -> Result<i64> {
28 Ok(
29 sqlx::query_scalar("SELECT count(*) FROM conflicts WHERE resolved = 0")
30 .fetch_one(&mut *conn)
31 .await?,
32 )
33}