31161/backend/src/db/seeders/20231127130745-sample-data.js
2025-05-02 01:36:41 +00:00

913 lines
21 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Categories = db.categories;
const OrderItems = db.order_items;
const Orders = db.orders;
const Products = db.products;
const Locations = db.locations;
const CategoriesData = [
{
name: 'Cold Drinks',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Hot Drinks',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Pastries',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Food',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Desserts',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const OrderItemsData = [
{
// type code here for "relation_one" field
quantity: 2,
total_price: 9,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
quantity: 1,
total_price: 3.5,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
quantity: 3,
total_price: 6,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
quantity: 1,
total_price: 5,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
quantity: 2,
total_price: 6,
// type code here for "relation_one" field
},
];
const OrdersData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_many" field
order_date: new Date('2023-10-01T10:00:00Z'),
status: 'inpreparation',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_many" field
order_date: new Date('2023-10-01T11:00:00Z'),
status: 'inpreparation',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_many" field
order_date: new Date('2023-10-01T12:00:00Z'),
status: 'ready',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_many" field
order_date: new Date('2023-10-01T13:00:00Z'),
status: 'served',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
// type code here for "relation_many" field
order_date: new Date('2023-10-01T14:00:00Z'),
status: 'served',
// type code here for "relation_one" field
},
];
const ProductsData = [
{
name: 'Iced Latte',
price: 4.5,
description: 'Chilled espresso with milk',
// type code here for "images" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Cappuccino',
price: 3.5,
description: 'Espresso with steamed milk foam',
// type code here for "images" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Croissant',
price: 2,
description: 'Buttery flaky pastry',
// type code here for "images" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Grilled Cheese Sandwich',
price: 5,
description: 'Cheese melted between toasted bread',
// type code here for "images" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Chocolate Cake',
price: 3,
description: 'Rich chocolate layered cake',
// type code here for "images" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const LocationsData = [
{
name: 'Downtown Cafe',
},
{
name: 'Uptown Bistro',
},
{
name: 'Seaside Diner',
},
{
name: 'Mountain Retreat',
},
{
name: 'City Central Eatery',
},
];
// Similar logic for "relation_many"
async function associateUserWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const User0 = await Users.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (User0?.setLocation) {
await User0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const User1 = await Users.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (User1?.setLocation) {
await User1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const User2 = await Users.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (User2?.setLocation) {
await User2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const User3 = await Users.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (User3?.setLocation) {
await User3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const User4 = await Users.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (User4?.setLocation) {
await User4.setLocation(relatedLocation4);
}
}
// Similar logic for "relation_many"
async function associateCategoryWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category0 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Category0?.setLocation) {
await Category0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category1 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Category1?.setLocation) {
await Category1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category2 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Category2?.setLocation) {
await Category2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category3 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Category3?.setLocation) {
await Category3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category4 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Category4?.setLocation) {
await Category4.setLocation(relatedLocation4);
}
}
async function associateCategoryWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category0 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Category0?.setLocation) {
await Category0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category1 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Category1?.setLocation) {
await Category1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category2 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Category2?.setLocation) {
await Category2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category3 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Category3?.setLocation) {
await Category3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Category4 = await Categories.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Category4?.setLocation) {
await Category4.setLocation(relatedLocation4);
}
}
async function associateOrderItemWithProduct() {
const relatedProduct0 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const OrderItem0 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (OrderItem0?.setProduct) {
await OrderItem0.setProduct(relatedProduct0);
}
const relatedProduct1 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const OrderItem1 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (OrderItem1?.setProduct) {
await OrderItem1.setProduct(relatedProduct1);
}
const relatedProduct2 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const OrderItem2 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (OrderItem2?.setProduct) {
await OrderItem2.setProduct(relatedProduct2);
}
const relatedProduct3 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const OrderItem3 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (OrderItem3?.setProduct) {
await OrderItem3.setProduct(relatedProduct3);
}
const relatedProduct4 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const OrderItem4 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (OrderItem4?.setProduct) {
await OrderItem4.setProduct(relatedProduct4);
}
}
async function associateOrderItemWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const OrderItem0 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (OrderItem0?.setLocation) {
await OrderItem0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const OrderItem1 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (OrderItem1?.setLocation) {
await OrderItem1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const OrderItem2 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (OrderItem2?.setLocation) {
await OrderItem2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const OrderItem3 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (OrderItem3?.setLocation) {
await OrderItem3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const OrderItem4 = await OrderItems.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (OrderItem4?.setLocation) {
await OrderItem4.setLocation(relatedLocation4);
}
}
async function associateOrderWithClient() {
const relatedClient0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Order0 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Order0?.setClient) {
await Order0.setClient(relatedClient0);
}
const relatedClient1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Order1 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Order1?.setClient) {
await Order1.setClient(relatedClient1);
}
const relatedClient2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Order2 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Order2?.setClient) {
await Order2.setClient(relatedClient2);
}
const relatedClient3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Order3 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Order3?.setClient) {
await Order3.setClient(relatedClient3);
}
const relatedClient4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Order4 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Order4?.setClient) {
await Order4.setClient(relatedClient4);
}
}
async function associateOrderWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order0 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Order0?.setLocation) {
await Order0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order1 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Order1?.setLocation) {
await Order1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order2 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Order2?.setLocation) {
await Order2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order3 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Order3?.setLocation) {
await Order3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order4 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Order4?.setLocation) {
await Order4.setLocation(relatedLocation4);
}
}
// Similar logic for "relation_many"
async function associateOrderWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order0 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Order0?.setLocation) {
await Order0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order1 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Order1?.setLocation) {
await Order1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order2 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Order2?.setLocation) {
await Order2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order3 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Order3?.setLocation) {
await Order3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Order4 = await Orders.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Order4?.setLocation) {
await Order4.setLocation(relatedLocation4);
}
}
async function associateProductWithCategory() {
const relatedCategory0 = await Categories.findOne({
offset: Math.floor(Math.random() * (await Categories.count())),
});
const Product0 = await Products.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Product0?.setCategory) {
await Product0.setCategory(relatedCategory0);
}
const relatedCategory1 = await Categories.findOne({
offset: Math.floor(Math.random() * (await Categories.count())),
});
const Product1 = await Products.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Product1?.setCategory) {
await Product1.setCategory(relatedCategory1);
}
const relatedCategory2 = await Categories.findOne({
offset: Math.floor(Math.random() * (await Categories.count())),
});
const Product2 = await Products.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Product2?.setCategory) {
await Product2.setCategory(relatedCategory2);
}
const relatedCategory3 = await Categories.findOne({
offset: Math.floor(Math.random() * (await Categories.count())),
});
const Product3 = await Products.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Product3?.setCategory) {
await Product3.setCategory(relatedCategory3);
}
const relatedCategory4 = await Categories.findOne({
offset: Math.floor(Math.random() * (await Categories.count())),
});
const Product4 = await Products.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Product4?.setCategory) {
await Product4.setCategory(relatedCategory4);
}
}
async function associateProductWithLocation() {
const relatedLocation0 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Product0 = await Products.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Product0?.setLocation) {
await Product0.setLocation(relatedLocation0);
}
const relatedLocation1 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Product1 = await Products.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Product1?.setLocation) {
await Product1.setLocation(relatedLocation1);
}
const relatedLocation2 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Product2 = await Products.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Product2?.setLocation) {
await Product2.setLocation(relatedLocation2);
}
const relatedLocation3 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Product3 = await Products.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Product3?.setLocation) {
await Product3.setLocation(relatedLocation3);
}
const relatedLocation4 = await Locations.findOne({
offset: Math.floor(Math.random() * (await Locations.count())),
});
const Product4 = await Products.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Product4?.setLocation) {
await Product4.setLocation(relatedLocation4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Categories.bulkCreate(CategoriesData);
await OrderItems.bulkCreate(OrderItemsData);
await Orders.bulkCreate(OrdersData);
await Products.bulkCreate(ProductsData);
await Locations.bulkCreate(LocationsData);
await Promise.all([
// Similar logic for "relation_many"
await associateUserWithLocation(),
// Similar logic for "relation_many"
await associateCategoryWithLocation(),
await associateCategoryWithLocation(),
await associateOrderItemWithProduct(),
await associateOrderItemWithLocation(),
await associateOrderWithClient(),
await associateOrderWithLocation(),
// Similar logic for "relation_many"
await associateOrderWithLocation(),
await associateProductWithCategory(),
await associateProductWithLocation(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('categories', null, {});
await queryInterface.bulkDelete('order_items', null, {});
await queryInterface.bulkDelete('orders', null, {});
await queryInterface.bulkDelete('products', null, {});
await queryInterface.bulkDelete('locations', null, {});
},
};