const db = require('../models'); const Users = db.users; const Activities = db.activities; const Batches = db.batches; const Locations = db.locations; const Products = db.products; const Sales = db.sales; const Suppliers = db.suppliers; const ActivitiesData = [ { description: 'Checked inventory levels', activity_date: new Date('2023-10-01T09:00:00Z'), // type code here for "relation_one" field }, { description: 'Processed a sale', activity_date: new Date('2023-10-02T10:30:00Z'), // type code here for "relation_one" field }, { description: 'Updated product prices', activity_date: new Date('2023-10-03T11:45:00Z'), // type code here for "relation_one" field }, { description: 'Generated sales report', activity_date: new Date('2023-10-04T13:20:00Z'), // type code here for "relation_one" field }, ]; const BatchesData = [ { batch_number: 'B001', manufacture_date: new Date('2023-01-15T00:00:00Z'), expiry_date: new Date('2024-01-15T00:00:00Z'), // type code here for "relation_one" field }, { batch_number: 'B002', manufacture_date: new Date('2023-02-20T00:00:00Z'), expiry_date: new Date('2024-02-20T00:00:00Z'), // type code here for "relation_one" field }, { batch_number: 'B003', manufacture_date: new Date('2023-03-25T00:00:00Z'), expiry_date: new Date('2024-03-25T00:00:00Z'), // type code here for "relation_one" field }, { batch_number: 'B004', manufacture_date: new Date('2023-04-30T00:00:00Z'), expiry_date: new Date('2024-04-30T00:00:00Z'), // type code here for "relation_one" field }, ]; const LocationsData = [ { name: 'Downtown Store', address: '123 Main St, Cityville', // type code here for "relation_many" field // type code here for "relation_many" field }, { name: 'Uptown Branch', address: '456 Elm St, Cityville', // type code here for "relation_many" field // type code here for "relation_many" field }, { name: 'Suburban Outlet', address: '789 Oak St, Suburbia', // type code here for "relation_many" field // type code here for "relation_many" field }, { name: 'Eastside Shop', address: '101 Pine St, Eastville', // type code here for "relation_many" field // type code here for "relation_many" field }, ]; const ProductsData = [ { name: 'Wireless Mouse', sku: 'WM123', price: 29.99, stock_quantity: 150, // type code here for "relation_one" field // type code here for "relation_many" field }, { name: 'Bluetooth Keyboard', sku: 'BK456', price: 49.99, stock_quantity: 100, // type code here for "relation_one" field // type code here for "relation_many" field }, { name: 'USB-C Hub', sku: 'UCH789', price: 19.99, stock_quantity: 200, // type code here for "relation_one" field // type code here for "relation_many" field }, { name: 'Laptop Stand', sku: 'LS101', price: 39.99, stock_quantity: 75, // type code here for "relation_one" field // type code here for "relation_many" field }, ]; const SalesData = [ { sale_date: new Date('2023-10-01T10:00:00Z'), total_amount: 150, // type code here for "relation_one" field // type code here for "relation_many" field }, { sale_date: new Date('2023-10-02T11:30:00Z'), total_amount: 200, // type code here for "relation_one" field // type code here for "relation_many" field }, { sale_date: new Date('2023-10-03T14:45:00Z'), total_amount: 75, // type code here for "relation_one" field // type code here for "relation_many" field }, { sale_date: new Date('2023-10-04T16:20:00Z'), total_amount: 300, // type code here for "relation_one" field // type code here for "relation_many" field }, ]; const SuppliersData = [ { name: 'Tech Supplies Co.', contact_info: 'contact@techsupplies.com', }, { name: 'Office Essentials Ltd.', contact_info: 'info@officeessentials.com', }, { name: 'Gadget World', contact_info: 'support@gadgetworld.com', }, { name: 'Peripheral Partners', contact_info: 'sales@peripheralpartners.com', }, ]; // Similar logic for "relation_many" async function associateActivityWithUser() { const relatedUser0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Activity0 = await Activities.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Activity0?.setUser) { await Activity0.setUser(relatedUser0); } const relatedUser1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Activity1 = await Activities.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Activity1?.setUser) { await Activity1.setUser(relatedUser1); } const relatedUser2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Activity2 = await Activities.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Activity2?.setUser) { await Activity2.setUser(relatedUser2); } const relatedUser3 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Activity3 = await Activities.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Activity3?.setUser) { await Activity3.setUser(relatedUser3); } } async function associateBatchWithProduct() { const relatedProduct0 = await Products.findOne({ offset: Math.floor(Math.random() * (await Products.count())), }); const Batch0 = await Batches.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Batch0?.setProduct) { await Batch0.setProduct(relatedProduct0); } const relatedProduct1 = await Products.findOne({ offset: Math.floor(Math.random() * (await Products.count())), }); const Batch1 = await Batches.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Batch1?.setProduct) { await Batch1.setProduct(relatedProduct1); } const relatedProduct2 = await Products.findOne({ offset: Math.floor(Math.random() * (await Products.count())), }); const Batch2 = await Batches.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Batch2?.setProduct) { await Batch2.setProduct(relatedProduct2); } const relatedProduct3 = await Products.findOne({ offset: Math.floor(Math.random() * (await Products.count())), }); const Batch3 = await Batches.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Batch3?.setProduct) { await Batch3.setProduct(relatedProduct3); } } // Similar logic for "relation_many" // Similar logic for "relation_many" async function associateProductWithSupplier() { const relatedSupplier0 = await Suppliers.findOne({ offset: Math.floor(Math.random() * (await Suppliers.count())), }); const Product0 = await Products.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Product0?.setSupplier) { await Product0.setSupplier(relatedSupplier0); } const relatedSupplier1 = await Suppliers.findOne({ offset: Math.floor(Math.random() * (await Suppliers.count())), }); const Product1 = await Products.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Product1?.setSupplier) { await Product1.setSupplier(relatedSupplier1); } const relatedSupplier2 = await Suppliers.findOne({ offset: Math.floor(Math.random() * (await Suppliers.count())), }); const Product2 = await Products.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Product2?.setSupplier) { await Product2.setSupplier(relatedSupplier2); } const relatedSupplier3 = await Suppliers.findOne({ offset: Math.floor(Math.random() * (await Suppliers.count())), }); const Product3 = await Products.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Product3?.setSupplier) { await Product3.setSupplier(relatedSupplier3); } } // Similar logic for "relation_many" async function associateSaleWithCashier() { const relatedCashier0 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Sale0 = await Sales.findOne({ order: [['id', 'ASC']], offset: 0, }); if (Sale0?.setCashier) { await Sale0.setCashier(relatedCashier0); } const relatedCashier1 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Sale1 = await Sales.findOne({ order: [['id', 'ASC']], offset: 1, }); if (Sale1?.setCashier) { await Sale1.setCashier(relatedCashier1); } const relatedCashier2 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Sale2 = await Sales.findOne({ order: [['id', 'ASC']], offset: 2, }); if (Sale2?.setCashier) { await Sale2.setCashier(relatedCashier2); } const relatedCashier3 = await Users.findOne({ offset: Math.floor(Math.random() * (await Users.count())), }); const Sale3 = await Sales.findOne({ order: [['id', 'ASC']], offset: 3, }); if (Sale3?.setCashier) { await Sale3.setCashier(relatedCashier3); } } // Similar logic for "relation_many" module.exports = { up: async (queryInterface, Sequelize) => { await Activities.bulkCreate(ActivitiesData); await Batches.bulkCreate(BatchesData); await Locations.bulkCreate(LocationsData); await Products.bulkCreate(ProductsData); await Sales.bulkCreate(SalesData); await Suppliers.bulkCreate(SuppliersData); await Promise.all([ // Similar logic for "relation_many" await associateActivityWithUser(), await associateBatchWithProduct(), // Similar logic for "relation_many" // Similar logic for "relation_many" await associateProductWithSupplier(), // Similar logic for "relation_many" await associateSaleWithCashier(), // Similar logic for "relation_many" ]); }, down: async (queryInterface, Sequelize) => { await queryInterface.bulkDelete('activities', null, {}); await queryInterface.bulkDelete('batches', null, {}); await queryInterface.bulkDelete('locations', null, {}); await queryInterface.bulkDelete('products', null, {}); await queryInterface.bulkDelete('sales', null, {}); await queryInterface.bulkDelete('suppliers', null, {}); }, };