"use strict";

module.exports = {
  async up(queryInterface) {
    await queryInterface.sequelize.transaction(async (transaction) => {
      await queryInterface.removeColumn("users", "isAdmin", { transaction });
      await queryInterface.removeColumn("users", "isViewer", { transaction });
    });
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.sequelize.transaction(async (transaction) => {
      await queryInterface.addColumn("users", "isAdmin", {
        type: Sequelize.BOOLEAN,
        allowNull: false,
        defaultValue: false,
      });
      await queryInterface.addColumn("users", "isViewer", {
        type: Sequelize.BOOLEAN,
        allowNull: false,
        defaultValue: false,
      });
    });

    await queryInterface.sequelize.transaction(async (transaction) => {
      await queryInterface.sequelize.query(
        `UPDATE users SET "isAdmin" = true WHERE role = 'admin'`,
        {
          transaction,
          type: Sequelize.QueryTypes.UPDATE,
        }
      );
      await queryInterface.sequelize.query(
        `UPDATE users SET "isViewer" = true WHERE role = 'viewer'`,
        {
          transaction,
          type: Sequelize.QueryTypes.UPDATE,
        }
      );
    });
  },
};
