124 lines
3.4 KiB
JavaScript
124 lines
3.4 KiB
JavaScript
'use strict';
|
|
const { v4: uuidv4 } = require('uuid');
|
|
|
|
/** @type {import('sequelize-cli').Migration} */
|
|
module.exports = {
|
|
async up(queryInterface, Sequelize) {
|
|
const categories = [
|
|
{
|
|
id: uuidv4(),
|
|
name: 'JavaScript',
|
|
slug: 'javascript',
|
|
description: 'Core JavaScript concepts, ES6+, async programming, and modern features',
|
|
icon: '🟨',
|
|
color: '#F7DF1E',
|
|
is_active: true,
|
|
guest_accessible: true,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 1,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'Angular',
|
|
slug: 'angular',
|
|
description: 'Angular framework, components, services, RxJS, and state management',
|
|
icon: '🅰️',
|
|
color: '#DD0031',
|
|
is_active: true,
|
|
guest_accessible: true,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 2,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'React',
|
|
slug: 'react',
|
|
description: 'React library, hooks, component lifecycle, state management, and best practices',
|
|
icon: '⚛️',
|
|
color: '#61DAFB',
|
|
is_active: true,
|
|
guest_accessible: true,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 3,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'Node.js',
|
|
slug: 'nodejs',
|
|
description: 'Node.js runtime, Express, APIs, middleware, and server-side JavaScript',
|
|
icon: '🟢',
|
|
color: '#339933',
|
|
is_active: true,
|
|
guest_accessible: false,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 4,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'TypeScript',
|
|
slug: 'typescript',
|
|
description: 'TypeScript types, interfaces, generics, decorators, and type safety',
|
|
icon: '📘',
|
|
color: '#3178C6',
|
|
is_active: true,
|
|
guest_accessible: false,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 5,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'SQL & Databases',
|
|
slug: 'sql-databases',
|
|
description: 'SQL queries, database design, indexing, transactions, and optimization',
|
|
icon: '🗄️',
|
|
color: '#4479A1',
|
|
is_active: true,
|
|
guest_accessible: false,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 6,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
},
|
|
{
|
|
id: uuidv4(),
|
|
name: 'System Design',
|
|
slug: 'system-design',
|
|
description: 'Scalability, architecture patterns, microservices, and design principles',
|
|
icon: '🏗️',
|
|
color: '#FF6B6B',
|
|
is_active: true,
|
|
guest_accessible: false,
|
|
question_count: 0,
|
|
quiz_count: 0,
|
|
display_order: 7,
|
|
created_at: new Date(),
|
|
updated_at: new Date()
|
|
}
|
|
];
|
|
|
|
await queryInterface.bulkInsert('categories', categories, {});
|
|
console.log('✅ Seeded 7 demo categories');
|
|
},
|
|
|
|
async down(queryInterface, Sequelize) {
|
|
await queryInterface.bulkDelete('categories', null, {});
|
|
console.log('✅ Removed demo categories');
|
|
}
|
|
};
|