import httpClient from '@/utils/http';

import {
  ControllerResponse,
  ModelCreateSubjectRequest,
  ModelSubjectResponse,
  ModelUpdateSubjectRequest,
  SubjectsListParams1TypeEnum
} from './data-contracts';
export default {
  /**
   * @description 创建新的科目。支持三种类型：单科、综合科、选科。综合科需要指定包含的单科ID列表。如果不指定school_id，系统会自动使用当前用户绑定的第一个学校
   */
  subjectsCreate: (subject: ModelCreateSubjectRequest) => {
    return httpClient.post<
      ControllerResponse & {
        /** 科目详细信息响应结构，包含完整的科目信息和关联数据 */
        data?: ModelSubjectResponse;
      }
    >(`/subjects`, { params: subject });
  },
  /**
   * @description 根据当前用户绑定的学校获取科目列表。
   */
  subjectsList: (query: {
    /** 科目类型筛选：传'选科'时只返回选考科目，其他情况返回非选考科目 */
    type?: SubjectsListParams1TypeEnum;
  }) => {
    return httpClient.get<
      ControllerResponse & {
        data?: ModelSubjectResponse[];
      }
    >(`/subjects`, { query: query });
  },
  /**
   * @description 根据ID更新科目信息。支持部分字段更新，未传递的字段保持原值不变。综合科可以更新包含的单科列表
   */
  subjectsUpdate: (id: number, subject: ModelUpdateSubjectRequest) => {
    return httpClient.put<
      ControllerResponse & {
        /** 科目详细信息响应结构，包含完整的科目信息和关联数据 */
        data?: ModelSubjectResponse;
      }
    >(`/subjects/${id}`, { params: subject });
  },
  /**
   * @description 根据ID软删除科目。注意：固定科目不能被删除，被考试使用的科目也不能删除
   */
  subjectsDelete: (id: number) => {
    return httpClient.delete<
      ControllerResponse & {
        message?: string;
      }
    >(`/subjects/${id}`);
  }
};
