diff --git a/migrations/20230309190019-set-up-patreon-fields-and-columns.js b/migrations/20230309190019-set-up-patreon-fields-and-columns.js new file mode 100644 index 0000000..8a3ef5d --- /dev/null +++ b/migrations/20230309190019-set-up-patreon-fields-and-columns.js @@ -0,0 +1,44 @@ +'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.INTEGER, + 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'); + } +}; diff --git a/models/bot.js b/models/bot.js index e075d20..c0e8b5b 100644 --- a/models/bot.js +++ b/models/bot.js @@ -16,6 +16,7 @@ module.exports = (sequelize, DataTypes) => { Bot.init({ maintenance: DataTypes.BOOLEAN, adminIDs: DataTypes.STRING, + patreonTierRoles: DataTypes.STRING, pullTimeout: DataTypes.INTEGER, dropTimeout: DataTypes.INTEGER }, { diff --git a/models/user.js b/models/user.js index c06dc10..e186cfe 100644 --- a/models/user.js +++ b/models/user.js @@ -103,8 +103,10 @@ module.exports = (sequelize, DataTypes) => { experience: DataTypes.INTEGER, primaryCurrency: DataTypes.INTEGER, secondaryCurrency: DataTypes.INTEGER, - nextDrop: DataTypes.DATE, - nextPull: DataTypes.DATE, + remainingDrops: DataTypes.INTEGER, + remainingClaims: DataTypes.INTEGER, + nextDropReset: DataTypes.DATE, + nextClaimReset: DataTypes.DATE, nextDaily: DataTypes.DATE }, { hooks: {