Chunking the blog posts for the stream.

This commit is contained in:
Tom Alexander
2023-12-17 16:57:37 -05:00
parent fdf84e3d0b
commit c3482cf1e4
6 changed files with 84 additions and 10 deletions

View File

@@ -100,8 +100,30 @@ impl SiteRenderer {
//
// Steps: pass each RenderBlogStream to dust as the context to render index.html and any additional stream pages.
for blog_post in &self.blog_posts {
println!("{:?}", blog_post.get_date()?);
// Sort blog posts by date, newest first.
let sorted_blog_posts = {
let mut sorted_blog_posts: Vec<_> = self.blog_posts.iter().collect();
sorted_blog_posts
.sort_by_key(|blog_post| (blog_post.get_date(), blog_post.id.as_str()));
sorted_blog_posts.reverse();
sorted_blog_posts
};
for blog_post in &sorted_blog_posts {
if blog_post.get_date().is_none() {
return Err(format!("Blog post {} does not have a date.", blog_post.id).into());
}
}
// Group blog posts based on # of posts per page.
let stream_chunks: Vec<_> = sorted_blog_posts
.chunks(config.get_stream_entries_per_page())
.collect();
// For each group, create a RenderBlogStream.
let num_stream_pages = stream_chunks.len();
for chunk in stream_chunks {
// foo
}
Ok(())
}