use crate::posts::abstractions::repo::PostRepo; use crate::posts::fs_post::FsPost; use std::{fs, path::PathBuf}; pub struct FsPostRepo { dir: PathBuf, } impl FsPostRepo { pub fn with_dir(path: impl Into) -> Self { Self { dir: path.into() } } } impl PostRepo for FsPostRepo { fn load(&self) -> impl IntoIterator { let files = fs::read_dir(&self.dir).unwrap(); files .flatten() .filter(|d| !d.file_name().to_string_lossy().starts_with('.')) .map(|d| FsPost::with_path(d.path())) } }