Refactor posts parsing and begin add tags

This commit is contained in:
Florian RICHER 2024-01-06 21:13:10 +01:00
parent 9cd7029ede
commit 51f34eb290
13 changed files with 146 additions and 282 deletions

View file

@ -10,23 +10,38 @@ use crate::app::{
#[server]
pub async fn get_posts() -> Result<Vec<Post>, ServerFnError> {
let posts = Post::get_all("posts")
.map_err(|e| ServerFnError::ServerError(e.to_string()))?;
Ok(posts)
leptos_actix::extract(
|data: actix_web::web::Data<crate::app::models::Data>| async move {
let data = data.into_inner();
data.posts
.iter()
.map(|post| {
Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
}
})
.collect::<Vec<_>, >()
},
).await
}
#[server]
pub async fn get_post(
slug: String
) -> Result<Post, ServerFnError> {
let posts = Post::get_all("posts")
.map_err(|e| ServerFnError::ServerError(e.to_string()))?;
let post = posts.into_iter().find(|post| post.slug == slug)
.ok_or(ServerFnError::ServerError("Post not found".to_string()))?;
Ok(post)
leptos_actix::extract(
|data: actix_web::web::Data<crate::app::models::Data>| async move {
let data = data.into_inner();
data.posts_by_slug.get(&slug)
.and_then(|post| Some(Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
}))
},
)
.await
.and_then(|post| post.ok_or_else(|| ServerFnError::ServerError("Post not found".to_string())))
}
#[component]
@ -37,7 +52,7 @@ pub fn PostList() -> impl IntoView {
posts.and_then(|posts| {
posts.iter()
.map(|post| view! {
<a href=format!("posts/{}", post.slug.clone())>
<a href=format!("posts/{}", post.metadata.slug.clone())>
<img src={post.metadata.image_path.clone()} alt=format!("Image {}", post.metadata.title)/>
{