const db = require('../models'); const Users = db.users; const Announcements = db.announcements; const Memberships = db.memberships; const Programs = db.programs; const AnnouncementsData = [ { title: 'New Year Promotion', content: 'Join now and get 20% off!', date: new Date('2023-01-01T00:00:00Z'), }, { title: 'Summer Bootcamp', content: 'Sign up for our summer bootcamp!', date: new Date('2023-06-01T00:00:00Z'), }, { title: 'Nutrition Workshop', content: 'Attend our nutrition workshop this weekend.', date: new Date('2023-03-15T00:00:00Z'), }, { title: 'Holiday Hours', content: 'Check out our holiday hours.', date: new Date('2023-12-20T00:00:00Z'), }, ]; const MembershipsData = [ { // type code here for "relation_one" field start_date: new Date('2023-01-01T00:00:00Z'), end_date: new Date('2023-04-01T00:00:00Z'), // type code here for "files" field }, { // type code here for "relation_one" field start_date: new Date('2023-02-01T00:00:00Z'), end_date: new Date('2023-08-01T00:00:00Z'), // type code here for "files" field }, { // type code here for "relation_one" field start_date: new Date('2023-03-01T00:00:00Z'), end_date: new Date('2023-04-01T00:00:00Z'), // type code here for "files" field }, { // type code here for "relation_one" field start_date: new Date('2023-04-01T00:00:00Z'), end_date: new Date('2024-04-01T00:00:00Z'), // type code here for "files" field }, ]; const ProgramsData = [ { // type code here for "relation_one" field name: 'Weight Loss Program', description: 'A comprehensive weight loss program.', // type code here for "images" field }, { // type code here for "relation_one" field name: 'Muscle Gain Program', description: 'A program focused on muscle gain.', // type code here for "images" field }, { // type code here for "relation_one" field name: 'Cardio Program', description: 'A cardio-focused training program.', // type code here for "images" field }, { // type code here for "relation_one" field name: 'Flexibility Program', description: 'A program to improve flexibility.', // type code here for "images" field }, ]; // Similar logic for "relation_many" async function associateMembershipWithUser() { const relatedUser0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Membership0 = await Memberships.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Membership0?.setUser) { await Membership0.setUser(relatedUser0); } const relatedUser1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Membership1 = await Memberships.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Membership1?.setUser) { await Membership1.setUser(relatedUser1); } const relatedUser2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Membership2 = await Memberships.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Membership2?.setUser) { await Membership2.setUser(relatedUser2); } const relatedUser3 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Membership3 = await Memberships.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Membership3?.setUser) { await Membership3.setUser(relatedUser3); } } async function associateProgramWithUser() { const relatedUser0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Program0 = await Programs.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Program0?.setUser) { await Program0.setUser(relatedUser0); } const relatedUser1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Program1 = await Programs.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Program1?.setUser) { await Program1.setUser(relatedUser1); } const relatedUser2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Program2 = await Programs.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Program2?.setUser) { await Program2.setUser(relatedUser2); } const relatedUser3 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Program3 = await Programs.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Program3?.setUser) { await Program3.setUser(relatedUser3); } } module.exports = { up: async (queryInterface, Sequelize) => { await Announcements.bulkCreate(AnnouncementsData); await Memberships.bulkCreate(MembershipsData); await Programs.bulkCreate(ProgramsData); await Promise.all([ // Similar logic for "relation_many" await associateMembershipWithUser(), await associateProgramWithUser(), ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('announcements', null, {}); await queryInterface.bulkDelete('memberships', null, {}); await queryInterface.bulkDelete('programs', null, {}); }, };