"use strict";

module.exports = {
  up: async (queryInterface, Sequelize) => {
    // isBanned - boolean flag indicating if user is banned
    await queryInterface.addColumn("Users", "isBanned", {
      type: Sequelize.BOOLEAN,
      defaultValue: false,
      allowNull: false,
    });

    // bannedAt - timestamp when ban was applied
    await queryInterface.addColumn("Users", "bannedAt", {
      type: Sequelize.DATE,
      allowNull: true,
    });

    // bannedBy - UUID of admin who applied the ban
    await queryInterface.addColumn("Users", "bannedBy", {
      type: Sequelize.UUID,
      allowNull: true,
      references: {
        model: "Users",
        key: "id",
      },
    });

    // banReason - reason provided by admin for the ban
    await queryInterface.addColumn("Users", "banReason", {
      type: Sequelize.TEXT,
      allowNull: true,
    });
  },

  down: async (queryInterface, Sequelize) => {
    await queryInterface.removeColumn("Users", "banReason");
    await queryInterface.removeColumn("Users", "bannedBy");
    await queryInterface.removeColumn("Users", "bannedAt");
    await queryInterface.removeColumn("Users", "isBanned");
  },
};
