import { NextRequest, NextResponse } from 'next/server';
import connectMongoDB from '@/lib/mongodb';
import { Image } from '@/lib/models/Image';
import { IS_FRONTEND_ONLY_BUILD } from '@/lib/runtime/buildVariant';

export async function GET(request: NextRequest) {
  try {
    // Проверяем что это полная сборка (с БД)
    if (IS_FRONTEND_ONLY_BUILD) {
      return NextResponse.json(
        { error: 'Image listing not available in frontend-only mode' },
        { status: 403 }
      );
    }

    await connectMongoDB();

    const { searchParams } = new URL(request.url);
    const funnelId = searchParams.get('funnelId');
    const limit = parseInt(searchParams.get('limit') || '50');
    const page = parseInt(searchParams.get('page') || '1');

    const query = funnelId ? { funnelId } : {};

    const images = await Image.find(query)
      .select('-data') // Исключаем binary данные из списка
      .sort({ uploadedAt: -1 })
      .limit(limit)
      .skip((page - 1) * limit)
      .lean();

    const total = await Image.countDocuments(query);

    // Добавляем URL к каждому изображению
    const imagesWithUrls = images.map(image => ({
      ...image,
      url: `/api/images/${image.filename}`
    }));

    return NextResponse.json({
      images: imagesWithUrls,
      total,
      page,
      totalPages: Math.ceil(total / limit)
    });

  } catch (error) {
    console.error('Image listing error:', error);
    return NextResponse.json(
      { error: 'Internal server error' },
      { status: 500 }
    );
  }
}
