'use strict';
const bcrypt = require('bcrypt');

module.exports = {
  async up (queryInterface, Sequelize) {
    // 환경변수 기반으로 관리자 계정 생성
    const adminEmail = process.env.ADMIN_EMAIL;
    const adminPassword = process.env.ADMIN_PASSWORD;
    const adminName = process.env.ADMIN_NAME;
    const adminUsername = process.env.ADMIN_USERNAME;

    // 이미 존재하는지 체크
    const [results] = await queryInterface.sequelize.query(
      `SELECT id FROM Users WHERE email = :email LIMIT 1`,
      { replacements: { email: adminEmail } }
    );
    if (results.length > 0) return;

    const salt = await bcrypt.genSalt(10);
    const hashedPassword = await bcrypt.hash(adminPassword, salt);
    await queryInterface.bulkInsert('Users', [{
      username: adminUsername,
      name: adminName,
      email: adminEmail,
      password: hashedPassword,
      role: 'admin',
      status: 'active',
      createdAt: new Date(),
      updatedAt: new Date()
    }], {});
  },
  async down (queryInterface, Sequelize) {
    const adminEmail = process.env.ADMIN_EMAIL;
    // 먼저 ActivityLogs에서 admin 유저의 로그를 삭제
    const [results] = await queryInterface.sequelize.query(
      `SELECT id FROM Users WHERE email = :email LIMIT 1`,
      { replacements: { email: adminEmail } }
    );
    if (results.length > 0) {
      const adminId = results[0].id;
      await queryInterface.bulkDelete('ActivityLogs', { userId: adminId }, {});
    }
    await queryInterface.bulkDelete('Users', { email: adminEmail }, {});
  }
};
