perf: read gallery hot paths from spacetime cache
This commit is contained in:
@@ -830,6 +830,48 @@ pub(crate) fn map_creation_entry_config_procedure_result(
|
||||
))
|
||||
}
|
||||
|
||||
pub(crate) fn build_creation_entry_config_record_from_rows(
|
||||
header: CreationEntryConfig,
|
||||
mut creation_types: Vec<CreationEntryTypeConfig>,
|
||||
) -> CreationEntryConfigRecord {
|
||||
creation_types.sort_by(|left, right| {
|
||||
left.sort_order
|
||||
.cmp(&right.sort_order)
|
||||
.then_with(|| left.id.cmp(&right.id))
|
||||
});
|
||||
|
||||
module_runtime::build_creation_entry_config_response(
|
||||
module_runtime::CreationEntryConfigSnapshot {
|
||||
config_id: header.config_id,
|
||||
start_card: module_runtime::CreationEntryStartCardSnapshot {
|
||||
title: header.start_title,
|
||||
description: header.start_description,
|
||||
idle_badge: header.start_idle_badge,
|
||||
busy_badge: header.start_busy_badge,
|
||||
},
|
||||
type_modal: module_runtime::CreationEntryTypeModalSnapshot {
|
||||
title: header.modal_title,
|
||||
description: header.modal_description,
|
||||
},
|
||||
creation_types: creation_types
|
||||
.into_iter()
|
||||
.map(|item| module_runtime::CreationEntryTypeSnapshot {
|
||||
id: item.id,
|
||||
title: item.title,
|
||||
subtitle: item.subtitle,
|
||||
badge: item.badge,
|
||||
image_src: item.image_src,
|
||||
visible: item.visible,
|
||||
open: item.open,
|
||||
sort_order: item.sort_order,
|
||||
updated_at_micros: item.updated_at.to_micros_since_unix_epoch(),
|
||||
})
|
||||
.collect(),
|
||||
updated_at_micros: header.updated_at.to_micros_since_unix_epoch(),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
fn map_creation_entry_config_snapshot(
|
||||
snapshot: CreationEntryConfigSnapshot,
|
||||
) -> module_runtime::CreationEntryConfigSnapshot {
|
||||
@@ -1437,20 +1479,6 @@ pub(crate) fn map_custom_world_library_detail_result(
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn map_custom_world_gallery_list_result(
|
||||
result: CustomWorldGalleryListResult,
|
||||
) -> Result<Vec<CustomWorldGalleryEntryRecord>, SpacetimeClientError> {
|
||||
if !result.ok {
|
||||
return Err(SpacetimeClientError::procedure_failed(result.error_message));
|
||||
}
|
||||
|
||||
Ok(result
|
||||
.entries
|
||||
.into_iter()
|
||||
.map(map_custom_world_gallery_entry_snapshot)
|
||||
.collect::<Result<Vec<_>, _>>()?)
|
||||
}
|
||||
|
||||
pub(crate) fn map_custom_world_library_mutation_result(
|
||||
result: CustomWorldLibraryMutationResult,
|
||||
) -> Result<CustomWorldLibraryMutationRecord, SpacetimeClientError> {
|
||||
@@ -2676,6 +2704,38 @@ pub(crate) fn map_custom_world_gallery_entry_snapshot(
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn map_custom_world_gallery_entry_row(
|
||||
row: CustomWorldGalleryEntry,
|
||||
recent_play_count_7d: u32,
|
||||
) -> CustomWorldGalleryEntryRecord {
|
||||
CustomWorldGalleryEntryRecord {
|
||||
owner_user_id: row.owner_user_id,
|
||||
profile_id: row.profile_id,
|
||||
public_work_code: row.public_work_code,
|
||||
author_public_user_code: row.author_public_user_code,
|
||||
visibility: "published".to_string(),
|
||||
published_at: Some(format_timestamp_micros(
|
||||
row.published_at.to_micros_since_unix_epoch(),
|
||||
)),
|
||||
updated_at: format_timestamp_micros(row.updated_at.to_micros_since_unix_epoch()),
|
||||
author_display_name: row.author_display_name,
|
||||
world_name: row.world_name,
|
||||
subtitle: row.subtitle,
|
||||
summary_text: row.summary_text,
|
||||
cover_image_src: row.cover_image_src,
|
||||
theme_mode: format_custom_world_theme_mode(map_custom_world_theme_mode_back(
|
||||
row.theme_mode,
|
||||
))
|
||||
.to_string(),
|
||||
playable_npc_count: row.playable_npc_count,
|
||||
landmark_count: row.landmark_count,
|
||||
play_count: row.play_count,
|
||||
remix_count: row.remix_count,
|
||||
like_count: row.like_count,
|
||||
recent_play_count_7d,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn map_custom_world_published_profile_compile_snapshot(
|
||||
snapshot: CustomWorldPublishedProfileCompileSnapshot,
|
||||
) -> Result<CustomWorldPublishedProfileCompileRecord, SpacetimeClientError> {
|
||||
|
||||
Reference in New Issue
Block a user