29751/backend/src/db/seeders/20231127130745-sample-data.js
2025-03-10 03:24:47 +00:00

1454 lines
34 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const ClassRegistrations = db.class_registrations;
const Classes = db.classes;
const Memberships = db.memberships;
const Payments = db.payments;
const Products = db.products;
const Sales = db.sales;
const UserMemberships = db.user_memberships;
const Organizations = db.organizations;
const ClassRegistrationsData = [
{
// type code here for "relation_one" field
attendance: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
attendance: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
attendance: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
attendance: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
attendance: true,
// type code here for "relation_one" field
},
];
const ClassesData = [
{
name: 'Yoga Basics',
description: 'Beginner yoga class focusing on flexibility.',
// type code here for "relation_one" field
schedule_date: new Date('2023-10-10'),
start_time: new Date('09:00'),
end_time: new Date('10:00'),
capacity: 20,
// type code here for "relation_one" field
},
{
name: 'HIIT Workout',
description: 'High-intensity interval training for all levels.',
// type code here for "relation_one" field
schedule_date: new Date('2023-10-11'),
start_time: new Date('18:00'),
end_time: new Date('19:00'),
capacity: 15,
// type code here for "relation_one" field
},
{
name: 'Pilates Core',
description: 'Strengthen your core with Pilates exercises.',
// type code here for "relation_one" field
schedule_date: new Date('2023-10-12'),
start_time: new Date('11:00'),
end_time: new Date('12:00'),
capacity: 10,
// type code here for "relation_one" field
},
{
name: 'Zumba Dance',
description: 'Dance your way to fitness with Zumba.',
// type code here for "relation_one" field
schedule_date: new Date('2023-10-13'),
start_time: new Date('17:00'),
end_time: new Date('18:00'),
capacity: 25,
// type code here for "relation_one" field
},
{
name: 'Spin Class',
description: 'Cardio workout on stationary bikes.',
// type code here for "relation_one" field
schedule_date: new Date('2023-10-14'),
start_time: new Date('07:00'),
end_time: new Date('08:00'),
capacity: 30,
// type code here for "relation_one" field
},
];
const MembershipsData = [
{
name: 'Basic Plan',
description: 'Access to gym facilities during off-peak hours.',
price: 29.99,
duration: 'Monthly',
// type code here for "relation_one" field
},
{
name: 'Standard Plan',
description: 'Full access to gym facilities and group classes.',
price: 49.99,
duration: 'Yearly',
// type code here for "relation_one" field
},
{
name: 'Premium Plan',
description: 'Includes personal training sessions and spa access.',
price: 79.99,
duration: 'Monthly',
// type code here for "relation_one" field
},
{
name: 'Annual Plan',
description: 'Yearly membership with a discount.',
price: 499.99,
duration: 'Monthly',
// type code here for "relation_one" field
},
{
name: 'Family Plan',
description: 'Membership for up to four family members.',
price: 99.99,
duration: 'Yearly',
// type code here for "relation_one" field
},
];
const PaymentsData = [
{
// type code here for "relation_one" field
payment_date: new Date('2023-09-01'),
amount: 49.99,
payment_method: 'PayPal',
transaction_id: 'txn_001',
payment_type: 'Membership',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
payment_date: new Date('2023-09-05'),
amount: 29.99,
payment_method: 'Stripe',
transaction_id: 'txn_002',
payment_type: 'Product',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
payment_date: new Date('2023-09-10'),
amount: 79.99,
payment_method: 'PayPal',
transaction_id: 'txn_003',
payment_type: 'Membership',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
payment_date: new Date('2023-09-15'),
amount: 99.99,
payment_method: 'PayPal',
transaction_id: 'txn_004',
payment_type: 'Product',
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
payment_date: new Date('2023-09-20'),
amount: 49.99,
payment_method: 'PayPal',
transaction_id: 'txn_005',
payment_type: 'Product',
// type code here for "relation_one" field
},
];
const ProductsData = [
{
name: 'Protein Shake',
description: 'Nutritional protein shake for post-workout recovery.',
price: 5.99,
stock_quantity: 100,
// type code here for "relation_one" field
},
{
name: 'Yoga Mat',
description: 'Non-slip yoga mat for all levels.',
price: 19.99,
stock_quantity: 50,
// type code here for "relation_one" field
},
{
name: 'Dumbbell Set',
description: 'Adjustable dumbbell set for strength training.',
price: 49.99,
stock_quantity: 30,
// type code here for "relation_one" field
},
{
name: 'Gym Towel',
description: 'Absorbent towel for gym use.',
price: 9.99,
stock_quantity: 200,
// type code here for "relation_one" field
},
{
name: 'Water Bottle',
description: 'Reusable water bottle with gym logo.',
price: 14.99,
stock_quantity: 150,
// type code here for "relation_one" field
},
];
const SalesData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 2,
sale_date: new Date('2023-09-01'),
total_amount: 11.98,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 1,
sale_date: new Date('2023-09-05'),
total_amount: 19.99,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 1,
sale_date: new Date('2023-09-10'),
total_amount: 49.99,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 3,
sale_date: new Date('2023-09-15'),
total_amount: 29.97,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
quantity: 1,
sale_date: new Date('2023-09-20'),
total_amount: 14.99,
// type code here for "relation_one" field
},
];
const UserMembershipsData = [
{
// type code here for "relation_one" field
// type code here for "relation_one" field
start_date: new Date('2023-01-01'),
end_date: new Date('2023-12-31'),
active: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
start_date: new Date('2023-02-01'),
end_date: new Date('2023-08-01'),
active: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
start_date: new Date('2023-03-01'),
end_date: new Date('2023-09-01'),
active: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
start_date: new Date('2023-04-01'),
end_date: new Date('2024-04-01'),
active: true,
// type code here for "relation_one" field
},
{
// type code here for "relation_one" field
// type code here for "relation_one" field
start_date: new Date('2023-05-01'),
end_date: new Date('2023-11-01'),
active: true,
// type code here for "relation_one" field
},
];
const OrganizationsData = [
{
name: 'Max Delbruck',
},
{
name: 'Paul Ehrlich',
},
{
name: 'Edward Teller',
},
{
name: 'Galileo Galilei',
},
{
name: 'Albrecht von Haller',
},
];
// Similar logic for "relation_many"
async function associateUserWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const User0 = await Users.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (User0?.setOrganization) {
await User0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const User1 = await Users.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (User1?.setOrganization) {
await User1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const User2 = await Users.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (User2?.setOrganization) {
await User2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const User3 = await Users.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (User3?.setOrganization) {
await User3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const User4 = await Users.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (User4?.setOrganization) {
await User4.setOrganization(relatedOrganization4);
}
}
async function associateClassRegistrationWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ClassRegistration0 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (ClassRegistration0?.setUser) {
await ClassRegistration0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ClassRegistration1 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (ClassRegistration1?.setUser) {
await ClassRegistration1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ClassRegistration2 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (ClassRegistration2?.setUser) {
await ClassRegistration2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ClassRegistration3 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (ClassRegistration3?.setUser) {
await ClassRegistration3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ClassRegistration4 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (ClassRegistration4?.setUser) {
await ClassRegistration4.setUser(relatedUser4);
}
}
async function associateClassRegistrationWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const ClassRegistration0 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (ClassRegistration0?.setOrganization) {
await ClassRegistration0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const ClassRegistration1 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (ClassRegistration1?.setOrganization) {
await ClassRegistration1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const ClassRegistration2 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (ClassRegistration2?.setOrganization) {
await ClassRegistration2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const ClassRegistration3 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (ClassRegistration3?.setOrganization) {
await ClassRegistration3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const ClassRegistration4 = await ClassRegistrations.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (ClassRegistration4?.setOrganization) {
await ClassRegistration4.setOrganization(relatedOrganization4);
}
}
async function associateClassWithTrainer() {
const relatedTrainer0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Class0 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Class0?.setTrainer) {
await Class0.setTrainer(relatedTrainer0);
}
const relatedTrainer1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Class1 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Class1?.setTrainer) {
await Class1.setTrainer(relatedTrainer1);
}
const relatedTrainer2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Class2 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Class2?.setTrainer) {
await Class2.setTrainer(relatedTrainer2);
}
const relatedTrainer3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Class3 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Class3?.setTrainer) {
await Class3.setTrainer(relatedTrainer3);
}
const relatedTrainer4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Class4 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Class4?.setTrainer) {
await Class4.setTrainer(relatedTrainer4);
}
}
async function associateClassWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Class0 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Class0?.setOrganization) {
await Class0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Class1 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Class1?.setOrganization) {
await Class1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Class2 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Class2?.setOrganization) {
await Class2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Class3 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Class3?.setOrganization) {
await Class3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Class4 = await Classes.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Class4?.setOrganization) {
await Class4.setOrganization(relatedOrganization4);
}
}
async function associateMembershipWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Membership0 = await Memberships.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Membership0?.setOrganization) {
await Membership0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Membership1 = await Memberships.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Membership1?.setOrganization) {
await Membership1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Membership2 = await Memberships.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Membership2?.setOrganization) {
await Membership2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Membership3 = await Memberships.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Membership3?.setOrganization) {
await Membership3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Membership4 = await Memberships.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Membership4?.setOrganization) {
await Membership4.setOrganization(relatedOrganization4);
}
}
async function associatePaymentWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payment0 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Payment0?.setUser) {
await Payment0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payment1 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Payment1?.setUser) {
await Payment1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payment2 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Payment2?.setUser) {
await Payment2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payment3 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Payment3?.setUser) {
await Payment3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Payment4 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Payment4?.setUser) {
await Payment4.setUser(relatedUser4);
}
}
async function associatePaymentWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Payment0 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Payment0?.setOrganization) {
await Payment0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Payment1 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Payment1?.setOrganization) {
await Payment1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Payment2 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Payment2?.setOrganization) {
await Payment2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Payment3 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Payment3?.setOrganization) {
await Payment3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Payment4 = await Payments.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Payment4?.setOrganization) {
await Payment4.setOrganization(relatedOrganization4);
}
}
async function associateProductWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Product0 = await Products.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Product0?.setOrganization) {
await Product0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Product1 = await Products.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Product1?.setOrganization) {
await Product1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Product2 = await Products.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Product2?.setOrganization) {
await Product2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Product3 = await Products.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Product3?.setOrganization) {
await Product3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Product4 = await Products.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Product4?.setOrganization) {
await Product4.setOrganization(relatedOrganization4);
}
}
async function associateSaleWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Sale0 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Sale0?.setUser) {
await Sale0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Sale1 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Sale1?.setUser) {
await Sale1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Sale2 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Sale2?.setUser) {
await Sale2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Sale3 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Sale3?.setUser) {
await Sale3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Sale4 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Sale4?.setUser) {
await Sale4.setUser(relatedUser4);
}
}
async function associateSaleWithProduct() {
const relatedProduct0 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const Sale0 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Sale0?.setProduct) {
await Sale0.setProduct(relatedProduct0);
}
const relatedProduct1 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const Sale1 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Sale1?.setProduct) {
await Sale1.setProduct(relatedProduct1);
}
const relatedProduct2 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const Sale2 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Sale2?.setProduct) {
await Sale2.setProduct(relatedProduct2);
}
const relatedProduct3 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const Sale3 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Sale3?.setProduct) {
await Sale3.setProduct(relatedProduct3);
}
const relatedProduct4 = await Products.findOne({
offset: Math.floor(Math.random() * (await Products.count())),
});
const Sale4 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Sale4?.setProduct) {
await Sale4.setProduct(relatedProduct4);
}
}
async function associateSaleWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Sale0 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Sale0?.setOrganization) {
await Sale0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Sale1 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Sale1?.setOrganization) {
await Sale1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Sale2 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Sale2?.setOrganization) {
await Sale2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Sale3 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Sale3?.setOrganization) {
await Sale3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const Sale4 = await Sales.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Sale4?.setOrganization) {
await Sale4.setOrganization(relatedOrganization4);
}
}
async function associateUserMembershipWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const UserMembership0 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (UserMembership0?.setUser) {
await UserMembership0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const UserMembership1 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (UserMembership1?.setUser) {
await UserMembership1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const UserMembership2 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (UserMembership2?.setUser) {
await UserMembership2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const UserMembership3 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (UserMembership3?.setUser) {
await UserMembership3.setUser(relatedUser3);
}
const relatedUser4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const UserMembership4 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (UserMembership4?.setUser) {
await UserMembership4.setUser(relatedUser4);
}
}
async function associateUserMembershipWithMembership() {
const relatedMembership0 = await Memberships.findOne({
offset: Math.floor(Math.random() * (await Memberships.count())),
});
const UserMembership0 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (UserMembership0?.setMembership) {
await UserMembership0.setMembership(relatedMembership0);
}
const relatedMembership1 = await Memberships.findOne({
offset: Math.floor(Math.random() * (await Memberships.count())),
});
const UserMembership1 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (UserMembership1?.setMembership) {
await UserMembership1.setMembership(relatedMembership1);
}
const relatedMembership2 = await Memberships.findOne({
offset: Math.floor(Math.random() * (await Memberships.count())),
});
const UserMembership2 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (UserMembership2?.setMembership) {
await UserMembership2.setMembership(relatedMembership2);
}
const relatedMembership3 = await Memberships.findOne({
offset: Math.floor(Math.random() * (await Memberships.count())),
});
const UserMembership3 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (UserMembership3?.setMembership) {
await UserMembership3.setMembership(relatedMembership3);
}
const relatedMembership4 = await Memberships.findOne({
offset: Math.floor(Math.random() * (await Memberships.count())),
});
const UserMembership4 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (UserMembership4?.setMembership) {
await UserMembership4.setMembership(relatedMembership4);
}
}
async function associateUserMembershipWithOrganization() {
const relatedOrganization0 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const UserMembership0 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (UserMembership0?.setOrganization) {
await UserMembership0.setOrganization(relatedOrganization0);
}
const relatedOrganization1 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const UserMembership1 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (UserMembership1?.setOrganization) {
await UserMembership1.setOrganization(relatedOrganization1);
}
const relatedOrganization2 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const UserMembership2 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (UserMembership2?.setOrganization) {
await UserMembership2.setOrganization(relatedOrganization2);
}
const relatedOrganization3 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const UserMembership3 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (UserMembership3?.setOrganization) {
await UserMembership3.setOrganization(relatedOrganization3);
}
const relatedOrganization4 = await Organizations.findOne({
offset: Math.floor(Math.random() * (await Organizations.count())),
});
const UserMembership4 = await UserMemberships.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (UserMembership4?.setOrganization) {
await UserMembership4.setOrganization(relatedOrganization4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await ClassRegistrations.bulkCreate(ClassRegistrationsData);
await Classes.bulkCreate(ClassesData);
await Memberships.bulkCreate(MembershipsData);
await Payments.bulkCreate(PaymentsData);
await Products.bulkCreate(ProductsData);
await Sales.bulkCreate(SalesData);
await UserMemberships.bulkCreate(UserMembershipsData);
await Organizations.bulkCreate(OrganizationsData);
await Promise.all([
// Similar logic for "relation_many"
await associateUserWithOrganization(),
await associateClassRegistrationWithUser(),
await associateClassRegistrationWithOrganization(),
await associateClassWithTrainer(),
await associateClassWithOrganization(),
await associateMembershipWithOrganization(),
await associatePaymentWithUser(),
await associatePaymentWithOrganization(),
await associateProductWithOrganization(),
await associateSaleWithUser(),
await associateSaleWithProduct(),
await associateSaleWithOrganization(),
await associateUserMembershipWithUser(),
await associateUserMembershipWithMembership(),
await associateUserMembershipWithOrganization(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('class_registrations', null, {});
await queryInterface.bulkDelete('classes', null, {});
await queryInterface.bulkDelete('memberships', null, {});
await queryInterface.bulkDelete('payments', null, {});
await queryInterface.bulkDelete('products', null, {});
await queryInterface.bulkDelete('sales', null, {});
await queryInterface.bulkDelete('user_memberships', null, {});
await queryInterface.bulkDelete('organizations', null, {});
},
};