use super::parse::{ProgressInfo, TaskItem, TasksParseResult};
use crate::errors::DomainResult;
pub trait TaskRepository {
fn load_tasks(&self, change_id: &str) -> DomainResult<TasksParseResult>;
fn get_progress(&self, change_id: &str) -> DomainResult<ProgressInfo> {
let result = self.load_tasks(change_id)?;
Ok(result.progress)
}
fn get_task_counts(&self, change_id: &str) -> DomainResult<(u32, u32)> {
let progress = self.get_progress(change_id)?;
Ok((progress.complete as u32, progress.total as u32))
}
fn has_tasks(&self, change_id: &str) -> DomainResult<bool> {
let progress = self.get_progress(change_id)?;
Ok(progress.total > 0)
}
fn get_tasks(&self, change_id: &str) -> DomainResult<Vec<TaskItem>> {
let result = self.load_tasks(change_id)?;
Ok(result.tasks)
}
}