124 lines
3.9 KiB
TypeScript
124 lines
3.9 KiB
TypeScript
|
|
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<PaginatedResponse<ScreenDefinition>> => {
|
||
|
|
const response = await apiClient.get("/screen-management/screens", { params });
|
||
|
|
return response.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 상세 조회
|
||
|
|
getScreen: async (screenId: number): Promise<ScreenDefinition> => {
|
||
|
|
const response = await apiClient.get(`/screen-management/screens/${screenId}`);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 생성
|
||
|
|
createScreen: async (screenData: CreateScreenRequest): Promise<ScreenDefinition> => {
|
||
|
|
const response = await apiClient.post("/screen-management/screens", screenData);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 수정
|
||
|
|
updateScreen: async (screenId: number, screenData: UpdateScreenRequest): Promise<ScreenDefinition> => {
|
||
|
|
const response = await apiClient.put(`/screen-management/screens/${screenId}`, screenData);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 삭제
|
||
|
|
deleteScreen: async (screenId: number): Promise<void> => {
|
||
|
|
await apiClient.delete(`/screen-management/screens/${screenId}`);
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 레이아웃 저장
|
||
|
|
saveLayout: async (screenId: number, layoutData: LayoutData): Promise<void> => {
|
||
|
|
await apiClient.post(`/screen-management/screens/${screenId}/layout`, layoutData);
|
||
|
|
},
|
||
|
|
|
||
|
|
// 화면 레이아웃 조회
|
||
|
|
getLayout: async (screenId: number): Promise<LayoutData> => {
|
||
|
|
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<ScreenTemplate[]> => {
|
||
|
|
const response = await apiClient.get("/screen-management/templates", { params });
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 템플릿 상세 조회
|
||
|
|
getTemplate: async (templateId: number): Promise<ScreenTemplate> => {
|
||
|
|
const response = await apiClient.get(`/screen-management/templates/${templateId}`);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 템플릿 생성
|
||
|
|
createTemplate: async (templateData: Partial<ScreenTemplate>): Promise<ScreenTemplate> => {
|
||
|
|
const response = await apiClient.post("/screen-management/templates", templateData);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 템플릿 수정
|
||
|
|
updateTemplate: async (templateId: number, templateData: Partial<ScreenTemplate>): Promise<ScreenTemplate> => {
|
||
|
|
const response = await apiClient.put(`/screen-management/templates/${templateId}`, templateData);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 템플릿 삭제
|
||
|
|
deleteTemplate: async (templateId: number): Promise<void> => {
|
||
|
|
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<any[]> => {
|
||
|
|
const response = await apiClient.get(`/table-management/tables/${tableName}/columns`);
|
||
|
|
return response.data.data;
|
||
|
|
},
|
||
|
|
|
||
|
|
// 컬럼 웹 타입 설정
|
||
|
|
setColumnWebType: async (
|
||
|
|
tableName: string,
|
||
|
|
columnName: string,
|
||
|
|
webType: string,
|
||
|
|
detailSettings?: Record<string, any>,
|
||
|
|
): Promise<void> => {
|
||
|
|
await apiClient.put(`/table-management/tables/${tableName}/columns/${columnName}/web-type`, {
|
||
|
|
webType,
|
||
|
|
detailSettings,
|
||
|
|
});
|
||
|
|
},
|
||
|
|
};
|