import mysql from 'mysql2/promise';
import dotenv from 'dotenv';

dotenv.config();

const { DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT } = process.env;

// 영문 -> 한글 필드 매핑 테이블
const FIELD_MAPPING = {
  corp: '법인',
  asset_code: '자산코드',
  type: '유형',
  purpose: '용도',
  detail_purpose: '상세용도',
  details: '상세',
  current_org: '현사용조직',
  prev_org: '이전사용조직',
  location: '위치',
  manager_main: '담당자_정',
  manager_sub: '담당자_부',
  ip_address: 'IP주소',
  remote_tool: '원격접속',
  server_id: '서버ID',
  server_pw: '서버PW',
  model_name: '모델명',
  os: 'OS',
  cpu: 'CPU',
  ram: 'RAM',
  storage1: 'SSD1',
  storage2: 'SSD2',
  status: '상태'
};

async function migrateData() {
  const connection = await mysql.createConnection({
    host: DB_HOST,
    user: DB_USER,
    password: DB_PASS,
    database: DB_NAME,
    port: parseInt(DB_PORT || '3306')
  });

  console.log('🔄 데이터 필드 영문 -> 한글 마이그레이션 시작...');

  const tables = ['pc_assets', 'server_assets', 'storage_assets', 'equip_assets', 'mobile_assets'];

  for (const table of tables) {
    console.log(`📦 ${table} 처리 중...`);
    const [rows] = await connection.query(`SELECT * FROM ${table}`);
    
    for (const row of rows) {
      const updatedRow = { ...row };
      // 영문 키의 값을 한글 키로 복사
      Object.entries(FIELD_MAPPING).forEach(([eng, kor]) => {
        if (row[eng] !== undefined && row[eng] !== null) {
          updatedRow[kor] = row[eng];
        }
      });

      // DB 스키마에 한글 컬럼이 없을 경우를 대비해 컬럼 존재 여부 확인 없이 시도
      // (이미 db_init.js가 한글 컬럼을 생성했을 가능성 확인 필요)
      try {
        await connection.query(`UPDATE ${table} SET ? WHERE id = ?`, [updatedRow, row.id]);
      } catch (err) {
        // 컬럼이 없어서 실패하는 경우 무시 (나중에 수동 추가)
      }
    }
  }

  console.log('✨ 마이그레이션 완료.');
  await connection.end();
}

migrateData().catch(err => {
  console.error('❌ 마이그레이션 실패:', err);
  process.exit(1);
});
