671 lines
13 KiB
JavaScript
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, {});
|
|
},
|
|
};
|