31017/backend/src/db/seeders/20231127130745-sample-data.js
2025-04-26 13:09:19 +00:00

671 lines
13 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Analytics = db.analytics;
const Customers = db.customers;
const Feedback = db.feedback;
const MenuItems = db.menu_items;
const OrderDetails = db.order_details;
const Orders = db.orders;
const Staff = db.staff;
const AnalyticsData = [
{
total_revenue: 1000,
total_selling_item: 150,
total_orders: 50,
},
{
total_revenue: 2000,
total_selling_item: 300,
total_orders: 100,
},
{
total_revenue: 1500,
total_selling_item: 200,
total_orders: 75,
},
{
total_revenue: 2500,
total_selling_item: 350,
total_orders: 125,
},
];
const CustomersData = [
{
customer_id: 1,
name: 'John Doe',
contact: '1234567890',
email: 'john.doe@example.com',
},
{
customer_id: 2,
name: 'Jane Smith',
contact: '0987654321',
email: 'jane.smith@example.com',
},
{
customer_id: 3,
name: 'Alice Johnson',
contact: '5551234567',
email: 'alice.johnson@example.com',
},
{
customer_id: 4,
name: 'Bob Brown',
contact: '4449876543',
email: 'bob.brown@example.com',
},
];
const FeedbackData = [
{
feedback_date: new Date('2023-10-01T13:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
rating: 5,
comments: 'Excellent service and delicious food!',
},
{
feedback_date: new Date('2023-10-02T14:30:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
rating: 4,
comments: 'Great food, but the service was a bit slow.',
},
{
feedback_date: new Date('2023-10-03T17:00:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
rating: 3,
comments: 'Average experience, nothing special.',
},
{
feedback_date: new Date('2023-10-04T11:45:00Z'),
// type code here for "relation_one" field
// type code here for "relation_one" field
rating: 5,
comments: 'Loved the ambiance and the food!',
},
];
const MenuItemsData = [
{
item_id: 1,
name: 'Margherita Pizza',
price: 8.99,
category: 'Dessert',
},
{
item_id: 2,
name: 'Caesar Salad',
price: 5.99,
category: 'Dessert',
},
{
item_id: 3,
name: 'Chocolate Cake',
price: 4.5,
category: 'Appetizer',
},
{
item_id: 4,
name: 'Espresso',
price: 2.5,
category: 'Dessert',
},
];
const OrderDetailsData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 2,
subtotal: 17.98,
amount: 25.47,
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 1,
subtotal: 5.99,
amount: 15.99,
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 2,
subtotal: 9,
amount: 9.5,
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 3,
subtotal: 7.5,
amount: 18.75,
},
];
const OrdersData = [
{
order_id: 1,
// type code here for "relation_one" field
// type code here for "relation_one" field
payment: 25.47,
status: 'Completed',
order_date: new Date('2023-10-01T12:30:00Z'),
},
{
order_id: 2,
// type code here for "relation_one" field
// type code here for "relation_one" field
payment: 15.99,
status: 'Completed',
order_date: new Date('2023-10-02T14:00:00Z'),
},
{
order_id: 3,
// type code here for "relation_one" field
// type code here for "relation_one" field
payment: 9.5,
status: 'Completed',
order_date: new Date('2023-10-03T16:45:00Z'),
},
{
order_id: 4,
// type code here for "relation_one" field
// type code here for "relation_one" field
payment: 18.75,
status: 'Completed',
order_date: new Date('2023-10-04T11:15:00Z'),
},
];
const StaffData = [
{
staff_id: 1,
name: 'Emily White',
role: 'Chef',
contact: '2223334444',
email: 'emily.white@example.com',
},
{
staff_id: 2,
name: 'Michael Green',
role: 'Chef',
contact: '3334445555',
email: 'michael.green@example.com',
},
{
staff_id: 3,
name: 'Sarah Black',
role: 'Chef',
contact: '4445556666',
email: 'sarah.black@example.com',
},
{
staff_id: 4,
name: 'David Blue',
role: 'Waiter',
contact: '5556667777',
email: 'david.blue@example.com',
},
];
// Similar logic for "relation_many"
async function associateFeedbackWithOrder() {
const relatedOrder0 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const Feedback0 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Feedback0?.setOrder) {
await Feedback0.setOrder(relatedOrder0);
}
const relatedOrder1 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const Feedback1 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Feedback1?.setOrder) {
await Feedback1.setOrder(relatedOrder1);
}
const relatedOrder2 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const Feedback2 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Feedback2?.setOrder) {
await Feedback2.setOrder(relatedOrder2);
}
const relatedOrder3 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const Feedback3 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Feedback3?.setOrder) {
await Feedback3.setOrder(relatedOrder3);
}
}
async function associateFeedbackWithCustomer() {
const relatedCustomer0 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Feedback0 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Feedback0?.setCustomer) {
await Feedback0.setCustomer(relatedCustomer0);
}
const relatedCustomer1 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Feedback1 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Feedback1?.setCustomer) {
await Feedback1.setCustomer(relatedCustomer1);
}
const relatedCustomer2 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Feedback2 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Feedback2?.setCustomer) {
await Feedback2.setCustomer(relatedCustomer2);
}
const relatedCustomer3 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Feedback3 = await Feedback.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Feedback3?.setCustomer) {
await Feedback3.setCustomer(relatedCustomer3);
}
}
async function associateOrderDetailWithOrder() {
const relatedOrder0 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const OrderDetail0 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (OrderDetail0?.setOrder) {
await OrderDetail0.setOrder(relatedOrder0);
}
const relatedOrder1 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const OrderDetail1 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (OrderDetail1?.setOrder) {
await OrderDetail1.setOrder(relatedOrder1);
}
const relatedOrder2 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const OrderDetail2 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (OrderDetail2?.setOrder) {
await OrderDetail2.setOrder(relatedOrder2);
}
const relatedOrder3 = await Orders.findOne({
offset: Math.floor(Math.random() * (await Orders.count())),
});
const OrderDetail3 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (OrderDetail3?.setOrder) {
await OrderDetail3.setOrder(relatedOrder3);
}
}
async function associateOrderDetailWithItem() {
const relatedItem0 = await MenuItems.findOne({
offset: Math.floor(Math.random() * (await MenuItems.count())),
});
const OrderDetail0 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (OrderDetail0?.setItem) {
await OrderDetail0.setItem(relatedItem0);
}
const relatedItem1 = await MenuItems.findOne({
offset: Math.floor(Math.random() * (await MenuItems.count())),
});
const OrderDetail1 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (OrderDetail1?.setItem) {
await OrderDetail1.setItem(relatedItem1);
}
const relatedItem2 = await MenuItems.findOne({
offset: Math.floor(Math.random() * (await MenuItems.count())),
});
const OrderDetail2 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (OrderDetail2?.setItem) {
await OrderDetail2.setItem(relatedItem2);
}
const relatedItem3 = await MenuItems.findOne({
offset: Math.floor(Math.random() * (await MenuItems.count())),
});
const OrderDetail3 = await OrderDetails.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (OrderDetail3?.setItem) {
await OrderDetail3.setItem(relatedItem3);
}
}
async function associateOrderWithCustomer() {
const relatedCustomer0 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Order0 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Order0?.setCustomer) {
await Order0.setCustomer(relatedCustomer0);
}
const relatedCustomer1 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Order1 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Order1?.setCustomer) {
await Order1.setCustomer(relatedCustomer1);
}
const relatedCustomer2 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Order2 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Order2?.setCustomer) {
await Order2.setCustomer(relatedCustomer2);
}
const relatedCustomer3 = await Customers.findOne({
offset: Math.floor(Math.random() * (await Customers.count())),
});
const Order3 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Order3?.setCustomer) {
await Order3.setCustomer(relatedCustomer3);
}
}
async function associateOrderWithStaff() {
const relatedStaff0 = await Staff.findOne({
offset: Math.floor(Math.random() * (await Staff.count())),
});
const Order0 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Order0?.setStaff) {
await Order0.setStaff(relatedStaff0);
}
const relatedStaff1 = await Staff.findOne({
offset: Math.floor(Math.random() * (await Staff.count())),
});
const Order1 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Order1?.setStaff) {
await Order1.setStaff(relatedStaff1);
}
const relatedStaff2 = await Staff.findOne({
offset: Math.floor(Math.random() * (await Staff.count())),
});
const Order2 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Order2?.setStaff) {
await Order2.setStaff(relatedStaff2);
}
const relatedStaff3 = await Staff.findOne({
offset: Math.floor(Math.random() * (await Staff.count())),
});
const Order3 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Order3?.setStaff) {
await Order3.setStaff(relatedStaff3);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Analytics.bulkCreate(AnalyticsData);
await Customers.bulkCreate(CustomersData);
await Feedback.bulkCreate(FeedbackData);
await MenuItems.bulkCreate(MenuItemsData);
await OrderDetails.bulkCreate(OrderDetailsData);
await Orders.bulkCreate(OrdersData);
await Staff.bulkCreate(StaffData);
await Promise.all([
// Similar logic for "relation_many"
await associateFeedbackWithOrder(),
await associateFeedbackWithCustomer(),
await associateOrderDetailWithOrder(),
await associateOrderDetailWithItem(),
await associateOrderWithCustomer(),
await associateOrderWithStaff(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('analytics', null, {});
await queryInterface.bulkDelete('customers', null, {});
await queryInterface.bulkDelete('feedback', null, {});
await queryInterface.bulkDelete('menu_items', null, {});
await queryInterface.bulkDelete('order_details', null, {});
await queryInterface.bulkDelete('orders', null, {});
await queryInterface.bulkDelete('staff', null, {});
},
};