'use strict';

module.exports = {
  async up(queryInterface, Sequelize) {
    await queryInterface.createTable('bank_employees', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      employeeNumber: {
        type: Sequelize.STRING(20),
        allowNull: false,
        unique: true,
        comment: '员工编号'
      },
      name: {
        type: Sequelize.STRING(50),
        allowNull: false,
        comment: '员工姓名'
      },
      phone: {
        type: Sequelize.STRING(20),
        allowNull: false,
        comment: '联系电话'
      },
      email: {
        type: Sequelize.STRING(100),
        allowNull: true,
        comment: '邮箱'
      },
      password: {
        type: Sequelize.STRING(255),
        allowNull: false,
        comment: '密码'
      },
      isLoanSpecialist: {
        type: Sequelize.BOOLEAN,
        defaultValue: false,
        comment: '是否为贷款专员'
      },
      department: {
        type: Sequelize.STRING(50),
        allowNull: true,
        comment: '部门'
      },
      position: {
        type: Sequelize.STRING(50),
        allowNull: true,
        comment: '职位'
      },
      status: {
        type: Sequelize.ENUM('active', 'inactive', 'locked'),
        defaultValue: 'active',
        comment: '账号状态'
      },
      lastLogin: {
        type: Sequelize.DATE,
        allowNull: true,
        comment: '最后登录时间'
      },
      loginAttempts: {
        type: Sequelize.INTEGER,
        defaultValue: 0,
        comment: '登录尝试次数'
      },
      lockedUntil: {
        type: Sequelize.DATE,
        allowNull: true,
        comment: '锁定到期时间'
      },
      createdBy: {
        type: Sequelize.INTEGER,
        allowNull: true,
        comment: '创建人ID'
      },
      updatedBy: {
        type: Sequelize.INTEGER,
        allowNull: true,
        comment: '更新人ID'
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      deletedAt: {
        type: Sequelize.DATE,
        allowNull: true
      }
    });

    // 添加索引
    await queryInterface.addIndex('bank_employees', ['employeeNumber'], {
      unique: true,
      name: 'idx_employees_employee_number'
    });

    await queryInterface.addIndex('bank_employees', ['phone'], {
      unique: true,
      name: 'idx_employees_phone'
    });

    await queryInterface.addIndex('bank_employees', ['status'], {
      name: 'idx_employees_status'
    });

    await queryInterface.addIndex('bank_employees', ['isLoanSpecialist'], {
      name: 'idx_employees_loan_specialist'
    });

    await queryInterface.addIndex('bank_employees', ['deletedAt'], {
      name: 'idx_employees_deleted_at'
    });
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.dropTable('bank_employees');
  }
};
