Skip to main content

aven_core/query/
doctor.rs

1use 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}