ERP-node/frontend/lib/api/externalCallConfig.ts

177 lines
4.5 KiB
TypeScript

/**
* 외부호출 설정 API 클라이언트
*/
import { apiClient } from "./client";
// 외부호출 설정 관련 상수들
export const CALL_TYPE_OPTIONS = [
{ value: "rest-api", label: "REST API" },
{ value: "webhook", label: "Webhook" },
{ value: "email", label: "이메일" },
] as const;
export const API_TYPE_OPTIONS = [
{ value: "generic", label: "일반 API" },
{ value: "slack", label: "Slack" },
{ value: "discord", label: "Discord" },
{ value: "teams", label: "Microsoft Teams" },
] as const;
export const ACTIVE_STATUS_OPTIONS = [
{ value: "Y", label: "활성" },
{ value: "N", label: "비활성" },
] as const;
export interface ExternalCallConfig {
id?: number;
config_name: string;
call_type: string;
api_type?: string;
config_data: any;
description?: string;
company_code?: string;
is_active?: string;
created_by?: string;
updated_by?: string;
}
export interface ExternalCallConfigFilter {
company_code?: string;
is_active?: string;
call_type?: string;
api_type?: string;
}
/**
* 외부호출 설정 API 클래스
*/
export class ExternalCallConfigAPI {
/**
* 외부호출 설정 목록 조회
*/
static async getConfigs(filter: ExternalCallConfigFilter = {}): Promise<{
success: boolean;
data?: ExternalCallConfig[];
error?: string;
}> {
try {
const params = new URLSearchParams();
Object.entries(filter).forEach(([key, value]) => {
if (value) params.append(key, value);
});
const response = await apiClient.get(`/external-call-configs?${params.toString()}`);
return response.data;
} catch (error) {
console.error("외부호출 설정 목록 조회 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
/**
* 외부호출 설정 상세 조회
*/
static async getConfigById(id: number): Promise<{
success: boolean;
data?: ExternalCallConfig;
error?: string;
}> {
try {
const response = await apiClient.get(`/external-call-configs/${id}`);
return response.data;
} catch (error) {
console.error("외부호출 설정 상세 조회 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
/**
* 외부호출 설정 생성
*/
static async createConfig(data: Omit<ExternalCallConfig, "id">): Promise<{
success: boolean;
data?: ExternalCallConfig;
error?: string;
}> {
try {
const response = await apiClient.post("/external-call-configs", data);
return response.data;
} catch (error) {
console.error("외부호출 설정 생성 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
/**
* 외부호출 설정 수정
*/
static async updateConfig(
id: number,
data: Partial<ExternalCallConfig>,
): Promise<{
success: boolean;
data?: ExternalCallConfig;
error?: string;
}> {
try {
const response = await apiClient.put(`/external-call-configs/${id}`, data);
return response.data;
} catch (error) {
console.error("외부호출 설정 수정 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
/**
* 외부호출 설정 삭제
*/
static async deleteConfig(id: number): Promise<{
success: boolean;
error?: string;
}> {
try {
const response = await apiClient.delete(`/external-call-configs/${id}`);
return response.data;
} catch (error) {
console.error("외부호출 설정 삭제 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
/**
* 외부호출 설정 테스트
*/
static async testConfig(id: number): Promise<{
success: boolean;
message?: string;
error?: string;
}> {
try {
const response = await apiClient.post(`/external-call-configs/${id}/test`);
return response.data;
} catch (error) {
console.error("외부호출 설정 테스트 실패:", error);
return {
success: false,
error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.",
};
}
}
}