34 lines
837 B
Rust
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"
|
|
}
|