mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-06 13:19:31 -05:00
94 lines
2.4 KiB
TypeScript
94 lines
2.4 KiB
TypeScript
import { db } from "~/db";
|
|
import { sql } from "~/db/sql";
|
|
import { faker } from "@faker-js/faker";
|
|
import type { User } from "~/db/types";
|
|
import invariant from "tiny-invariant";
|
|
import { upcomingVoting } from "~/core/plus";
|
|
|
|
const ADMIN_TEST_DISCORD_ID = "79237403620945920";
|
|
const ADMIN_TEST_AVATAR = "fcfd65a3bea598905abb9ca25296816b";
|
|
|
|
const basicSeeds = [adminUser, users, plusTierToUsers, plusSuggestions];
|
|
|
|
export function seed() {
|
|
wipeDB();
|
|
// eslint-disable-next-line no-console
|
|
console.log("database wiped...");
|
|
for (const seedFunc of basicSeeds) {
|
|
seedFunc();
|
|
}
|
|
|
|
// eslint-disable-next-line no-console
|
|
console.log("seeded!");
|
|
}
|
|
|
|
function wipeDB() {
|
|
const tablesToDelete = ["User"];
|
|
|
|
for (const table of tablesToDelete) {
|
|
sql.prepare(`delete from "${table}"`).run();
|
|
}
|
|
}
|
|
|
|
function adminUser() {
|
|
db.users.upsert({
|
|
discordDiscriminator: "4059",
|
|
discordId: ADMIN_TEST_DISCORD_ID,
|
|
discordName: "Sendou",
|
|
twitch: "Sendou",
|
|
youtubeId: "UCWbJLXByvsfQvTcR4HLPs5Q",
|
|
discordAvatar: ADMIN_TEST_AVATAR,
|
|
twitter: "sendouc",
|
|
});
|
|
}
|
|
|
|
function users() {
|
|
new Array(500).fill(null).map(fakeUser).forEach(db.users.upsert);
|
|
}
|
|
|
|
function fakeUser() {
|
|
return {
|
|
discordAvatar: null,
|
|
discordDiscriminator: String(faker.random.numeric(4)),
|
|
discordId: String(faker.random.numeric(17)),
|
|
discordName: faker.random.word(),
|
|
twitch: null,
|
|
twitter: null,
|
|
youtubeId: null,
|
|
};
|
|
}
|
|
|
|
function plusTierToUsers() {
|
|
sql.prepare(`update "USER" set "plusTier" = 3 where id < 150`).run();
|
|
sql.prepare(`update "USER" set "plusTier" = 2 where id < 80`).run();
|
|
sql.prepare(`update "USER" set "plusTier" = 1 where id < 30`).run();
|
|
}
|
|
|
|
function plusSuggestions() {
|
|
const usersInPlus = sql
|
|
.prepare(`select * from "User" where "plusTier" is not null`)
|
|
.all() as User[];
|
|
const { month, year } = upcomingVoting(new Date());
|
|
|
|
for (let userId = 150; userId < 190; userId++) {
|
|
const amountOfSuggestions = faker.helpers.arrayElement([1, 1, 2, 3, 4]);
|
|
|
|
for (let i = 0; i < amountOfSuggestions; i++) {
|
|
const suggester = usersInPlus.shift();
|
|
invariant(suggester);
|
|
invariant(suggester.plusTier);
|
|
|
|
db.plusSuggestions.create({
|
|
authorId: suggester.id,
|
|
month,
|
|
year,
|
|
suggestedId: userId,
|
|
text: faker.lorem.lines(),
|
|
tier: suggester.plusTier,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
seed();
|