import { NextRequest } from 'next/server';
import { apiHandler, ok } from '@/lib/utils/api';
import { questionService } from '@/lib/services/question.service';
import { createQuestionSchema } from '@/lib/validators';
import { requireAuth } from '@/lib/auth/session';

// GET /api/questions?view=recent|popular|unanswered
export async function GET(req: NextRequest) {
  return apiHandler(async () => {
    await requireAuth();
    const view = req.nextUrl.searchParams.get('view') ?? 'recent';
    let data;
    if (view === 'popular') data = await questionService.mostViewed();
    else if (view === 'unanswered') data = await questionService.unanswered();
    else data = await questionService.recent();
    return ok(data);
  });
}

export async function POST(req: NextRequest) {
  return apiHandler(async () => {
    const user = await requireAuth();
    const body = await req.json();
    const input = createQuestionSchema.parse(body);
    const created = await questionService.create(user.userId, input);
    return ok(created, 201);
  });
}
