'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('tier_categories', { tier_category_id: { type: Sequelize.BIGINT, primaryKey: true, autoIncrement: true }, slug: { type: Sequelize.STRING(50), allowNull: false, unique: true }, name: { type: Sequelize.STRING(100), allowNull: false }, description: { type: Sequelize.TEXT, allowNull: true }, rank: { type: Sequelize.INTEGER, allowNull: false, defaultValue: 0 }, badge_asset_id: { type: Sequelize.BIGINT, allowNull: true, references: { model: 'assets', key: 'asset_id' }, onUpdate: 'CASCADE', onDelete: 'SET NULL', }, badge_label: { type: Sequelize.STRING(100), allowNull: true }, is_default: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: false }, is_active: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: true }, createdAt: { type: Sequelize.DATE, allowNull: false }, updatedAt: { type: Sequelize.DATE, allowNull: false }, }); // Seed the three baseline tier categories await queryInterface.sequelize.query(` INSERT INTO tier_categories (slug, name, rank, is_default, is_active, "createdAt", "updatedAt") VALUES ('free', 'Free', 0, true, true, NOW(), NOW()), ('premium', 'Premium', 1, false, true, NOW(), NOW()), ('exclusive', 'Exclusive', 2, false, true, NOW(), NOW()) `); }, async down(queryInterface) { await queryInterface.dropTable('tier_categories'); }, };