BLOG-45 fix: fixed post info order from backend
Some checks failed
Frontend CI / build (push) Failing after 50s
Some checks failed
Frontend CI / build (push) Failing after 50s
This commit is contained in:
parent
901d367d9d
commit
25e9e470a6
@ -68,21 +68,23 @@ impl PostDbService for PostDbServiceImpl {
|
|||||||
|
|
||||||
let mut post_info_mappers_map = HashMap::<i32, PostInfoMapper>::new();
|
let mut post_info_mappers_map = HashMap::<i32, PostInfoMapper>::new();
|
||||||
|
|
||||||
for record in records {
|
for record in &records {
|
||||||
let post_info = post_info_mappers_map
|
let post_info = post_info_mappers_map
|
||||||
.entry(record.post_id)
|
.entry(record.post_id)
|
||||||
.or_insert_with(|| PostInfoMapper {
|
.or_insert_with(|| PostInfoMapper {
|
||||||
id: record.post_id,
|
id: record.post_id,
|
||||||
title: record.title,
|
title: record.title.clone(),
|
||||||
description: record.description,
|
description: record.description.clone(),
|
||||||
preview_image_url: record.preview_image_url,
|
preview_image_url: record.preview_image_url.clone(),
|
||||||
labels: Vec::new(),
|
labels: Vec::new(),
|
||||||
published_time: record.published_time,
|
published_time: record.published_time,
|
||||||
});
|
});
|
||||||
|
|
||||||
if let (Some(label_id), Some(label_name), Some(label_color)) =
|
if let (Some(label_id), Some(label_name), Some(label_color)) = (
|
||||||
(record.label_id, record.label_name, record.label_color)
|
record.label_id,
|
||||||
{
|
record.label_name.clone(),
|
||||||
|
record.label_color,
|
||||||
|
) {
|
||||||
post_info.labels.push(LabelMapper {
|
post_info.labels.push(LabelMapper {
|
||||||
id: label_id,
|
id: label_id,
|
||||||
name: label_name,
|
name: label_name,
|
||||||
@ -93,7 +95,14 @@ impl PostDbService for PostDbServiceImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(post_info_mappers_map.into_values().collect())
|
let mut ordered_posts = Vec::new();
|
||||||
|
for record in &records {
|
||||||
|
if let Some(post_info) = post_info_mappers_map.remove(&record.post_id) {
|
||||||
|
ordered_posts.push(post_info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(ordered_posts)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn get_full_post(&self, id: i32) -> Result<PostMapper, PostError> {
|
async fn get_full_post(&self, id: i32) -> Result<PostMapper, PostError> {
|
||||||
@ -135,25 +144,27 @@ impl PostDbService for PostDbServiceImpl {
|
|||||||
|
|
||||||
let mut post_mappers_map = HashMap::<i32, PostMapper>::new();
|
let mut post_mappers_map = HashMap::<i32, PostMapper>::new();
|
||||||
|
|
||||||
for record in records {
|
for record in &records {
|
||||||
let post = post_mappers_map
|
let post = post_mappers_map
|
||||||
.entry(record.post_id)
|
.entry(record.post_id)
|
||||||
.or_insert_with(|| PostMapper {
|
.or_insert_with(|| PostMapper {
|
||||||
id: record.post_id,
|
id: record.post_id,
|
||||||
info: PostInfoMapper {
|
info: PostInfoMapper {
|
||||||
id: record.post_id,
|
id: record.post_id,
|
||||||
title: record.title,
|
title: record.title.clone(),
|
||||||
description: record.description,
|
description: record.description.clone(),
|
||||||
preview_image_url: record.preview_image_url,
|
preview_image_url: record.preview_image_url.clone(),
|
||||||
labels: Vec::new(),
|
labels: Vec::new(),
|
||||||
published_time: record.published_time,
|
published_time: record.published_time,
|
||||||
},
|
},
|
||||||
content: record.content,
|
content: record.content.clone(),
|
||||||
});
|
});
|
||||||
|
|
||||||
if let (Some(label_id), Some(label_name), Some(label_color)) =
|
if let (Some(label_id), Some(label_name), Some(label_color)) = (
|
||||||
(record.label_id, record.label_name, record.label_color)
|
record.label_id,
|
||||||
{
|
record.label_name.clone(),
|
||||||
|
record.label_color,
|
||||||
|
) {
|
||||||
post.info.labels.push(LabelMapper {
|
post.info.labels.push(LabelMapper {
|
||||||
id: label_id,
|
id: label_id,
|
||||||
name: label_name,
|
name: label_name,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user