Skip to main content

oxanus_web/
lib.rs

1mod error;
2mod filters;
3mod handlers;
4mod templates;
5
6use axum::{
7    Router,
8    extract::Extension,
9    routing::{get, post},
10};
11
12const JOBS_PER_PAGE: usize = 50;
13
14#[derive(Clone)]
15pub struct OxanusWebState {
16    pub storage: oxanus::Storage,
17    pub catalog: oxanus::Catalog,
18    pub base_path: String,
19}
20
21pub fn router(state: OxanusWebState) -> Router {
22    Router::new()
23        .route("/", get(handlers::dashboard))
24        .route("/busy", get(handlers::busy))
25        .route("/queues", get(handlers::queues_list))
26        .route("/cron", get(handlers::cron_jobs))
27        .route("/scheduled", get(handlers::scheduled_jobs))
28        .route("/dead", get(handlers::dead_jobs))
29        .route("/retries", get(handlers::retry_jobs))
30        .route("/queues/{queue_key}", get(handlers::queue_detail))
31        .route("/queues/{queue_key}/wipe", post(handlers::wipe_queue))
32        .route(
33            "/queues/{queue_key}/jobs/{job_id}/delete",
34            post(handlers::delete_job),
35        )
36        .layer(Extension(state))
37}