diff options
Diffstat (limited to 'src/blog/post.rs')
-rw-r--r-- | src/blog/post.rs | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/blog/post.rs b/src/blog/post.rs index abe57aa..3c27690 100644 --- a/src/blog/post.rs +++ b/src/blog/post.rs @@ -1,7 +1,7 @@ use std::{cmp::Ordering, path::PathBuf}; use glob::glob; use color_eyre::eyre::{Result, Context, eyre}; -use tokio::fs; +use tokio::{fs}; use chrono::prelude::*; @@ -11,6 +11,7 @@ pub struct Post { pub front_matter: frontmatter::Data, pub body_html: String, pub date: DateTime<FixedOffset>, + pub link: String, } impl Ord for Post { @@ -46,6 +47,7 @@ async fn read_post(dir: &str, fname: PathBuf) -> Result<Post> { Ok(Post { front_matter, body_html, + link, date } ) } @@ -55,7 +57,19 @@ pub async fn load(dir: &str) -> Result<Vec<Post>> { .filter_map(Result::ok) .map(|fname| read_post(dir, fname)); - Ok(Vec::new()) + let mut result: Vec<Post> = futures::future::join_all(futs) + .await + .into_iter() + .map(Result::unwrap) + .collect(); + + if result.len() == 0 { + Err(eyre!("No posts found")) + } else { + result.sort(); + result.reverse(); + Ok(result) + } } mod frontmatter { |