LiveDisplayX / src / app / api / displays / route.ts
route.ts
Raw
// app/api/displays/route.ts
import { auth } from "@clerk/nextjs/server";
import prisma from "@/lib/prisma";
import { createDisplayJWT } from "@/lib/auth";

export async function POST(req: Request) {
  const { userId, orgId, orgSlug } = await auth();

  if (!userId || !orgId) {
    return new Response("Unauthorized", { status: 401 });
  }

  const { name, mode } = await req.json();

  const displayId = crypto.randomUUID();

  const display = await prisma.display.create({
    data: {
      id: displayId,
      name,
      mode,
      organizationId: orgId,
      authToken: await createDisplayJWT(displayId, orgId),
      twitchChannel: mode === "TWITCH" ? "default_channel" : null,
    },
  });

  return Response.json(display);
}

export async function GET(req: Request) {
  const { userId, orgId, orgSlug } = await auth();

  if (!userId || !orgId) {
    return new Response("Unauthorized", { status: 401 });
  }

  const displays = await prisma.display.findMany({
    where: {
      organizationId: orgId,
    },
  });

  return Response.json(displays);
}