pushy

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-06-28 11:29:07 +08:00
parent 463a8d3978
commit 89acdfc239
67 changed files with 2736 additions and 306 deletions
@@ -0,0 +1,36 @@
'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');
},
};