import { apiClient } from "./client"; import { ScreenDefinition, CreateScreenRequest, UpdateScreenRequest, PaginatedResponse, ScreenTemplate, LayoutData, } from "@/types/screen"; // 화면 정의 관련 API export const screenApi = { // 화면 목록 조회 getScreens: async (params: { page?: number; size?: number; companyCode?: string; searchTerm?: string; }): Promise> => { const response = await apiClient.get("/screen-management/screens", { params }); return response.data; }, // 화면 상세 조회 getScreen: async (screenId: number): Promise => { const response = await apiClient.get(`/screen-management/screens/${screenId}`); return response.data.data; }, // 화면 생성 createScreen: async (screenData: CreateScreenRequest): Promise => { const response = await apiClient.post("/screen-management/screens", screenData); return response.data.data; }, // 화면 수정 updateScreen: async (screenId: number, screenData: UpdateScreenRequest): Promise => { const response = await apiClient.put(`/screen-management/screens/${screenId}`, screenData); return response.data.data; }, // 화면 삭제 deleteScreen: async (screenId: number): Promise => { await apiClient.delete(`/screen-management/screens/${screenId}`); }, // 화면 레이아웃 저장 saveLayout: async (screenId: number, layoutData: LayoutData): Promise => { await apiClient.post(`/screen-management/screens/${screenId}/layout`, layoutData); }, // 화면 레이아웃 조회 getLayout: async (screenId: number): Promise => { const response = await apiClient.get(`/screen-management/screens/${screenId}/layout`); return response.data.data; }, }; // 템플릿 관련 API export const templateApi = { // 템플릿 목록 조회 getTemplates: async (params: { companyCode?: string; templateType?: string; isPublic?: boolean; }): Promise => { const response = await apiClient.get("/screen-management/templates", { params }); return response.data.data; }, // 템플릿 상세 조회 getTemplate: async (templateId: number): Promise => { const response = await apiClient.get(`/screen-management/templates/${templateId}`); return response.data.data; }, // 템플릿 생성 createTemplate: async (templateData: Partial): Promise => { const response = await apiClient.post("/screen-management/templates", templateData); return response.data.data; }, // 템플릿 수정 updateTemplate: async (templateId: number, templateData: Partial): Promise => { const response = await apiClient.put(`/screen-management/templates/${templateId}`, templateData); return response.data.data; }, // 템플릿 삭제 deleteTemplate: async (templateId: number): Promise => { await apiClient.delete(`/screen-management/templates/${templateId}`); }, }; // 테이블 타입 관련 API export const tableTypeApi = { // 테이블 목록 조회 getTables: async (): Promise< Array<{ tableName: string; displayName: string; description: string; columnCount: string }> > => { const response = await apiClient.get("/table-management/tables"); return response.data.data; }, // 테이블 컬럼 정보 조회 getColumns: async (tableName: string): Promise => { const response = await apiClient.get(`/table-management/tables/${tableName}/columns`); return response.data.data; }, // 컬럼 웹 타입 설정 setColumnWebType: async ( tableName: string, columnName: string, webType: string, detailSettings?: Record, ): Promise => { await apiClient.put(`/table-management/tables/${tableName}/columns/${columnName}/web-type`, { webType, detailSettings, }); }, };