/** * 화면 임베딩 및 데이터 전달 시스템 API 클라이언트 */ import apiClient from "./client"; import type { ScreenEmbedding, ScreenDataTransfer, ScreenSplitPanel, CreateScreenEmbeddingRequest, CreateScreenDataTransferRequest, CreateScreenSplitPanelRequest, ApiResponse, } from "@/types/screen-embedding"; // ============================================ // 1. 화면 임베딩 API // ============================================ /** * 화면 임베딩 목록 조회 */ export async function getScreenEmbeddings( parentScreenId: number ): Promise> { try { const response = await apiClient.get("/screen-embedding", { params: { parentScreenId }, }); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "화면 임베딩 목록 조회 실패", }; } } /** * 화면 임베딩 상세 조회 */ export async function getScreenEmbeddingById( id: number ): Promise> { try { const response = await apiClient.get(`/screen-embedding/${id}`); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "화면 임베딩 조회 실패", }; } } /** * 화면 임베딩 생성 */ export async function createScreenEmbedding( data: CreateScreenEmbeddingRequest ): Promise> { try { const response = await apiClient.post("/screen-embedding", data); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "화면 임베딩 생성 실패", }; } } /** * 화면 임베딩 수정 */ export async function updateScreenEmbedding( id: number, data: Partial ): Promise> { try { const response = await apiClient.put(`/screen-embedding/${id}`, data); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "화면 임베딩 수정 실패", }; } } /** * 화면 임베딩 삭제 */ export async function deleteScreenEmbedding( id: number ): Promise> { try { const response = await apiClient.delete(`/screen-embedding/${id}`); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "화면 임베딩 삭제 실패", }; } } // ============================================ // 2. 데이터 전달 API // ============================================ /** * 데이터 전달 설정 조회 */ export async function getScreenDataTransfer( sourceScreenId: number, targetScreenId: number ): Promise> { try { const response = await apiClient.get("/screen-data-transfer", { params: { sourceScreenId, targetScreenId }, }); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "데이터 전달 설정 조회 실패", }; } } /** * 데이터 전달 설정 생성 */ export async function createScreenDataTransfer( data: CreateScreenDataTransferRequest ): Promise> { try { const response = await apiClient.post("/screen-data-transfer", data); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "데이터 전달 설정 생성 실패", }; } } /** * 데이터 전달 설정 수정 */ export async function updateScreenDataTransfer( id: number, data: Partial ): Promise> { try { const response = await apiClient.put(`/screen-data-transfer/${id}`, data); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "데이터 전달 설정 수정 실패", }; } } /** * 데이터 전달 설정 삭제 */ export async function deleteScreenDataTransfer( id: number ): Promise> { try { const response = await apiClient.delete(`/screen-data-transfer/${id}`); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "데이터 전달 설정 삭제 실패", }; } } // ============================================ // 3. 분할 패널 API // ============================================ /** * 분할 패널 설정 조회 */ export async function getScreenSplitPanel( screenId: number ): Promise> { try { const response = await apiClient.get(`/screen-split-panel/${screenId}`); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "분할 패널 설정 조회 실패", }; } } /** * 분할 패널 설정 생성 */ export async function createScreenSplitPanel( data: CreateScreenSplitPanelRequest ): Promise> { try { const response = await apiClient.post("/screen-split-panel", data); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "분할 패널 설정 생성 실패", }; } } /** * 분할 패널 설정 수정 */ export async function updateScreenSplitPanel( id: number, layoutConfig: any ): Promise> { try { const response = await apiClient.put(`/screen-split-panel/${id}`, { layoutConfig, }); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "분할 패널 설정 수정 실패", }; } } /** * 분할 패널 설정 삭제 */ export async function deleteScreenSplitPanel( id: number ): Promise> { try { const response = await apiClient.delete(`/screen-split-panel/${id}`); return response.data; } catch (error: any) { return { success: false, error: error.response?.data?.message || "분할 패널 설정 삭제 실패", }; } } // ============================================ // 4. 유틸리티 함수 // ============================================ /** * 화면 임베딩 전체 설정 조회 (분할 패널 포함) */ export async function getFullScreenEmbeddingConfig( screenId: number ): Promise> { return getScreenSplitPanel(screenId); }