'use strict';

const { DataTypes } = require('sequelize');

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up (queryInterface, Sequelize) {
    /** FIXME: Migration won't run with datatype DATETIME and a default value of CURRENT_TIMESTAMP
     *  these changeColumns cause the default value to be removed entirely. ? */

    await queryInterface.changeColumn('Users', 'nextDrop', {
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
      allowNull: false
    });
    await queryInterface.changeColumn('Users', 'nextPull', {
      type: DataTypes.DATE,
      defaultValue: DataTypes.NOW,
      allowNull: false
    });
    await queryInterface.renameColumn('Users', 'nextDrop', 'nextDropReset');
    await queryInterface.renameColumn('Users', 'nextPull', 'nextClaimReset');
    await queryInterface.addColumn('Users', 'remainingDrops', {
      type: Sequelize.INTEGER,
      defaultValue: 1
    });
    await queryInterface.addColumn('Users', 'remainingClaims', {
      type: Sequelize.INTEGER,
      defaultValue: 1
    });
    await queryInterface.addColumn('Bots', 'patreonTierRoles', {
      type: Sequelize.STRING,
      defaultValue: 1
    });
  },

  async down (queryInterface, Sequelize) {
    await queryInterface.removeColumn('Users', 'remainingDrops');
    await queryInterface.removeColumn('Users', 'remainingClaims');
    await queryInterface.removeColumn('Users', 'patreonTierRoles');
    await queryInterface.renameColumn('Users', 'nextDropReset', 'nextDrop');
    await queryInterface.renameColumn('Users', 'nextClaimReset', 'nextPull');
  }
};
