30347/backend/src/db/seeders/20231127130745-sample-data.js
2025-05-10 10:57:46 +00:00

668 lines
14 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Contests = db.contests;
const Matches = db.matches;
const Players = db.players;
const Sports = db.sports;
const Teams = db.teams;
const Transactions = db.transactions;
const Wallets = db.wallets;
const ContestsData = [
{
name: 'Mega Contest',
type: 'private',
entry_fee: 50,
prize_pool: 5000,
// type code here for "relation_one" field
},
{
name: 'Practice Contest',
type: 'head_to_head',
entry_fee: 0,
prize_pool: 0,
// type code here for "relation_one" field
},
{
name: 'Private League',
type: 'private',
entry_fee: 20,
prize_pool: 2000,
// type code here for "relation_one" field
},
{
name: 'Head-to-Head Battle',
type: 'paid',
entry_fee: 10,
prize_pool: 100,
// type code here for "relation_one" field
},
];
const MatchesData = [
{
title: 'India vs Australia',
start_time: new Date('2023-11-01T10:00:00Z'),
end_time: new Date('2023-11-01T18:00:00Z'),
// type code here for "relation_one" field
},
{
title: 'Real Madrid vs Barcelona',
start_time: new Date('2023-11-02T20:00:00Z'),
end_time: new Date('2023-11-02T22:00:00Z'),
// type code here for "relation_one" field
},
{
title: 'Lakers vs Celtics',
start_time: new Date('2023-11-03T02:00:00Z'),
end_time: new Date('2023-11-03T04:00:00Z'),
// type code here for "relation_one" field
},
{
title: 'Yankees vs Red Sox',
start_time: new Date('2023-11-04T19:00:00Z'),
end_time: new Date('2023-11-04T22:00:00Z'),
// type code here for "relation_one" field
},
];
const PlayersData = [
{
name: 'Virat Kohli',
role: 'allrounder',
credit_value: 10.5,
// type code here for "relation_one" field
},
{
name: 'Lionel Messi',
role: 'allrounder',
credit_value: 12,
// type code here for "relation_one" field
},
{
name: 'LeBron James',
role: 'wicketkeeper',
credit_value: 11.5,
// type code here for "relation_one" field
},
{
name: 'Tom Brady',
role: 'bowler',
credit_value: 9,
// type code here for "relation_one" field
},
];
const SportsData = [
{
name: 'Cricket',
description: 'A bat-and-ball game played between two teams.',
},
{
name: 'Football',
description: 'A team sport played with a spherical ball.',
},
{
name: 'Basketball',
description: 'A game played between two teams of five players.',
},
{
name: 'Hockey',
description:
"A sport in which two teams play against each other by trying to maneuver a ball into the opponent's goal.",
},
];
const TeamsData = [
{
name: 'Team Alpha',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Team Beta',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Team Gamma',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
{
name: 'Team Delta',
// type code here for "relation_many" field
// type code here for "relation_one" field
// type code here for "relation_one" field
},
];
const TransactionsData = [
{
amount: 100,
type: 'deposit',
transaction_date: new Date('2023-10-01T12:00:00Z'),
// type code here for "relation_one" field
},
{
amount: 50,
type: 'winnings',
transaction_date: new Date('2023-10-02T14:00:00Z'),
// type code here for "relation_one" field
},
{
amount: 200,
type: 'deposit',
transaction_date: new Date('2023-10-03T16:00:00Z'),
// type code here for "relation_one" field
},
{
amount: 75,
type: 'entry_fee',
transaction_date: new Date('2023-10-04T18:00:00Z'),
// type code here for "relation_one" field
},
];
const WalletsData = [
{
balance: 500,
// type code here for "relation_one" field
},
{
balance: 300,
// type code here for "relation_one" field
},
{
balance: 700,
// type code here for "relation_one" field
},
{
balance: 250,
// type code here for "relation_one" field
},
];
// Similar logic for "relation_many"
async function associateContestWithMatch() {
const relatedMatch0 = await Matches.findOne({
offset: Math.floor(Math.random() * (await Matches.count())),
});
const Contest0 = await Contests.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Contest0?.setMatch) {
await Contest0.setMatch(relatedMatch0);
}
const relatedMatch1 = await Matches.findOne({
offset: Math.floor(Math.random() * (await Matches.count())),
});
const Contest1 = await Contests.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Contest1?.setMatch) {
await Contest1.setMatch(relatedMatch1);
}
const relatedMatch2 = await Matches.findOne({
offset: Math.floor(Math.random() * (await Matches.count())),
});
const Contest2 = await Contests.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Contest2?.setMatch) {
await Contest2.setMatch(relatedMatch2);
}
const relatedMatch3 = await Matches.findOne({
offset: Math.floor(Math.random() * (await Matches.count())),
});
const Contest3 = await Contests.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Contest3?.setMatch) {
await Contest3.setMatch(relatedMatch3);
}
}
async function associateMatchWithSport() {
const relatedSport0 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Match0 = await Matches.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Match0?.setSport) {
await Match0.setSport(relatedSport0);
}
const relatedSport1 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Match1 = await Matches.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Match1?.setSport) {
await Match1.setSport(relatedSport1);
}
const relatedSport2 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Match2 = await Matches.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Match2?.setSport) {
await Match2.setSport(relatedSport2);
}
const relatedSport3 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Match3 = await Matches.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Match3?.setSport) {
await Match3.setSport(relatedSport3);
}
}
async function associatePlayerWithSport() {
const relatedSport0 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Player0 = await Players.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Player0?.setSport) {
await Player0.setSport(relatedSport0);
}
const relatedSport1 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Player1 = await Players.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Player1?.setSport) {
await Player1.setSport(relatedSport1);
}
const relatedSport2 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Player2 = await Players.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Player2?.setSport) {
await Player2.setSport(relatedSport2);
}
const relatedSport3 = await Sports.findOne({
offset: Math.floor(Math.random() * (await Sports.count())),
});
const Player3 = await Players.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Player3?.setSport) {
await Player3.setSport(relatedSport3);
}
}
// Similar logic for "relation_many"
async function associateTeamWithCaptain() {
const relatedCaptain0 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team0 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Team0?.setCaptain) {
await Team0.setCaptain(relatedCaptain0);
}
const relatedCaptain1 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team1 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Team1?.setCaptain) {
await Team1.setCaptain(relatedCaptain1);
}
const relatedCaptain2 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team2 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Team2?.setCaptain) {
await Team2.setCaptain(relatedCaptain2);
}
const relatedCaptain3 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team3 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Team3?.setCaptain) {
await Team3.setCaptain(relatedCaptain3);
}
}
async function associateTeamWithVice_captain() {
const relatedVice_captain0 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team0 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Team0?.setVice_captain) {
await Team0.setVice_captain(relatedVice_captain0);
}
const relatedVice_captain1 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team1 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Team1?.setVice_captain) {
await Team1.setVice_captain(relatedVice_captain1);
}
const relatedVice_captain2 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team2 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Team2?.setVice_captain) {
await Team2.setVice_captain(relatedVice_captain2);
}
const relatedVice_captain3 = await Players.findOne({
offset: Math.floor(Math.random() * (await Players.count())),
});
const Team3 = await Teams.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Team3?.setVice_captain) {
await Team3.setVice_captain(relatedVice_captain3);
}
}
async function associateTransactionWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction0 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Transaction0?.setUser) {
await Transaction0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction1 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Transaction1?.setUser) {
await Transaction1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction2 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Transaction2?.setUser) {
await Transaction2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Transaction3 = await Transactions.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Transaction3?.setUser) {
await Transaction3.setUser(relatedUser3);
}
}
async function associateWalletWithUser() {
const relatedUser0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Wallet0 = await Wallets.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Wallet0?.setUser) {
await Wallet0.setUser(relatedUser0);
}
const relatedUser1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Wallet1 = await Wallets.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Wallet1?.setUser) {
await Wallet1.setUser(relatedUser1);
}
const relatedUser2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Wallet2 = await Wallets.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Wallet2?.setUser) {
await Wallet2.setUser(relatedUser2);
}
const relatedUser3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Wallet3 = await Wallets.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Wallet3?.setUser) {
await Wallet3.setUser(relatedUser3);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Contests.bulkCreate(ContestsData);
await Matches.bulkCreate(MatchesData);
await Players.bulkCreate(PlayersData);
await Sports.bulkCreate(SportsData);
await Teams.bulkCreate(TeamsData);
await Transactions.bulkCreate(TransactionsData);
await Wallets.bulkCreate(WalletsData);
await Promise.all([
// Similar logic for "relation_many"
await associateContestWithMatch(),
await associateMatchWithSport(),
await associatePlayerWithSport(),
// Similar logic for "relation_many"
await associateTeamWithCaptain(),
await associateTeamWithVice_captain(),
await associateTransactionWithUser(),
await associateWalletWithUser(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('contests', null, {});
await queryInterface.bulkDelete('matches', null, {});
await queryInterface.bulkDelete('players', null, {});
await queryInterface.bulkDelete('sports', null, {});
await queryInterface.bulkDelete('teams', null, {});
await queryInterface.bulkDelete('transactions', null, {});
await queryInterface.bulkDelete('wallets', null, {});
},
};