mirror of
https://github.com/lbr77/blog-astro.git
synced 2026-04-08 16:11:56 +00:00
38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import type { Post } from '../interfaces'
|
|
import { fetchNotionApiJson } from './api'
|
|
|
|
export async function getPostByPageId(pageId: string): Promise<Post | null> {
|
|
if (!pageId) return null
|
|
|
|
try {
|
|
const payload = await fetchNotionApiJson<{ posts?: any[] }>('/v2/posts')
|
|
const match = (payload.posts ?? []).find((post) => post.id === pageId)
|
|
if (!match) return null
|
|
|
|
const dateString =
|
|
match['Published Date'] || match.created_time || new Date().toISOString()
|
|
|
|
return {
|
|
PageId: match.id,
|
|
Title: match.Content || match.slug || 'Untitled',
|
|
Icon: null,
|
|
Cover: null,
|
|
Slug: match.slug || match.id,
|
|
Date: dateString,
|
|
Tags: Array.isArray(match.Tags)
|
|
? match.Tags.map((name: string) => ({
|
|
id: name,
|
|
name,
|
|
color: 'default',
|
|
}))
|
|
: [],
|
|
Excerpt: match.excerpt || '',
|
|
FeaturedImage: null,
|
|
Rank: Number(match.rank || 0),
|
|
}
|
|
} catch (error) {
|
|
console.error('getPostByPageId error:', error)
|
|
return null
|
|
}
|
|
}
|