import { NextResponse } from 'next/server';
import { eq } from 'drizzle-orm';

import { withAuth } from '@/lib/api/helpers';
import { db } from '@/lib/db';
import { userPortRoles, userProfiles } from '@/lib/db/schema';
import { errorResponse } from '@/lib/errors';

export const GET = withAuth(async (_req, ctx) => {
  try {
    const rows = await db
      .select({
        id: userPortRoles.userId,
        displayName: userProfiles.displayName,
      })
      .from(userPortRoles)
      .innerJoin(userProfiles, eq(userPortRoles.userId, userProfiles.userId))
      .where(eq(userPortRoles.portId, ctx.portId))
      .orderBy(userProfiles.displayName);

    return NextResponse.json({ data: rows });
  } catch (error) {
    return errorResponse(error);
  }
});
