denbooru/src/handlers.rs

34 lines
837 B
Rust

use std::sync::Arc;
use std::sync::RwLock;
use crate::templates::HtmlTemplate;
use crate::templates::ListTemplate;
use crate::utils;
use axum::extract::State;
use axum::response::IntoResponse;
pub async fn list_files(
State(state): State<Arc<RwLock<Vec<utils::FileEntry>>>>,
) -> impl IntoResponse {
let files = state.read().unwrap(); // Adquire lock
let template = ListTemplate {
files: files.to_vec(),
};
HtmlTemplate(template)
}
pub async fn rescan_files(
base_path: String,
State(state): State<Arc<RwLock<Vec<utils::FileEntry>>>>,
) -> impl IntoResponse {
let new_files = utils::find_files(&base_path).expect("Error trying to refresh list");
let mut files = state.write().unwrap(); // Adquire lock
files.clear();
files.extend(new_files);
"Files rescanned successfuly"
}