import { NextRequest, NextResponse } from 'next/server';
import { getSession } from '@/lib/auth';
import { db, schema } from '@/lib/db';
import { eq, and } from 'drizzle-orm';

export async function GET(request: NextRequest) {
  const session = await getSession(request.cookies.get('scriba.access_token')?.value);
  if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });

  const account = await db.query.accounts.findFirst({
    where: and(
      eq(schema.accounts.userId, session.user.id),
      eq(schema.accounts.providerId, 'github')
    ),
  });

  if (!account?.accessToken) {
    return NextResponse.json({ connected: false, orgs: [] });
  }

  const res = await fetch('https://api.github.com/user/orgs?per_page=100', {
    headers: {
      Authorization: `Bearer ${account.accessToken}`,
      Accept: 'application/vnd.github+json',
      'X-GitHub-Api-Version': '2022-11-28',
    },
  });

  if (!res.ok) return NextResponse.json({ connected: true, orgs: [] });

  const data = await res.json() as any[];
  const orgs = data.map((o: any) => ({
    login: o.login,
    avatarUrl: o.avatar_url,
    description: o.description,
    url: o.html_url,
  }));

  return NextResponse.json({ connected: true, orgs });
}
