import { useLoaderData, Link } from "react-router"; import type { Route } from "./+types/events.$id"; import { getEvent } from "~/lib/db.server"; export async function loader({ params }: Route.LoaderArgs) { const id = parseInt(params.id, 10); if (isNaN(id)) throw new Response("Not Found", { status: 404 }); const event = getEvent(id); if (!event) throw new Response("Not Found", { status: 404 }); return { event }; } export default function EventDetail() { const { event } = useLoaderData(); return (
🎸 東京ライブハウス
← イベント一覧に戻る
{event.image_url && ( {event.title} )}

{event.title}

{event.artist && (

{event.artist}

)}
{event.venue_name}
{event.open_time && } {event.start_time && } {event.price && } {event.venue_area && }
{event.description && (

{event.description}

)}
{event.ticket_url && ( チケット購入 )} {event.source_url && ( 詳細ページ )} {event.venue_url && ( 会場サイト )}

最終取得: {event.fetched_at}

); } function Detail({ label, value }: { label: string; value: string }) { return (
{label}
{value}
); } function formatDate(iso: string): string { const [y, m, d] = iso.split("-"); const days = ["日", "月", "火", "水", "木", "金", "土"]; const day = days[new Date(iso).getDay()]; return `${y}年${m}月${d}日(${day})`; }