Refacto get_root_folder_read_library_items method.

This commit is contained in:
Florian THIERRY
2026-07-14 22:16:37 +02:00
parent beb0134dfc
commit 6c105ac757
2 changed files with 28 additions and 33 deletions
+24 -33
View File
@@ -1,10 +1,11 @@
use lumiere_domain::video::error::VideoError;
use lumiere_domain::video::model::library_item::{LibraryItem, LibraryRawItem};
use lumiere_domain::video::model::library_item::{LibraryItem, LibraryItemType, LibraryRawItem};
use lumiere_domain::video::model::video::Video;
use lumiere_domain::video::port::VideoPort;
use uuid::Uuid;
use std::env;
use std::fs;
use std::fs::DirEntry;
#[derive(Clone)]
pub struct VideoAdapter {
@@ -17,38 +18,28 @@ impl VideoAdapter {
}
fn get_root_folder_read_library_items(&self) -> Result<Vec<LibraryRawItem>, VideoError> {
// Get the root_folder path from environment variable
let root_folder = env::var("ROOT_FOLDER").map_err(|_| VideoError::FolderBrowsingTechnicalIssue)?;
// List all elements inside this folder on the file system
let entries = fs::read_dir(root_folder)
.map_err(|e| VideoError::FolderBrowsingTechnicalIssue)?;
// Map all those elements into ReadLibraryItem objects
let mut items: Vec<LibraryRawItem> = Vec::new();
for entry in entries {
let entry = entry.map_err(|e| VideoError::FolderBrowsingTechnicalIssue)?;
let path = entry.path();
// Determine if it's a file or directory
let is_dir = path.is_dir();
let item_type = if is_dir {
lumiere_domain::video::model::library_item::LibraryItemType::FOLDER
} else {
lumiere_domain::video::model::library_item::LibraryItemType::VIDEO
};
// Create ReadLibraryItem with None for ID (will be generated later)
let item = LibraryRawItem {
id: None,
name: entry.file_name().to_string_lossy().into_owned(),
r#type: item_type,
};
items.push(item);
}
Ok(items)
let root_folder_files = fs::read_dir(root_folder)
.map_err(|_| VideoError::FolderBrowsingTechnicalIssue)?;
root_folder_files.into_iter()
.map(|file_entry|
file_entry.map_err(|_| VideoError::FolderBrowsingTechnicalIssue)
.and_then(Self::map_file_into_library_raw_item)
)
.collect()
}
fn map_file_into_library_raw_item(file: DirEntry) -> Result<LibraryRawItem, VideoError> {
let item_type = if file.path().is_dir() {
LibraryItemType::FOLDER
} else {
LibraryItemType::VIDEO
};
let library_raw_item = LibraryRawItem::new(None, file.file_name().to_string_lossy().into_owned(), item_type);
Ok(library_raw_item)
}
fn get_all_library_items_from_db(&self) -> Result<Vec<LibraryRawItem>, VideoError> {
@@ -75,7 +66,7 @@ impl VideoPort for VideoAdapter {
let db_items = self.get_all_library_items_from_db()?;
let merged = Self::merge_item_lists(file_system_items, db_items);
Ok(merged)
}