30395/backend/src/db/seeders/20231127130745-sample-data.js
2025-04-01 16:08:44 +00:00

318 lines
6.7 KiB
JavaScript

const db = require('../models');
const Users = db.users;
const Games = db.games;
const ProgressReports = db.progress_reports;
const GamesData = [
{
date_played: new Date('2023-10-01T14:30:00Z'),
result: 'win',
// type code here for "relation_one" field
// type code here for "relation_one" field
score: 100,
},
{
date_played: new Date('2023-10-02T15:00:00Z'),
result: 'win',
// type code here for "relation_one" field
// type code here for "relation_one" field
score: 85,
},
{
date_played: new Date('2023-10-03T16:00:00Z'),
result: 'win',
// type code here for "relation_one" field
// type code here for "relation_one" field
score: 95,
},
{
date_played: new Date('2023-10-04T17:00:00Z'),
result: 'win',
// type code here for "relation_one" field
// type code here for "relation_one" field
score: 70,
},
{
date_played: new Date('2023-10-05T18:00:00Z'),
result: 'loss',
// type code here for "relation_one" field
// type code here for "relation_one" field
score: 110,
},
];
const ProgressReportsData = [
{
// type code here for "relation_one" field
total_wins: 3,
total_losses: 2,
win_rate: 60,
},
{
// type code here for "relation_one" field
total_wins: 2,
total_losses: 3,
win_rate: 40,
},
{
// type code here for "relation_one" field
total_wins: 0,
total_losses: 0,
win_rate: 0,
},
{
// type code here for "relation_one" field
total_wins: 0,
total_losses: 0,
win_rate: 0,
},
{
// type code here for "relation_one" field
total_wins: 0,
total_losses: 0,
win_rate: 0,
},
];
// Similar logic for "relation_many"
async function associateGameWithPlayer() {
const relatedPlayer0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game0 = await Games.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Game0?.setPlayer) {
await Game0.setPlayer(relatedPlayer0);
}
const relatedPlayer1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game1 = await Games.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Game1?.setPlayer) {
await Game1.setPlayer(relatedPlayer1);
}
const relatedPlayer2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game2 = await Games.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Game2?.setPlayer) {
await Game2.setPlayer(relatedPlayer2);
}
const relatedPlayer3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game3 = await Games.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Game3?.setPlayer) {
await Game3.setPlayer(relatedPlayer3);
}
const relatedPlayer4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game4 = await Games.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Game4?.setPlayer) {
await Game4.setPlayer(relatedPlayer4);
}
}
async function associateGameWithOpponent() {
const relatedOpponent0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game0 = await Games.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (Game0?.setOpponent) {
await Game0.setOpponent(relatedOpponent0);
}
const relatedOpponent1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game1 = await Games.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (Game1?.setOpponent) {
await Game1.setOpponent(relatedOpponent1);
}
const relatedOpponent2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game2 = await Games.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (Game2?.setOpponent) {
await Game2.setOpponent(relatedOpponent2);
}
const relatedOpponent3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game3 = await Games.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (Game3?.setOpponent) {
await Game3.setOpponent(relatedOpponent3);
}
const relatedOpponent4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const Game4 = await Games.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (Game4?.setOpponent) {
await Game4.setOpponent(relatedOpponent4);
}
}
async function associateProgressReportWithPlayer() {
const relatedPlayer0 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ProgressReport0 = await ProgressReports.findOne({
order: [['id', 'ASC']],
offset: 0,
});
if (ProgressReport0?.setPlayer) {
await ProgressReport0.setPlayer(relatedPlayer0);
}
const relatedPlayer1 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ProgressReport1 = await ProgressReports.findOne({
order: [['id', 'ASC']],
offset: 1,
});
if (ProgressReport1?.setPlayer) {
await ProgressReport1.setPlayer(relatedPlayer1);
}
const relatedPlayer2 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ProgressReport2 = await ProgressReports.findOne({
order: [['id', 'ASC']],
offset: 2,
});
if (ProgressReport2?.setPlayer) {
await ProgressReport2.setPlayer(relatedPlayer2);
}
const relatedPlayer3 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ProgressReport3 = await ProgressReports.findOne({
order: [['id', 'ASC']],
offset: 3,
});
if (ProgressReport3?.setPlayer) {
await ProgressReport3.setPlayer(relatedPlayer3);
}
const relatedPlayer4 = await Users.findOne({
offset: Math.floor(Math.random() * (await Users.count())),
});
const ProgressReport4 = await ProgressReports.findOne({
order: [['id', 'ASC']],
offset: 4,
});
if (ProgressReport4?.setPlayer) {
await ProgressReport4.setPlayer(relatedPlayer4);
}
}
module.exports = {
up: async (queryInterface, Sequelize) => {
await Games.bulkCreate(GamesData);
await ProgressReports.bulkCreate(ProgressReportsData);
await Promise.all([
// Similar logic for "relation_many"
await associateGameWithPlayer(),
await associateGameWithOpponent(),
await associateProgressReportWithPlayer(),
]);
},
down: async (queryInterface, Sequelize) => {
await queryInterface.bulkDelete('games', null, {});
await queryInterface.bulkDelete('progress_reports', null, {});
},
};