From 9aeb649225239c035cc20b3ce5ba6c012c26be3e Mon Sep 17 00:00:00 2001 From: mzaxd Date: Tue, 27 Jan 2026 21:35:54 +0800 Subject: [PATCH] feat: add AI event data fetching functions --- src/hooks/useAIEvents.ts | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/hooks/useAIEvents.ts diff --git a/src/hooks/useAIEvents.ts b/src/hooks/useAIEvents.ts new file mode 100644 index 0000000..97121bd --- /dev/null +++ b/src/hooks/useAIEvents.ts @@ -0,0 +1,46 @@ +import { prisma } from '@/lib/prisma'; + +export async function getAIEvents(options?: { + year?: number; + limit?: number; + offset?: number; +}) { + const where = options?.year + ? { + eventDate: { + gte: new Date(`${options.year}-01-01T00:00:00Z`), + lte: new Date(`${options.year}-12-31T23:59:59Z`), + }, + } + : undefined; + + const events = await prisma.aIEvent.findMany({ + where, + orderBy: { eventDate: 'desc' }, + take: options?.limit || 100, + skip: options?.offset || 0, + }); + + return events; +} + +export async function getAIEventBySlug(slug: string) { + // 暂不实现,后续如需要详细页面时添加 + return null; +} + +export async function getAllAIEventYears() { + const events = await prisma.aIEvent.findMany({ + select: { + eventDate: true, + }, + orderBy: { eventDate: 'desc' }, + }); + + const years = new Set(); + events.forEach(event => { + years.add(new Date(event.eventDate).getFullYear()); + }); + + return Array.from(years).sort((a, b) => b - a); +}