//! Queue worker for `empu queue:work` (and manual `cargo run --bin queue-worker`).

#![forbid(unsafe_code)]

use {{ rust_lib_name }} as _;
use purwa::AppConfig;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    dotenvy::dotenv().ok();
    purwa::init_tracing();

    let cfg = AppConfig::load()?;
    let redis_url = cfg
        .queue_redis_url()
        .ok_or("queue redis_url not configured (set [queue].redis_url or REDIS_URL)")?;

    let qcfg = purwa_queue::QueueConfig::new(redis_url, cfg.queue.name.clone());
    let queue = purwa_queue::Queue::connect(qcfg)?;

    let _ = stringify!({{ rust_lib_name }}::app::jobs);
    let worker = purwa_queue::Worker::from_inventory(&queue);

    worker.run().await?;
    Ok(())
}

