0b63d8ff56
Introduces a new `/web/cases/bulk` endpoint to handle multiple case actions simultaneously. This change adds the following: - A new `bulk` module for handling bulk operations. - The `handle_bulk_action` function in `bulk.rs` to dispatch to specific actions. - `bulk_analyze` and `bulk_delete` functions to process the actions. - Updates `Cargo.toml` and `Cargo.lock` to include necessary dependencies: `form_urlencoded`, `serde_core`, `serde_html_form`, and `serde_path_to_error`. - Modified `axum-extra` features to include `form`. - Adds checks for deleted cases in `collect_pending` for both analysis and transcription recovery. - Renames and modifies `handle_close_case` to `handle_analyze_case` in `case_actions.rs` to better reflect its functionality. - Adds a new `handle_delete_case` and `handle_undo_delete` to `case_actions.rs`. - Updates `my_cases.html` and `case_detail.html` to support bulk actions, including checkboxes, a bulk action bar, and an "Undo last delete" feature. - Modifies `handle_audio` and `scan_cases` in `web.rs` to respect delete markers. - Updates `analyze_test.rs` with new request builders for analyze and delete actions.
47 lines
1.4 KiB
Rust
47 lines
1.4 KiB
Rust
mod bulk;
|
|
mod case_actions;
|
|
mod debug;
|
|
mod health;
|
|
mod login;
|
|
mod upload;
|
|
pub(crate) mod user_web;
|
|
pub(crate) mod web;
|
|
|
|
use axum::routing::{get, post};
|
|
use axum::Router;
|
|
|
|
use crate::AppState;
|
|
|
|
pub fn api_router() -> Router<AppState> {
|
|
Router::new()
|
|
.route("/api/health", get(health::handle_health))
|
|
.route("/api/debug/whoami", get(debug::handle_whoami))
|
|
.route("/api/upload", post(upload::handle_upload))
|
|
.route("/web/login", get(login::handle_login_page).post(login::handle_login_submit))
|
|
.route("/web/logout", post(login::handle_logout))
|
|
.route("/web/cases", get(user_web::handle_my_cases))
|
|
.route("/web/cases/{case_id}", get(user_web::handle_case_detail))
|
|
.route(
|
|
"/web/cases/{case_id}/analyze",
|
|
post(case_actions::handle_analyze_case),
|
|
)
|
|
.route(
|
|
"/web/cases/{case_id}/delete",
|
|
post(case_actions::handle_delete_case),
|
|
)
|
|
.route(
|
|
"/web/cases/undo-delete",
|
|
post(case_actions::handle_undo_delete),
|
|
)
|
|
.route("/web/cases/bulk", post(bulk::handle_bulk_action))
|
|
.route(
|
|
"/web/cases/{case_id}/document",
|
|
get(case_actions::handle_document_view),
|
|
)
|
|
.route("/web/", get(web::handle_case_list))
|
|
.route(
|
|
"/web/audio/{user}/{case_id}/{filename}",
|
|
get(web::handle_audio),
|
|
)
|
|
}
|