/**
 * 마이그레이션: work_issue_reports에 category_type 컬럼 추가
 * - issue_report_categories ENUM에 'facility' 추가
 * - work_issue_reports에 category_type 직접 저장 (유형 이관 기능 지원)
 * - 기존 데이터 백필
 */

exports.up = async function(knex) {
  // 1) issue_report_categories ENUM에 'facility' 추가
  await knex.raw(`
    ALTER TABLE issue_report_categories
    MODIFY COLUMN category_type ENUM('nonconformity', 'safety', 'facility') NOT NULL
  `);

  // 2) work_issue_reports에 category_type 컬럼 추가
  await knex.raw(`
    ALTER TABLE work_issue_reports
    ADD COLUMN category_type ENUM('nonconformity', 'safety', 'facility') NULL AFTER issue_item_id
  `);

  // 3) 기존 데이터 백필: issue_report_categories에서 category_type 복사
  await knex.raw(`
    UPDATE work_issue_reports wir
    INNER JOIN issue_report_categories irc ON wir.issue_category_id = irc.category_id
    SET wir.category_type = irc.category_type
  `);

  // 4) NOT NULL로 변경
  await knex.raw(`
    ALTER TABLE work_issue_reports
    MODIFY COLUMN category_type ENUM('nonconformity', 'safety', 'facility') NOT NULL
  `);

  // 5) 인덱스 추가
  await knex.raw(`
    ALTER TABLE work_issue_reports ADD INDEX idx_wir_category_type (category_type)
  `);

  console.log('work_issue_reports에 category_type 컬럼 추가 완료');
};

exports.down = async function(knex) {
  await knex.raw(`ALTER TABLE work_issue_reports DROP INDEX idx_wir_category_type`);
  await knex.raw(`ALTER TABLE work_issue_reports DROP COLUMN category_type`);
  await knex.raw(`
    ALTER TABLE issue_report_categories
    MODIFY COLUMN category_type ENUM('nonconformity', 'safety') NOT NULL
  `);

  console.log('work_issue_reports에서 category_type 컬럼 제거 완료');
};
