"use client"; /** * 외부 DB 소스 노드 */ import { memo } from "react"; import { Handle, Position, NodeProps } from "reactflow"; import { Plug } from "lucide-react"; import type { ExternalDBSourceNodeData } from "@/types/node-editor"; const DB_TYPE_COLORS: Record = { PostgreSQL: "#336791", MySQL: "#4479A1", Oracle: "#F80000", MSSQL: "#CC2927", MariaDB: "#003545", }; const DB_TYPE_ICONS: Record = { PostgreSQL: "🐘", MySQL: "🐬", Oracle: "🔴", MSSQL: "🟦", MariaDB: "🦭", }; export const ExternalDBSourceNode = memo(({ data, selected }: NodeProps) => { const dbColor = (data.dbType && DB_TYPE_COLORS[data.dbType]) || "#F59E0B"; const dbIcon = (data.dbType && DB_TYPE_ICONS[data.dbType]) || "🔌"; return (
{/* 헤더 */}
{data.displayName || data.connectionName}
{data.tableName}
{dbIcon}
{/* 본문 */}
{data.dbType || "DB"}
외부 DB
{/* 필드 목록 */}
출력 필드:
{data.fields && data.fields.length > 0 ? ( data.fields.slice(0, 5).map((field) => (
{field.name} ({field.type})
)) ) : (
필드 없음
)} {data.fields && data.fields.length > 5 && (
... 외 {data.fields.length - 5}개
)}
{/* 출력 핸들 */}
); }); ExternalDBSourceNode.displayName = "ExternalDBSourceNode";