import { prisma } from "@pmap/database";
import { ok, fail } from "../_lib";

export async function GET(request: Request) {
  try {
    const sessions = await prisma.session.findMany({
      where: { published: true, cancelled: false },
      include: { room: true, track: true, speakers: { include: { speaker: true } } },
      orderBy: [{ startsAt: "asc" }, { displayOrder: "asc" }],
      take: 100
    });
    return ok(request, sessions.map((session) => ({
      id: session.id,
      title: session.title,
      type: session.sessionType,
      startsAt: session.startsAt.toISOString(),
      endsAt: session.endsAt.toISOString(),
      capacity: session.capacity,
      room: session.room?.name,
      track: session.track?.name,
      speakers: session.speakers.map((link) => link.speaker.fullName)
    })));
  } catch (error) {
    return fail(request, "SESSIONS_UNAVAILABLE", "Sessions could not be loaded.", 500, error instanceof Error ? error.message : error);
  }
}
