pub trait QueryTasks {
// Required methods
fn create_task(&self, task: NewTask) -> Result<Task, StorageError>;
fn get_tasks(&self) -> Result<Vec<Task>, StorageError>;
fn get_next_task(&self) -> Result<Option<Task>, StorageError>;
fn update_task(
&self,
id: i32,
attempts: i32,
last_attempted_at_ns: i64,
next_attempt_at_ns: i64,
) -> Result<Task, StorageError>;
fn delete_task(&self, id: i32) -> Result<bool, StorageError>;
}