import httpClient from '@/utils/http';

import {
  ControllerCreateSchoolRequest,
  ControllerResponse,
  ControllerUpdateSchoolRequest,
  ModelSchool
} from './data-contracts';
export default {
  /**
   * @description 创建新的学校
   */
  schoolsCreate: (school: ControllerCreateSchoolRequest) => {
    return httpClient.post<
      ControllerResponse & {
        data?: ModelSchool;
      }
    >(`/schools`, { params: school });
  },
  /**
   * @description 获取学校列表，支持按学校名称、代码和学阶筛选
   */
  schoolsList: (query: {
    /** 学校名称（模糊查询） */
    name?: string;
    /** 学校代码（模糊查询） */
    code?: string;
    /** 学阶筛选 */
    stage?: string;
  }) => {
    return httpClient.get<
      ControllerResponse & {
        data?: ModelSchool[];
      }
    >(`/schools`, { query: query });
  },
  /**
   * @description 获取学校列表，支持分页和按学校名称、代码和学阶筛选
   */
  listList: (query: {
    /**
     * 页码
     * @default 1
     */
    page?: number;
    /**
     * 每页数量
     * @default 10
     */
    page_size?: number;
    /** 学校名称（模糊查询） */
    name?: string;
    /** 学校代码（模糊查询） */
    code?: string;
    /** 学阶筛选 */
    stage?: string;
  }) => {
    return httpClient.get<
      ControllerResponse & {
        data?: {
          list?: ModelSchool[];
          page?: number;
          page_size?: number;
          total?: number;
        };
      }
    >(`/schools/list`, { query: query });
  },
  /**
   * @description 根据ID获取学校详情
   */
  schoolsDetail: (id: number) => {
    return httpClient.get<
      ControllerResponse & {
        data?: ModelSchool;
      }
    >(`/schools/${id}`);
  },
  /**
   * @description 根据ID更新学校信息
   */
  schoolsUpdate: (id: number, school: ControllerUpdateSchoolRequest) => {
    return httpClient.put<
      ControllerResponse & {
        data?: ModelSchool;
      }
    >(`/schools/${id}`, { params: school });
  },
  /**
   * @description 根据ID删除学校（软删除）
   */
  schoolsDelete: (id: number) => {
    return httpClient.delete<
      ControllerResponse & {
        message?: string;
      }
    >(`/schools/${id}`);
  }
};
