1use crate::backend::TaskExecutionError;
4use crate::{Task, TaskBackend, TaskId};
5
6#[derive(Debug, Clone)]
8pub struct QueueConfig {
9 pub name: String,
11 pub max_retries: u32,
13}
14
15impl QueueConfig {
16 pub fn new(name: String) -> Self {
18 Self {
19 name,
20 max_retries: 3,
21 }
22 }
23}
24
25impl Default for QueueConfig {
26 fn default() -> Self {
27 Self::new("default".to_string())
28 }
29}
30
31pub struct TaskQueue;
33
34impl TaskQueue {
35 pub fn new() -> Self {
37 Self
38 }
39
40 pub fn with_config(_config: QueueConfig) -> Self {
42 Self
43 }
44
45 pub async fn enqueue(
47 &self,
48 task: Box<dyn Task>,
49 backend: &dyn TaskBackend,
50 ) -> Result<TaskId, TaskExecutionError> {
51 backend.enqueue(task).await
52 }
53}
54
55impl Default for TaskQueue {
56 fn default() -> Self {
57 Self::new()
58 }
59}