diff --git a/src/data/mod.rs b/src/data/mod.rs index b5e4c97..98e40ac 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -69,6 +69,12 @@ impl FromRequest for Claims { } } +#[derive(Serialize)] +pub struct PhotosResponse<'a> { + pub photos: &'a [String], + pub dirs: &'a [String], +} + #[derive(Deserialize)] pub struct ThumbnailRequest { pub path: String, diff --git a/src/main.rs b/src/main.rs index f98f3fc..d41bf71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,9 +2,7 @@ extern crate diesel; extern crate rayon; -use crate::auth::login; use actix_web_prom::PrometheusMetrics; -use database::{DbError, DbErrorKind, FavoriteDao, SqliteFavoriteDao, SqliteUserDao, UserDao}; use futures::stream::StreamExt; use lazy_static::lazy_static; use prometheus::{self, IntGauge}; @@ -29,12 +27,12 @@ use actix_web::{ }; use notify::{watcher, DebouncedEvent, RecursiveMode, Watcher}; use rayon::prelude::*; -use serde::Serialize; -use data::{AddFavoriteRequest, MetadataResponse, ThumbnailRequest}; use log::{debug, error, info}; -use crate::data::Claims; +use crate::auth::login; +use crate::data::*; +use crate::database::*; use crate::files::{is_image_or_video, is_valid_path, list_files}; use crate::video::*; @@ -67,13 +65,13 @@ async fn list_photos(_claims: Claims, req: Query) -> impl Resp let photos = &files .iter() - .filter(|f| !f.extension().unwrap_or_default().is_empty()) + .filter(|&f| f.metadata().map_or(false, |md| md.is_file())) .map(|f| f.to_str().unwrap().to_string()) .collect::>(); let dirs = &files .iter() - .filter(|f| f.extension().unwrap_or_default().is_empty()) + .filter(|&f| f.metadata().map_or(false, |md| md.is_dir())) .map(|f| f.to_str().unwrap().to_string()) .collect::>(); @@ -84,12 +82,6 @@ async fn list_photos(_claims: Claims, req: Query) -> impl Resp } } -#[derive(Serialize)] -struct PhotosResponse<'a> { - photos: &'a [String], - dirs: &'a [String], -} - #[get("/image")] async fn get_image( _claims: Claims,