33492/backend/src/db/seeders/20231127130745-sample-data.js
2025-08-19 18:34:29 +00:00

485 lines
10 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Bottles = db.bottles;
const Brands = db.brands;
const Distilleries = db.distilleries;
const BottlesData = [
{
name: 'Old Forester 1920',
// type code here for "relation_one" field
proof: 115,
type: 'Rye',
notes: 'Rich and full-bodied',
tasting_notes: 'Caramel, vanilla, and oak',
msrp_range: '$60-$70',
secondary_value_range: '$80-$100',
opened_bottle_indicator: false,
quantity: 1,
barcode: '123456789012',
// type code here for "images" field
age: 4,
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Lagavulin 16',
// type code here for "relation_one" field
proof: 86,
type: 'Bourbon',
notes: 'Peaty and smoky',
tasting_notes: 'Smoke, seaweed, and vanilla',
msrp_range: '$100-$120',
secondary_value_range: '$150-$180',
opened_bottle_indicator: true,
quantity: 1,
barcode: '234567890123',
// type code here for "images" field
age: 16,
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Buffalo Trace',
// type code here for "relation_one" field
proof: 90,
type: 'Bourbon',
notes: 'Smooth and balanced',
tasting_notes: 'Vanilla, caramel, and spice',
msrp_range: '$25-$35',
secondary_value_range: '$40-$50',
opened_bottle_indicator: false,
quantity: 2,
barcode: '345678901234',
// type code here for "images" field
age: 8,
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Redbreast 12',
// type code here for "relation_one" field
proof: 80,
type: 'Rye',
notes: 'Rich and complex',
tasting_notes: 'Sherry, fruit, and spice',
msrp_range: '$50-$60',
secondary_value_range: '$70-$90',
opened_bottle_indicator: true,
quantity: 1,
barcode: '456789012345',
// type code here for "images" field
age: 12,
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Pappy Van Winkle 15',
// type code here for "relation_one" field
proof: 107,
type: 'Bourbon',
notes: 'Rare and exquisite',
tasting_notes: 'Vanilla, oak, and spice',
msrp_range: '$120-$150',
secondary_value_range: '$2000-$2500',
opened_bottle_indicator: true,
quantity: 1,
barcode: '567890123456',
// type code here for "images" field
age: 15,
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const BrandsData = [
{
name: 'Old Forester',
// type code here for "relation_one" field
},
{
name: 'Lagavulin',
// type code here for "relation_one" field
},
{
name: 'Buffalo Trace',
// type code here for "relation_one" field
},
{
name: 'Redbreast',
// type code here for "relation_one" field
},
{
name: 'Pappy Van Winkle',
// type code here for "relation_one" field
},
];
const DistilleriesData = [
{
name: 'Old Forester',
},
{
name: 'Lagavulin',
},
{
name: 'Buffalo Trace',
},
{
name: 'Midleton',
},
{
name: 'Old Rip Van Winkle',
},
];
// Similar logic for "relation_many"
async function associateBottleWithBrand() {
const relatedBrand0 = await Brands.findOne({
offset: Math.floor(Math.random() * (await Brands.count())),
});
const Bottle0 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Bottle0?.setBrand) {
await Bottle0.setBrand(relatedBrand0);
}
const relatedBrand1 = await Brands.findOne({
offset: Math.floor(Math.random() * (await Brands.count())),
});
const Bottle1 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Bottle1?.setBrand) {
await Bottle1.setBrand(relatedBrand1);
}
const relatedBrand2 = await Brands.findOne({
offset: Math.floor(Math.random() * (await Brands.count())),
});
const Bottle2 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Bottle2?.setBrand) {
await Bottle2.setBrand(relatedBrand2);
}
const relatedBrand3 = await Brands.findOne({
offset: Math.floor(Math.random() * (await Brands.count())),
});
const Bottle3 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Bottle3?.setBrand) {
await Bottle3.setBrand(relatedBrand3);
}
const relatedBrand4 = await Brands.findOne({
offset: Math.floor(Math.random() * (await Brands.count())),
});
const Bottle4 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Bottle4?.setBrand) {
await Bottle4.setBrand(relatedBrand4);
}
}
async function associateBottleWithDistillery() {
const relatedDistillery0 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Bottle0 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Bottle0?.setDistillery) {
await Bottle0.setDistillery(relatedDistillery0);
}
const relatedDistillery1 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Bottle1 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Bottle1?.setDistillery) {
await Bottle1.setDistillery(relatedDistillery1);
}
const relatedDistillery2 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Bottle2 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Bottle2?.setDistillery) {
await Bottle2.setDistillery(relatedDistillery2);
}
const relatedDistillery3 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Bottle3 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Bottle3?.setDistillery) {
await Bottle3.setDistillery(relatedDistillery3);
}
const relatedDistillery4 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Bottle4 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Bottle4?.setDistillery) {
await Bottle4.setDistillery(relatedDistillery4);
}
}
async function associateBottleWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Bottle0 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Bottle0?.setUser) {
await Bottle0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Bottle1 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Bottle1?.setUser) {
await Bottle1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Bottle2 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Bottle2?.setUser) {
await Bottle2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Bottle3 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Bottle3?.setUser) {
await Bottle3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Bottle4 = await Bottles.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Bottle4?.setUser) {
await Bottle4.setUser(relatedUser4);
}
}
async function associateBrandWithDistillery() {
const relatedDistillery0 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Brand0 = await Brands.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Brand0?.setDistillery) {
await Brand0.setDistillery(relatedDistillery0);
}
const relatedDistillery1 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Brand1 = await Brands.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Brand1?.setDistillery) {
await Brand1.setDistillery(relatedDistillery1);
}
const relatedDistillery2 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Brand2 = await Brands.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Brand2?.setDistillery) {
await Brand2.setDistillery(relatedDistillery2);
}
const relatedDistillery3 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Brand3 = await Brands.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Brand3?.setDistillery) {
await Brand3.setDistillery(relatedDistillery3);
}
const relatedDistillery4 = await Distilleries.findOne({
offset: Math.floor(Math.random() * (await Distilleries.count())),
});
const Brand4 = await Brands.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Brand4?.setDistillery) {
await Brand4.setDistillery(relatedDistillery4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Bottles.bulkCreate(BottlesData);
await Brands.bulkCreate(BrandsData);
await Distilleries.bulkCreate(DistilleriesData);
await Promise.all([
// Similar logic for "relation_many"
await associateBottleWithBrand(),
await associateBottleWithDistillery(),
await associateBottleWithUser(),
await associateBrandWithDistillery(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('bottles', null, {});
await queryInterface.bulkDelete('brands', null, {});
await queryInterface.bulkDelete('distilleries', null, {});
},
};