/**
 * leader_id를 nullable로 변경
 * 관리자가 TBM을 입력할 때 leader_id를 NULL로 설정하고 created_by를 사용
 */

exports.up = async function(knex) {
  // 1. 외래 키 제약조건 삭제 (존재하는 경우에만)
  try {
    await knex.raw('ALTER TABLE tbm_sessions DROP FOREIGN KEY tbm_sessions_leader_id_foreign');
  } catch (err) {
    console.log('외래 키가 이미 존재하지 않음 (정상)');
  }

  // 2. leader_id를 nullable로 변경 (UNSIGNED 제거하여 workers.worker_id와 타입 일치)
  await knex.raw('ALTER TABLE tbm_sessions MODIFY leader_id INT(11) NULL');

  // 3. 외래 키 제약조건 다시 추가 (nullable 허용)
  await knex.raw('ALTER TABLE tbm_sessions ADD CONSTRAINT tbm_sessions_leader_id_foreign FOREIGN KEY (leader_id) REFERENCES workers(worker_id) ON DELETE SET NULL');
};

exports.down = async function(knex) {
  // 1. 외래 키 제약조건 삭제
  await knex.raw('ALTER TABLE tbm_sessions DROP FOREIGN KEY tbm_sessions_leader_id_foreign');

  // 2. leader_id를 NOT NULL로 되돌림
  await knex.raw('ALTER TABLE tbm_sessions MODIFY leader_id INT(11) NOT NULL');

  // 3. 외래 키 제약조건 다시 추가
  await knex.raw('ALTER TABLE tbm_sessions ADD CONSTRAINT tbm_sessions_leader_id_foreign FOREIGN KEY (leader_id) REFERENCES workers(worker_id) ON DELETE CASCADE');
};
