"use client"; import React, { useState } from "react"; import { Table, ArrowLeft, ArrowRight, CheckCircle, Database } from "lucide-react"; import { Connection, TableInfo } from "../types/redesigned"; interface TableStepProps { fromConnection?: Connection; toConnection?: Connection; fromTable?: TableInfo; toTable?: TableInfo; onFromTableChange: (table: TableInfo) => void; onToTableChange: (table: TableInfo) => void; onNext: () => void; onBack: () => void; } // 임시 테이블 데이터 const mockTables: TableInfo[] = [ { name: "users", schema: "public", columns: [ { name: "id", type: "integer", nullable: false, primaryKey: true }, { name: "name", type: "varchar", nullable: false, primaryKey: false }, { name: "email", type: "varchar", nullable: true, primaryKey: false }, { name: "created_at", type: "timestamp", nullable: false, primaryKey: false } ], rowCount: 1250 }, { name: "orders", schema: "public", columns: [ { name: "id", type: "integer", nullable: false, primaryKey: true }, { name: "user_id", type: "integer", nullable: false, primaryKey: false, foreignKey: true }, { name: "product_name", type: "varchar", nullable: false, primaryKey: false }, { name: "amount", type: "decimal", nullable: false, primaryKey: false }, { name: "order_date", type: "timestamp", nullable: false, primaryKey: false } ], rowCount: 3420 }, { name: "products", schema: "public", columns: [ { name: "id", type: "integer", nullable: false, primaryKey: true }, { name: "name", type: "varchar", nullable: false, primaryKey: false }, { name: "price", type: "decimal", nullable: false, primaryKey: false }, { name: "category", type: "varchar", nullable: true, primaryKey: false } ], rowCount: 156 } ]; export const TableStep: React.FC = ({ fromConnection, toConnection, fromTable, toTable, onFromTableChange, onToTableChange, onNext, onBack, }) => { const [selectedFromTable, setSelectedFromTable] = useState(fromTable?.name || ""); const [selectedToTable, setSelectedToTable] = useState(toTable?.name || ""); const handleFromTableSelect = (tableName: string) => { const table = mockTables.find(t => t.name === tableName); if (table) { setSelectedFromTable(tableName); onFromTableChange(table); } }; const handleToTableSelect = (tableName: string) => { const table = mockTables.find(t => t.name === tableName); if (table) { setSelectedToTable(tableName); onToTableChange(table); } }; const canProceed = selectedFromTable && selectedToTable; return (

테이블 선택

소스 테이블과 대상 테이블을 선택하세요

{/* 연결 정보 표시 */}
{fromConnection?.name} {toConnection?.name}
{/* FROM 테이블 */}
1

소스 테이블

(FROM)
{mockTables.map((table) => (
handleFromTableSelect(table.name)} >

{table.name}

{table.columns.length}개 컬럼

{table.rowCount?.toLocaleString()}개 행

{selectedFromTable === table.name && ( )} ))} {/* TO 테이블 */}
2

대상 테이블

(TO)
{mockTables.map((table) => (
handleToTableSelect(table.name)} >

{table.name}

{table.columns.length}개 컬럼

{table.rowCount?.toLocaleString()}개 행

{selectedToTable === table.name && ( )} ))} {/* 버튼들 */}
); };