/*
 * @Author: donghao donghao@supervision.ltd
 * @Date: 2024-04-11 14:13:34
 * @LastEditors: donghao donghao@supervision.ltd
 * @LastEditTime: 2024-05-06 13:55:01
 * @FilePath: \general-ai-manage\mock\model.ts
 * @Description: mock 模型 api
 */

/**模型管理模块 mock */
import {
  mockGetGroupBaseModelListData,
  mockGetModelListData,
  mockGetModelRuntimeLibFilesListData,
  mockGetModelRuntimeLibListData,
  mockGetModelVersionListData,
} from './pools/modelData';
import { successMockApiProps } from './typing';
import { fetchCurrPageByList, fetchMockSuccessFullByOther } from './utils/apiMock';
export default {
  // 模型列表分页
  'GET /api/model/list': async (req: Request, res: Response) => {
    // get 使用 query 读取参数
    const { pageNo, pageSize } = req.query;
    const resData: successMockApiProps = {
      ...fetchCurrPageByList({
        ...mockGetModelListData,
        data: { ...mockGetModelListData.data, pageNo, pageSize: pageSize || 10 },
      }),
    };
    res.json(resData);
  },
  // 模型详情
  'GET /api/model/detail': async (req: Request, res: Response) => {
    // get 使用 query 读取参数
    const { id } = req.query;
    let finalData = {};
    mockGetModelListData.data.data.forEach((item) => {
      if (item.id === Number(id)) {
        finalData = item;
        // break;
      }
    });
    const resData: successMockApiProps = fetchMockSuccessFullByOther({
      data: finalData,
    });
    res.json(resData);
  },

  // 模型版本列表
  'GET /api/model/versions/list': async (req: Request, res: Response) => {
    // get 使用 query 读取参数
    const { pageNo, pageSize } = req.query;
    const resData: successMockApiProps = {
      ...fetchCurrPageByList({
        ...mockGetModelVersionListData,
        data: { ...mockGetModelVersionListData.data, pageNo, pageSize: pageSize || 10 },
      }),
    };
    res.json(resData);
  },

  // 模型运行库列表分页
  'GET /api/model/runtimeLib/list': async (req: Request, res: Response) => {
    // get 使用 query 读取参数
    const { pageNo, pageSize } = req.query;
    const resData: successMockApiProps = {
      ...fetchCurrPageByList({
        ...mockGetModelRuntimeLibListData,
        data: { ...mockGetModelRuntimeLibListData.data, pageNo, pageSize: pageSize || 10 },
      }),
    };
    res.json(resData);
  },
  // 模型运行库文件列表
  'GET /api/model/runtimeLib/filesList': async (req: Request, res: Response) => {
    const resData: successMockApiProps = fetchMockSuccessFullByOther(
      mockGetModelRuntimeLibFilesListData,
    );
    res.json(resData);
  },

  // 节点下基础模型列表
  'GET /api/model/groupBaseModel/list': async (req: Request, res: Response) => {
    const resData: successMockApiProps = fetchMockSuccessFullByOther(mockGetGroupBaseModelListData);
    res.json(resData);
  },
};