import { apiClient } from "./client"; import { ReportMaster, ReportDetail, GetReportsParams, GetReportsResponse, CreateReportRequest, UpdateReportRequest, SaveLayoutRequest, GetTemplatesResponse, CreateTemplateRequest, ReportLayout, } from "@/types/report"; const BASE_URL = "/admin/reports"; export const reportApi = { // 리포트 목록 조회 getReports: async (params: GetReportsParams) => { const response = await apiClient.get<{ success: boolean; data: GetReportsResponse; }>(BASE_URL, { params }); return response.data; }, // 리포트 상세 조회 getReportById: async (reportId: string) => { const response = await apiClient.get<{ success: boolean; data: ReportDetail; }>(`${BASE_URL}/${reportId}`); return response.data; }, // 리포트 생성 createReport: async (data: CreateReportRequest) => { const response = await apiClient.post<{ success: boolean; data: { reportId: string }; message: string; }>(BASE_URL, data); return response.data; }, // 리포트 수정 updateReport: async (reportId: string, data: UpdateReportRequest) => { const response = await apiClient.put<{ success: boolean; message: string; }>(`${BASE_URL}/${reportId}`, data); return response.data; }, // 리포트 삭제 deleteReport: async (reportId: string) => { const response = await apiClient.delete<{ success: boolean; message: string; }>(`${BASE_URL}/${reportId}`); return response.data; }, // 리포트 복사 copyReport: async (reportId: string) => { const response = await apiClient.post<{ success: boolean; data: { reportId: string }; message: string; }>(`${BASE_URL}/${reportId}/copy`); return response.data; }, // 레이아웃 조회 getLayout: async (reportId: string) => { const response = await apiClient.get<{ success: boolean; data: ReportLayout; }>(`${BASE_URL}/${reportId}/layout`); return response.data; }, // 레이아웃 저장 saveLayout: async (reportId: string, data: SaveLayoutRequest) => { const response = await apiClient.put<{ success: boolean; message: string; }>(`${BASE_URL}/${reportId}/layout`, data); return response.data; }, // 템플릿 목록 조회 getTemplates: async () => { const response = await apiClient.get<{ success: boolean; data: GetTemplatesResponse; }>(`${BASE_URL}/templates`); return response.data; }, // 템플릿 생성 createTemplate: async (data: CreateTemplateRequest) => { const response = await apiClient.post<{ success: boolean; data: { templateId: string }; message: string; }>(`${BASE_URL}/templates`, data); return response.data; }, // 템플릿 삭제 deleteTemplate: async (templateId: string) => { const response = await apiClient.delete<{ success: boolean; message: string; }>(`${BASE_URL}/templates/${templateId}`); return response.data; }, // 쿼리 실행 executeQuery: async (reportId: string, queryId: string, parameters: Record, sqlQuery?: string) => { const response = await apiClient.post<{ success: boolean; data: { fields: string[]; rows: any[]; }; }>(`${BASE_URL}/${reportId}/queries/${queryId}/execute`, { parameters, sqlQuery }); return response.data; }, };