ito_domain/tasks/
repository.rs1use super::parse::{ProgressInfo, TaskItem, TasksParseResult};
4use crate::errors::DomainResult;
5
6pub trait TaskRepository {
11 fn load_tasks(&self, change_id: &str) -> DomainResult<TasksParseResult>;
15
16 fn get_progress(&self, change_id: &str) -> DomainResult<ProgressInfo> {
20 let result = self.load_tasks(change_id)?;
21 Ok(result.progress)
22 }
23
24 fn get_task_counts(&self, change_id: &str) -> DomainResult<(u32, u32)> {
28 let progress = self.get_progress(change_id)?;
29 Ok((progress.complete as u32, progress.total as u32))
30 }
31
32 fn has_tasks(&self, change_id: &str) -> DomainResult<bool> {
34 let progress = self.get_progress(change_id)?;
35 Ok(progress.total > 0)
36 }
37
38 fn get_tasks(&self, change_id: &str) -> DomainResult<Vec<TaskItem>> {
40 let result = self.load_tasks(change_id)?;
41 Ok(result.tasks)
42 }
43}