taskflow_rs/storage/
traits.rs

1use crate::error::Result;
2use crate::task::{Task, TaskStatus};
3use async_trait::async_trait;
4
5#[async_trait]
6pub trait TaskStorage: Send + Sync {
7    async fn save_task(&self, task: &Task) -> Result<()>;
8    async fn get_task(&self, task_id: &str) -> Result<Option<Task>>;
9    async fn update_task_status(&self, task_id: &str, status: TaskStatus) -> Result<()>;
10    async fn list_tasks_by_status(&self, status: TaskStatus) -> Result<Vec<Task>>;
11    async fn list_tasks_by_worker(&self, worker_id: &str) -> Result<Vec<Task>>;
12    async fn delete_task(&self, task_id: &str) -> Result<()>;
13    async fn get_pending_tasks(&self, limit: usize) -> Result<Vec<Task>>;
14    async fn get_tasks_by_tags(&self, tags: &[String]) -> Result<Vec<Task>>;
15}