blob: 13f797b9bbe5f4699796fffc1e9214a37b6933ca (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use crate::posts::abstractions::post::Post;
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<PathBuf>) -> Self {
Self { dir: path.into() }
}
}
impl PostRepo for FsPostRepo {
fn load(&self) -> impl IntoIterator<Item = FsPost> {
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()))
}
fn by_id(&self, post_id: &str) -> FsPost {
let posts = self.load();
posts
.into_iter()
.find(|p| p.get_title() == post_id)
.unwrap()
}
}
|