use wsb::prelude::*;
use axum::{extract::State, http::StatusCode, Json};
use super::sessions::ErrorResponse;
use crate::web::machine_web::MachineWeb;
pub async fn list_trash(
State(state): State<MachineWeb>,
) -> Result<Json<serde_json::Value>, (StatusCode, Json<ErrorResponse>)> {
let db = state.db.clone();
let sessions = tokio::task::spawn_blocking(move || db.list_trash())
.await
.unwrap_or_else(|e| Err(anyhow::anyhow!("join error: {}", e)))
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(ErrorResponse {
error: e.to_string(),
}),
)
})?;
Ok(Json(serde_json::json!({ "sessions": sessions })))
}
pub async fn empty_trash(
State(state): State<MachineWeb>,
) -> Result<Json<serde_json::Value>, (StatusCode, Json<ErrorResponse>)> {
let db = state.db.clone();
let count = tokio::task::spawn_blocking(move || db.empty_trash())
.await
.unwrap_or_else(|e| Err(anyhow::anyhow!("join error: {}", e)))
.map_err(|e| {
(
StatusCode::INTERNAL_SERVER_ERROR,
Json(ErrorResponse {
error: e.to_string(),
}),
)
})?;
Ok(Json(serde_json::json!({ "deleted": count })))
}