/**
 * users 테이블에 department_id 컬럼 추가
 * 사용자-부서 직접 연결을 위한 마이그레이션
 */

exports.up = async function(knex) {
  const hasColumn = await knex.schema.hasColumn('users', 'department_id');

  if (!hasColumn) {
    await knex.schema.table('users', (table) => {
      table.integer('department_id').unsigned().defaultTo(null).after('worker_id')
        .comment('소속 부서 ID');
      table.foreign('department_id').references('department_id').inTable('departments')
        .onDelete('SET NULL');
    });

    // 기존 데이터 backfill: 작업자가 연결된 사용자는 해당 작업자의 department_id를 복사
    await knex.raw(`
      UPDATE users u
      INNER JOIN workers w ON u.worker_id = w.worker_id
      SET u.department_id = w.department_id
      WHERE u.worker_id IS NOT NULL AND w.department_id IS NOT NULL
    `);

  } else {
  }
};

exports.down = async function(knex) {
  const hasColumn = await knex.schema.hasColumn('users', 'department_id');

  if (hasColumn) {
    await knex.schema.table('users', (table) => {
      table.dropForeign('department_id');
      table.dropColumn('department_id');
    });
  }
};
