"use client"; /** * INSERT 액션 노드 */ import { memo } from "react"; import { Handle, Position, NodeProps } from "reactflow"; import { Plus } from "lucide-react"; import type { InsertActionNodeData } from "@/types/node-editor"; export const InsertActionNode = memo(({ data, selected }: NodeProps) => { return (
{/* 입력 핸들 */} {/* 헤더 */}
INSERT
{data.displayName || data.targetTable}
{/* 본문 */}
타겟: {data.displayName || data.targetTable} {data.targetTable && data.displayName && data.displayName !== data.targetTable && ( ({data.targetTable}) )}
{/* 필드 매핑 */} {data.fieldMappings && data.fieldMappings.length > 0 && (
삽입 필드:
{data.fieldMappings.slice(0, 4).map((mapping, idx) => (
{mapping.sourceFieldLabel || mapping.sourceField || mapping.staticValue || "?"} {mapping.targetFieldLabel || mapping.targetField}
))} {data.fieldMappings.length > 4 && (
... 외 {data.fieldMappings.length - 4}개
)}
)} {/* 옵션 */} {data.options && (
{data.options.ignoreDuplicates && ( 중복 무시 )} {data.options.batchSize && ( 배치 {data.options.batchSize}건 )}
)}
{/* 출력 핸들 */}
); }); InsertActionNode.displayName = "InsertActionNode";