import { getPublicPostsPreviewBySlug } from "#server/service/posts"; import { getPublicTimelinePreviewBySlug } from "#server/service/timeline"; import { getPublicRssPreviewBySlug } from "#server/service/rss"; const PUBLIC_HUB_PREVIEW_LIMIT = 2; type PublicPostsPreview = Awaited>; type PublicTimelinePreview = Awaited< ReturnType >; type PublicRssPreview = Awaited>; export type PublicHubPayload = { modules: { posts: PublicPostsPreview; timeline: PublicTimelinePreview; reading: PublicRssPreview; }; posts: PublicPostsPreview; timeline: PublicTimelinePreview; rssItems: PublicRssPreview; }; export async function getPublicHubBySlug( publicSlug: string, ): Promise { const [posts, timeline, reading] = await Promise.all([ getPublicPostsPreviewBySlug(publicSlug), getPublicTimelinePreviewBySlug(publicSlug), getPublicRssPreviewBySlug(publicSlug), ]); return { modules: { posts: { items: posts.items.slice(0, PUBLIC_HUB_PREVIEW_LIMIT), total: posts.total, }, timeline: { items: timeline.items.slice(0, PUBLIC_HUB_PREVIEW_LIMIT), total: timeline.total, }, reading: { items: reading.items.slice(0, PUBLIC_HUB_PREVIEW_LIMIT), total: reading.total, }, }, posts, timeline, rssItems: reading, }; }