import { prisma } from "@rallly/database";

export type EventPeriod = "upcoming" | "past";

/**
 * List upcoming events for a user grouped by day
 * @param userId
 */
export async function listScheduledEvents({
  userId,
  period,
}: {
  userId: string;
  period: EventPeriod;
}) {
  const events = await prisma.event.findMany({
    select: {
      id: true,
      title: true,
      start: true,
      duration: true,
      poll: {
        select: {
          timeZone: true,
          participants: {
            select: {
              id: true,
              name: true,
            },
          },
        },
      },
    },
    where: {
      userId,
      start: period === "upcoming" ? { gte: new Date() } : { lt: new Date() },
    },
    orderBy: [
      {
        start: "desc",
      },
      {
        title: "asc",
      },
    ],
  });

  return events;
}