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

export async function GET(request: NextRequest) {
  try {
    const session = await getSession(request.cookies.get('scriba.access_token')?.value);

    if (!session) {
      return NextResponse.json({ authenticated: false }, { status: 401 });
    }

    const companyTier = session.user.companyId
      ? await db.query.companies.findFirst({
          where: eq(schema.companies.id, session.user.companyId),
          columns: { package: true },
        }).then((company) => company?.package ?? null)
      : null;

    return NextResponse.json({
      authenticated: true,
      user: {
        id: session.user.id,
        email: session.user.email,
        name: session.user.name,
        role: session.user.role,
        tier: companyTier ?? session.user.tier,
        companyId: session.user.companyId,
        isOwner: session.user.isOwner,
      }
    });
  } catch (error) {
    console.error('Session check error:', error);
    return NextResponse.json({ authenticated: false }, { status: 401 });
  }
}
