/**
 * vacation_types 테이블 확장
 * - 특별 휴가 유형 추가 기능
 * - 차감 우선순위 관리
 * - 시스템 기본 휴가 보호
 */

exports.up = async function(knex) {
  // vacation_types 테이블 확장
  await knex.schema.table('vacation_types', (table) => {
    table.boolean('is_special').defaultTo(false).comment('특별 휴가 여부 (장기근속, 출산 등)');
    table.integer('priority').defaultTo(99).comment('차감 우선순위 (낮을수록 먼저 차감)');
    table.text('description').nullable().comment('휴가 설명');
    table.boolean('is_system').defaultTo(true).comment('시스템 기본 휴가 (삭제 불가)');
  });

  // 기존 휴가 유형에 우선순위 설정
  await knex('vacation_types').where('type_code', 'ANNUAL').update({
    priority: 10,
    is_system: true,
    description: '근로기준법에 따른 연차 유급휴가'
  });

  await knex('vacation_types').where('type_code', 'HALF_ANNUAL').update({
    priority: 10,
    is_system: true,
    description: '반일 연차 (0.5일)'
  });

  await knex('vacation_types').where('type_code', 'SICK').update({
    priority: 20,
    is_system: true,
    description: '병가'
  });

  await knex('vacation_types').where('type_code', 'SPECIAL').update({
    priority: 0,
    is_system: true,
    description: '경조사 휴가 (무급)'
  });

};

exports.down = async function(knex) {
  // 컬럼 삭제
  await knex.schema.table('vacation_types', (table) => {
    table.dropColumn('is_special');
    table.dropColumn('priority');
    table.dropColumn('description');
    table.dropColumn('is_system');
  });

};
