import Link from "next/link"; import { notFound } from "next/navigation"; import { db } from "@/lib/db"; import { PostCard, type PublicPost } from "@/app/components/post-card"; export const dynamic = "force-dynamic"; export default async function SourcePage({ params }: { params: Promise<{ id: string }> }) { const { id: rawId } = await params; const id = Number(rawId); const source = db.prepare("SELECT id,name,base_url FROM sources WHERE id=?").get(id) as { id: number; name: string; base_url: string } | undefined; if (!source) notFound(); const posts = db.prepare("SELECT p.*,u.username,s.name,s.base_url AS source_base_url,(SELECT count(*) FROM comments c WHERE c.post_id=p.id AND c.hidden=0) comment_count,(SELECT count(*) FROM reactions r WHERE r.post_id=p.id) reaction_count FROM posts p JOIN users u ON u.id=p.author_id LEFT JOIN sources s ON s.id=p.source_id WHERE p.source_id=? AND p.visibility='PUBLIC' AND p.hidden=0 ORDER BY COALESCE(p.remote_created_at,p.created_at) DESC LIMIT 100").all(id) as PublicPost[]; return <>
← 探索
{source.base_url} · {posts.length} 篇公開貼文
{posts.map((post) =>