diff --git a/examples/simple_worker/src/main.rs b/examples/simple_worker/src/main.rs index 0b322cc..9f39b86 100644 --- a/examples/simple_worker/src/main.rs +++ b/examples/simple_worker/src/main.rs @@ -4,7 +4,6 @@ use backie::{PgTaskStore, Queue, WorkerPool}; use diesel_async::pg::AsyncPgConnection; use diesel_async::pooled_connection::{bb8::Pool, AsyncDieselConnectionManager}; use serde::{Deserialize, Serialize}; -use std::sync::Arc; use std::time::Duration; #[derive(Clone, Debug)] @@ -134,7 +133,7 @@ async fn main() { let task2 = MyTask::new(20_000); let task3 = MyFailingTask::new(50_000); - let queue = Queue::new(Arc::new(task_store)); // or use the `queue` instance returned by the worker pool + let queue = Queue::new(task_store); // or use the `queue` instance returned by the worker pool queue.enqueue(task1).await.unwrap(); queue.enqueue(task2).await.unwrap(); queue.enqueue(task3).await.unwrap(); diff --git a/src/lib.rs b/src/lib.rs index 4be5de4..3dfd171 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,7 +26,7 @@ impl Default for RetentionMode { pub use queue::Queue; pub use runnable::BackgroundTask; pub use store::{PgTaskStore, TaskStore}; -pub use task::{CurrentTask, Task, TaskId, TaskState}; +pub use task::{CurrentTask, NewTask, Task, TaskId, TaskState}; pub use worker::Worker; pub use worker_pool::{QueueConfig, WorkerPool}; diff --git a/src/queue.rs b/src/queue.rs index 51813b7..8d0a20e 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -17,8 +17,10 @@ impl Queue where S: TaskStore + Clone, { - pub fn new(task_store: Arc) -> Self { - Queue { task_store } + pub fn new(task_store: S) -> Self { + Queue { + task_store: Arc::new(task_store), + } } pub async fn enqueue(&self, background_task: BT) -> Result<(), BackieError> diff --git a/src/worker_pool.rs b/src/worker_pool.rs index f2c45b0..7c15bac 100644 --- a/src/worker_pool.rs +++ b/src/worker_pool.rs @@ -51,14 +51,13 @@ where where A: Fn(Queue) -> AppData + Send + Sync + 'static, { - let queue_store = Arc::new(task_store); - let queue = Queue::new(queue_store.clone()); + let queue = Queue::new(task_store.clone()); let application_data_fn = { let queue = queue.clone(); move || application_data_fn(queue.clone()) }; Self { - task_store: queue_store, + task_store: Arc::new(task_store), queue, application_data_fn: Arc::new(application_data_fn), task_registry: BTreeMap::new(),