import { request } from "@/components/service/index";
import {
  ApiProject,
  ProjectAuthority,
  ProjectSearch,
} from "@/components/models/project/Project";

export const ProjectService = {
  // ID로 프로젝트 조회
  fetchProjectById: (id: number) => {
    return request.get(`/api/projects/${id}`, {});
  },
  // 프로젝트 수정
  update: (id: number, payload: ApiProject) => {
    return request.put(`/api/projects/${id}`, payload);
  },
  // 프로젝트 삭제
  delete: (id: number) => {
    return request.delete(`/api/projects/${id}`, {});
  },
  // 전체 프로젝트 목록 조회
  search: () => {
    return request.get("/api/projects", {});
  },
  // 프로젝트 생성
  add: (payload: ApiProject) => {
    return request.post("/api/projects", payload);
  },
  // 검색 및 페이지네이션 프로젝트 목록 조회
  searchProjects: (params: ProjectSearch) => {
    return request.get("/api/projects/search", params);
  },
  // ----------------------------------------------------------------------

  // 프로젝트 권한
  projectAuthority: (projectId: number, payload: ProjectAuthority) => {
    return request.post(`/api/projects/${projectId}/users`, payload);
  },

  deleteProjectAuthority: (projectId: number, userId: number) => {
    return request.delete(
      `/api/projects/${projectId}/users/${userId}/permissions`,
      {},
    );
  },
  userProjectAuthority: (id: number) => {
    return request.get(`/api/projects/users/${id}/projects`, {});
  },
};
