import { NextResponse } from 'next/server';
import { getDatasetsById, getDatasetsCounts, getNavigationItems, updateDatasetMetadata } from '@/lib/db/datasets';

/**
 * 获取项目的所有数据集
 */
export async function GET(request, { params }) {
  try {
    const { projectId, datasetId } = params;
    // 验证项目ID
    if (!projectId) {
      return NextResponse.json({ error: '项目ID不能为空' }, { status: 400 });
    }
    if (!datasetId) {
      return NextResponse.json({ error: '数据集ID不能为空' }, { status: 400 });
    }
    const { searchParams } = new URL(request.url);
    const operateType = searchParams.get('operateType');
    if (operateType !== null) {
      const data = await getNavigationItems(projectId, datasetId, operateType);
      return NextResponse.json(data);
    }
    const datasets = await getDatasetsById(datasetId);
    let counts = await getDatasetsCounts(projectId);

    return NextResponse.json({ datasets, ...counts });
  } catch (error) {
    console.error('获取数据集详情失败:', String(error));
    return NextResponse.json(
      {
        error: error.message || '获取数据集详情失败'
      },
      { status: 500 }
    );
  }
}

/**
 * 更新数据集元数据（评分、标签、备注）
 */
export async function PATCH(request, { params }) {
  try {
    const { projectId, datasetId } = params;

    // 验证参数
    if (!projectId) {
      return NextResponse.json({ error: '项目ID不能为空' }, { status: 400 });
    }
    if (!datasetId) {
      return NextResponse.json({ error: '数据集ID不能为空' }, { status: 400 });
    }

    const body = await request.json();
    const { score, tags, note } = body;

    // 验证评分范围
    if (score !== undefined && (score < 0 || score > 5)) {
      return NextResponse.json({ error: '评分必须在0-5之间' }, { status: 400 });
    }

    // 验证标签格式
    if (tags !== undefined && !Array.isArray(tags)) {
      return NextResponse.json({ error: '标签必须是数组格式' }, { status: 400 });
    }

    // 更新数据集元数据
    const updatedDataset = await updateDatasetMetadata(datasetId, { score, tags, note });

    return NextResponse.json({
      success: true,
      dataset: updatedDataset
    });
  } catch (error) {
    console.error('更新数据集元数据失败:', String(error));
    return NextResponse.json(
      {
        error: error.message || '更新数据集元数据失败'
      },
      { status: 500 }
    );
  }
}
