84 lines
1.9 KiB
TypeScript
84 lines
1.9 KiB
TypeScript
|
|
import { ConditionNode } from "@/lib/api/dataflow";
|
||
|
|
|
||
|
|
// 연결 정보 타입
|
||
|
|
export interface ConnectionInfo {
|
||
|
|
fromNode: {
|
||
|
|
id: string;
|
||
|
|
tableName: string;
|
||
|
|
displayName: string;
|
||
|
|
};
|
||
|
|
toNode: {
|
||
|
|
id: string;
|
||
|
|
tableName: string;
|
||
|
|
displayName: string;
|
||
|
|
};
|
||
|
|
fromColumn?: string;
|
||
|
|
toColumn?: string;
|
||
|
|
selectedColumnsData?: {
|
||
|
|
[tableName: string]: {
|
||
|
|
displayName: string;
|
||
|
|
columns: string[];
|
||
|
|
};
|
||
|
|
};
|
||
|
|
existingRelationship?: {
|
||
|
|
relationshipName: string;
|
||
|
|
connectionType: string;
|
||
|
|
settings?: Record<string, unknown>;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
// 연결 설정 타입
|
||
|
|
export interface ConnectionConfig {
|
||
|
|
relationshipName: string;
|
||
|
|
connectionType: "simple-key" | "data-save" | "external-call";
|
||
|
|
fromColumnName: string;
|
||
|
|
toColumnName: string;
|
||
|
|
settings?: Record<string, unknown>;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 단순 키값 연결 설정
|
||
|
|
export interface SimpleKeySettings {
|
||
|
|
notes: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 데이터 저장 설정
|
||
|
|
export interface DataSaveSettings {
|
||
|
|
actions: Array<{
|
||
|
|
id: string;
|
||
|
|
name: string;
|
||
|
|
actionType: "insert" | "update" | "delete" | "upsert";
|
||
|
|
conditions?: ConditionNode[];
|
||
|
|
fieldMappings: Array<{
|
||
|
|
sourceTable?: string;
|
||
|
|
sourceField: string;
|
||
|
|
targetTable?: string;
|
||
|
|
targetField: string;
|
||
|
|
defaultValue?: string;
|
||
|
|
transformFunction?: string;
|
||
|
|
}>;
|
||
|
|
splitConfig?: {
|
||
|
|
sourceField: string; // 분할할 소스 필드
|
||
|
|
delimiter: string; // 구분자 (예: ",")
|
||
|
|
targetField: string; // 분할된 값이 들어갈 필드
|
||
|
|
};
|
||
|
|
}>;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 외부 호출 설정
|
||
|
|
export interface ExternalCallSettings {
|
||
|
|
callType: "rest-api" | "email" | "webhook" | "ftp" | "queue";
|
||
|
|
apiUrl?: string;
|
||
|
|
httpMethod?: "GET" | "POST" | "PUT" | "DELETE";
|
||
|
|
headers?: string;
|
||
|
|
bodyTemplate?: string;
|
||
|
|
}
|
||
|
|
|
||
|
|
// ConnectionSetupModal Props 타입
|
||
|
|
export interface ConnectionSetupModalProps {
|
||
|
|
isOpen: boolean;
|
||
|
|
connection: ConnectionInfo | null;
|
||
|
|
companyCode: string;
|
||
|
|
onConfirm: (relationship: any) => void;
|
||
|
|
onCancel: () => void;
|
||
|
|
}
|