const db = require('../models'); const Users = db.users; const Blogs = db.blogs; const Inquiries = db.inquiries; const Properties = db.properties; const BlogsData = [ { title: 'The Rise of Luxury Real Estate in Dubai', content: 'Dubai has become a hub for luxury real estate, attracting investors from around the world.', published_date: new Date('2023-10-01T10:00:00Z'), // type code here for "relation_one" field }, { title: 'Top 5 Neighborhoods to Live in Dubai', content: 'Discover the best neighborhoods in Dubai for families, singles, and professionals.', published_date: new Date('2023-09-15T10:00:00Z'), // type code here for "relation_one" field }, { title: 'How to Invest in Dubai Real Estate', content: "A guide to investing in Dubai's booming real estate market.", published_date: new Date('2023-08-20T10:00:00Z'), // type code here for "relation_one" field }, ]; const InquiriesData = [ { visitor_name: 'Alice Johnson', visitor_email: 'alice.johnson@example.com', message: 'I am interested in the villa in Palm Jumeirah.', // type code here for "relation_one" field }, { visitor_name: 'Bob Martin', visitor_email: 'bob.martin@example.com', message: 'Can I schedule a viewing for the apartment in Downtown?', // type code here for "relation_one" field }, { visitor_name: 'Charlie Lee', visitor_email: 'charlie.lee@example.com', message: 'Is the studio in JLT still available?', // type code here for "relation_one" field }, ]; const PropertiesData = [ { title: 'Luxury Villa in Palm Jumeirah', description: 'A stunning villa with a private beach and pool.', price: 15000000, status: 'rented', // type code here for "relation_one" field // type code here for "images" field location: 'Palm Jumeirah, Dubai', }, { title: 'Modern Apartment in Downtown', description: 'A sleek apartment with city views and modern amenities.', price: 2500000, status: 'available', // type code here for "relation_one" field // type code here for "images" field location: 'Downtown Dubai', }, { title: 'Cozy Studio in JLT', description: 'A compact studio perfect for singles or couples.', price: 800000, status: 'available', // type code here for "relation_one" field // type code here for "images" field location: 'Jumeirah Lake Towers, Dubai', }, ]; // Similar logic for "relation_many" async function associateBlogWithAuthor() { const relatedAuthor0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Blog0 = await Blogs.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Blog0?.setAuthor) { await Blog0.setAuthor(relatedAuthor0); } const relatedAuthor1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Blog1 = await Blogs.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Blog1?.setAuthor) { await Blog1.setAuthor(relatedAuthor1); } const relatedAuthor2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Blog2 = await Blogs.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Blog2?.setAuthor) { await Blog2.setAuthor(relatedAuthor2); } } async function associateInquiryWithProperty() { const relatedProperty0 = await Properties.findOne({ offset: Math.floor(Math.random() * (await Properties.count())), }); const Inquiry0 = await Inquiries.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Inquiry0?.setProperty) { await Inquiry0.setProperty(relatedProperty0); } const relatedProperty1 = await Properties.findOne({ offset: Math.floor(Math.random() * (await Properties.count())), }); const Inquiry1 = await Inquiries.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Inquiry1?.setProperty) { await Inquiry1.setProperty(relatedProperty1); } const relatedProperty2 = await Properties.findOne({ offset: Math.floor(Math.random() * (await Properties.count())), }); const Inquiry2 = await Inquiries.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Inquiry2?.setProperty) { await Inquiry2.setProperty(relatedProperty2); } } async function associatePropertyWithAgent() { const relatedAgent0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Property0 = await Properties.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Property0?.setAgent) { await Property0.setAgent(relatedAgent0); } const relatedAgent1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Property1 = await Properties.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Property1?.setAgent) { await Property1.setAgent(relatedAgent1); } const relatedAgent2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Property2 = await Properties.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Property2?.setAgent) { await Property2.setAgent(relatedAgent2); } } module.exports = { up: async (queryInterface, Sequelize) => { await Blogs.bulkCreate(BlogsData); await Inquiries.bulkCreate(InquiriesData); await Properties.bulkCreate(PropertiesData); await Promise.all([ // Similar logic for "relation_many" await associateBlogWithAuthor(), await associateInquiryWithProperty(), await associatePropertyWithAgent(), ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('blogs', null, {}); await queryInterface.bulkDelete('inquiries', null, {}); await queryInterface.bulkDelete('properties', null, {}); }, };