const db = require('../models'); const Users = db.users; const Courses = db.courses; const Documents = db.documents; const Statistics = db.statistics; const CoursesData = [ { title: 'Introduction to Quantum Mechanics', description: 'A comprehensive course on quantum mechanics.', // type code here for "relation_many" field }, { title: 'Advanced Calculus', description: 'An in-depth study of calculus and its applications.', // type code here for "relation_many" field }, { title: 'Modern European History', description: 'Exploring the history of Europe from the Renaissance to the present.', // type code here for "relation_many" field }, { title: 'Organic Chemistry', description: 'Detailed exploration of organic compounds and reactions.', // type code here for "relation_many" field }, ]; const DocumentsData = [ { title: 'Quantum Mechanics Exam 2023', format: 'tex', // type code here for "files" field // type code here for "relation_one" field // type code here for "relation_one" field }, { title: 'Calculus Exercises', format: 'pdf', // type code here for "files" field // type code here for "relation_one" field // type code here for "relation_one" field }, { title: 'European History Midterm', format: 'pdf', // type code here for "files" field // type code here for "relation_one" field // type code here for "relation_one" field }, { title: 'Organic Chemistry Lab Report', format: 'pdf', // type code here for "files" field // type code here for "relation_one" field // type code here for "relation_one" field }, ]; const StatisticsData = [ { total_users: 1000, total_courses: 50, total_documents: 200, }, { total_users: 1500, total_courses: 75, total_documents: 300, }, { total_users: 2000, total_courses: 100, total_documents: 400, }, { total_users: 2500, total_courses: 125, total_documents: 500, }, ]; // Similar logic for "relation_many" // Similar logic for "relation_many" async function associateDocumentWithCourse() { const relatedCourse0 = await Courses.findOne({ offset: Math.floor(Math.random() * (await Courses.count())), }); const Document0 = await Documents.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Document0?.setCourse) { await Document0.setCourse(relatedCourse0); } const relatedCourse1 = await Courses.findOne({ offset: Math.floor(Math.random() * (await Courses.count())), }); const Document1 = await Documents.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Document1?.setCourse) { await Document1.setCourse(relatedCourse1); } const relatedCourse2 = await Courses.findOne({ offset: Math.floor(Math.random() * (await Courses.count())), }); const Document2 = await Documents.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Document2?.setCourse) { await Document2.setCourse(relatedCourse2); } const relatedCourse3 = await Courses.findOne({ offset: Math.floor(Math.random() * (await Courses.count())), }); const Document3 = await Documents.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Document3?.setCourse) { await Document3.setCourse(relatedCourse3); } } async function associateDocumentWithUploader() { const relatedUploader0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Document0 = await Documents.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Document0?.setUploader) { await Document0.setUploader(relatedUploader0); } const relatedUploader1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Document1 = await Documents.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Document1?.setUploader) { await Document1.setUploader(relatedUploader1); } const relatedUploader2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Document2 = await Documents.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Document2?.setUploader) { await Document2.setUploader(relatedUploader2); } const relatedUploader3 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Document3 = await Documents.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Document3?.setUploader) { await Document3.setUploader(relatedUploader3); } } module.exports = { up: async (queryInterface, Sequelize) => { await Courses.bulkCreate(CoursesData); await Documents.bulkCreate(DocumentsData); await Statistics.bulkCreate(StatisticsData); await Promise.all([ // Similar logic for "relation_many" // Similar logic for "relation_many" await associateDocumentWithCourse(), await associateDocumentWithUploader(), ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('courses', null, {}); await queryInterface.bulkDelete('documents', null, {}); await queryInterface.bulkDelete('statistics', null, {}); }, };