taskflow_rs/storage/
traits.rs1use 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}