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
@@ -21,6 +21,10 @@ pub struct LibraryRawItem {
pub r#type: LibraryItemType, pub r#type: LibraryItemType,
} }
impl LibraryRawItem { impl LibraryRawItem {
pub fn new(id: Option<Uuid>, name: String, r#type: LibraryItemType) -> Self {
Self { id, name, r#type }
}
pub fn map_to_library_item(&self) -> LibraryItem { pub fn map_to_library_item(&self) -> LibraryItem {
LibraryItem { LibraryItem {
id: self.id.unwrap_or(Uuid::new_v4()), id: self.id.unwrap_or(Uuid::new_v4()),
+19 -28
View File
@@ -1,10 +1,11 @@
use lumiere_domain::video::error::VideoError; 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::model::video::Video;
use lumiere_domain::video::port::VideoPort; use lumiere_domain::video::port::VideoPort;
use uuid::Uuid; use uuid::Uuid;
use std::env; use std::env;
use std::fs; use std::fs;
use std::fs::DirEntry;
#[derive(Clone)] #[derive(Clone)]
pub struct VideoAdapter { pub struct VideoAdapter {
@@ -17,38 +18,28 @@ impl VideoAdapter {
} }
fn get_root_folder_read_library_items(&self) -> Result<Vec<LibraryRawItem>, VideoError> { 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)?; let root_folder = env::var("ROOT_FOLDER").map_err(|_| VideoError::FolderBrowsingTechnicalIssue)?;
// List all elements inside this folder on the file system let root_folder_files = fs::read_dir(root_folder)
let entries = fs::read_dir(root_folder) .map_err(|_| VideoError::FolderBrowsingTechnicalIssue)?;
.map_err(|e| VideoError::FolderBrowsingTechnicalIssue)?;
// Map all those elements into ReadLibraryItem objects root_folder_files.into_iter()
let mut items: Vec<LibraryRawItem> = Vec::new(); .map(|file_entry|
for entry in entries { file_entry.map_err(|_| VideoError::FolderBrowsingTechnicalIssue)
let entry = entry.map_err(|e| VideoError::FolderBrowsingTechnicalIssue)?; .and_then(Self::map_file_into_library_raw_item)
let path = entry.path(); )
.collect()
}
// Determine if it's a file or directory fn map_file_into_library_raw_item(file: DirEntry) -> Result<LibraryRawItem, VideoError> {
let is_dir = path.is_dir(); let item_type = if file.path().is_dir() {
let item_type = if is_dir { LibraryItemType::FOLDER
lumiere_domain::video::model::library_item::LibraryItemType::FOLDER } else {
} else { LibraryItemType::VIDEO
lumiere_domain::video::model::library_item::LibraryItemType::VIDEO };
};
// Create ReadLibraryItem with None for ID (will be generated later) let library_raw_item = LibraryRawItem::new(None, file.file_name().to_string_lossy().into_owned(), item_type);
let item = LibraryRawItem { Ok(library_raw_item)
id: None,
name: entry.file_name().to_string_lossy().into_owned(),
r#type: item_type,
};
items.push(item);
}
Ok(items)
} }
fn get_all_library_items_from_db(&self) -> Result<Vec<LibraryRawItem>, VideoError> { fn get_all_library_items_from_db(&self) -> Result<Vec<LibraryRawItem>, VideoError> {