Skip to content

Commit

Permalink
feat: migrated to new db
Browse files Browse the repository at this point in the history
  • Loading branch information
tresabhi committed Apr 3, 2024
1 parent 0885e7e commit 4062e56
Show file tree
Hide file tree
Showing 19 changed files with 79 additions and 60 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/cd-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@ jobs:
run: |
$env:GH_TOKEN = "${{ secrets.GH_TOKEN }}"
$env:DISCORD_TOKEN = "${{ secrets.DISCORD_TOKEN }}"
$env:DISCORD_BLITZ_DB = "${{ secrets.DISCORD_BLITZ_DB }}"
$env:DATABASE_URL = "${{ secrets.DATABASE_URL }}"
$env:WOTB_DLC_CDN = "${{ secrets.WOTB_DLC_CDN }}"
yarn setup:patches --depot
- name: Build assets
run: |
$env:GH_TOKEN = "${{ secrets.GH_TOKEN }}"
$env:DISCORD_TOKEN = "${{ secrets.DISCORD_TOKEN }}"
$env:DISCORD_BLITZ_DB = "${{ secrets.DISCORD_BLITZ_DB }}"
$env:DATABASE_URL = "${{ secrets.DATABASE_URL }}"
yarn build:assets --all-targets --depot ${{ github.ref == 'refs/heads/main' && '--production' || '' }}
2 changes: 1 addition & 1 deletion .github/workflows/cd-host.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@ jobs:
unzip bot.zip
- name: Run bot
run: NODE_ENV=production GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DISCORD_BLITZ_DB=${{ secrets.DISCORD_BLITZ_DB }} node --enable-source-maps index.cjs
run: NODE_ENV=production GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DATABASE_URL=${{ secrets.DATABASE_URL }} node --enable-source-maps index.cjs
2 changes: 1 addition & 1 deletion .github/workflows/cd-rating-asia.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
run: yarn

- name: Generate leaderboard
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DISCORD_BLITZ_DB=${{ secrets.DISCORD_BLITZ_DB }} yarn publish:ratingleaderboard --region=asia --target=midnight --production
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DATABASE_URL=${{ secrets.DATABASE_URL }} yarn publish:ratingleaderboard --region=asia --target=midnight --production
2 changes: 1 addition & 1 deletion .github/workflows/cd-rating-eu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
run: yarn

- name: Generate leaderboard
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DISCORD_BLITZ_DB=${{ secrets.DISCORD_BLITZ_DB }} yarn publish:ratingleaderboard --region=eu --target=midnight --production
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DATABASE_URL=${{ secrets.DATABASE_URL }} yarn publish:ratingleaderboard --region=eu --target=midnight --production
2 changes: 1 addition & 1 deletion .github/workflows/cd-rating-latest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
run: yarn

- name: Generate all leaderboards
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DISCORD_BLITZ_DB=${{ secrets.DISCORD_BLITZ_DB }} yarn publish:ratingleaderboard --region=na,asia,eu --target=latest --production
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DATABASE_URL=${{ secrets.DATABASE_URL }} yarn publish:ratingleaderboard --region=na,asia,eu --target=latest --production
2 changes: 1 addition & 1 deletion .github/workflows/cd-rating-na.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ jobs:
run: yarn

- name: Generate leaderboard
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DISCORD_BLITZ_DB=${{ secrets.DISCORD_BLITZ_DB }} yarn publish:ratingleaderboard --region=na --target=midnight --production
run: GH_TOKEN=${{ secrets.GH_TOKEN }} DISCORD_TOKEN=${{ secrets.DISCORD_TOKEN }} DATABASE_URL=${{ secrets.DATABASE_URL }} yarn publish:ratingleaderboard --region=na --target=midnight --production
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
"main": "src/server.ts",
"type": "module",
"scripts": {
"build:bot": "vite-node --script scripts/build",
"build:bot": "vite-node --script scripts/build --production",
"build:website": "next build && next-sitemap --config next-sitemap.config.cjs",
"build:docs": "vitepress build docs",
"build:ratingleaderboard": "vite-node --script scripts/buildRatingLeaderboard",
"build:assets": "vite-node --max_old_space_size=16384 --script scripts/buildAssets/index",
"build:test": "vite-node --script scripts/buildTest",
"dev:bot": "vite-node --script scripts/build --production && yarn start:bot",
"dev:bot": "vite-node --script scripts/build && yarn start:bot",
"dev:docs": "vitepress dev docs",
"dev:website": "next dev",
"start:bot": "node --enable-source-maps dist/bot/index.cjs",
Expand Down
8 changes: 0 additions & 8 deletions prisma/migrations/20231009152251_use_big_int/migration.sql

This file was deleted.

3 changes: 0 additions & 3 deletions prisma/migrations/migration_lock.toml

This file was deleted.

10 changes: 7 additions & 3 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ generator client {

datasource db {
provider = "cockroachdb"
url = env("DISCORD_BLITZ_DB")
url = env("DATABASE_URL")
}

model discord_blitz {
model Users {
blitz Int @id
last_used DateTime? @default(now())
}

model DiscordUsers {
discord BigInt @id
region String
blitz Int
}
6 changes: 3 additions & 3 deletions src/commands/link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Glow } from '../components/AllStatsOverview/components/HeroStat/compone
import CommandWrapper from '../components/CommandWrapper';
import { getAccountInfo } from '../core/blitz/getAccountInfo';
import { getClanAccountInfo } from '../core/blitz/getClanAccountInfo';
import { linkBlitzAndDiscord } from '../core/blitzkrieg/discordBlitz';
import { linkBlitzAndDiscord } from '../core/blitzkrieg/discordBlitzLink';
import addUsernameChoices from '../core/discord/addUsernameChoices';
import autocompleteUsername from '../core/discord/autocompleteUsername';
import { createLocalizedCommand } from '../core/discord/createLocalizedCommand';
Expand All @@ -29,11 +29,11 @@ export const verifyCommand = new Promise<CommandRegistry>((resolve) => {
async handler(interaction) {
const { t, translate } = translator(interaction.locale);
const { id, region } = await resolvePlayerFromCommand(interaction);
const discordId = parseInt(interaction.user.id);
const discordId = BigInt(interaction.user.id);
const accountInfo = await getAccountInfo(region, id);
const clanAccountInfo = await getClanAccountInfo(region, id, ['clan']);

await linkBlitzAndDiscord(discordId, region, id);
await linkBlitzAndDiscord(discordId, id);

if (interaction.guildId === discord.sklld_guild_id) {
if (!interaction.guild?.members.me?.permissions.has('ManageRoles')) {
Expand Down
19 changes: 19 additions & 0 deletions src/core/blitz/idToRegion.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { Region } from '../../constants/regions';

export function idToRange(id: number): Region {
if (id >= 42e8) {
throw new Error('bot id');
} else if (id >= 31e8) {
throw new Error('china id');
} else if (id >= 20e8) {
return 'asia';
} else if (id >= 10e8) {
return 'com';
} else if (id >= 5e8) {
return 'eu';
} else if (id >= 0) {
throw new Error('ru id');
} else {
throw new Error(`id ${id} is out of range`);
}
}
21 changes: 0 additions & 21 deletions src/core/blitzkrieg/discordBlitz.ts

This file was deleted.

3 changes: 0 additions & 3 deletions src/core/blitzkrieg/discordBlitzDB.ts

This file was deleted.

30 changes: 30 additions & 0 deletions src/core/blitzkrieg/discordBlitzLink.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { usersDatabase } from '../../databases/users';
import { idToRange } from '../blitz/idToRegion';

export async function flagUserActivity(blitz: number) {
await usersDatabase.users.upsert({
where: { blitz },
update: {},
create: { blitz },
});
}

export async function linkBlitzAndDiscord(discord: bigint, blitz: number) {
await usersDatabase.discordUsers.upsert({
where: { discord },
update: { blitz },
create: { discord, blitz },
});
await flagUserActivity(blitz);
}

export async function getBlitzFromDiscord(discord: bigint) {
const unique = await usersDatabase.discordUsers.findUnique({
where: { discord },
});

if (unique === null) return null;

await flagUserActivity(unique.blitz);
return { id: unique.blitz, region: idToRange(unique.blitz) };
}
4 changes: 2 additions & 2 deletions src/core/blitzkrieg/processes.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { usersDatabase } from '../../databases/users';
import { client } from '../discord/client';
import { discordBlitzDB } from './discordBlitzDB';

const EXIT_EVENTS = [
'beforeExit',
Expand All @@ -13,7 +13,7 @@ const EXIT_EVENTS = [
async function cleanup() {
console.log('Cleaning up...');

await Promise.all([discordBlitzDB.$disconnect(), client.destroy()]);
await Promise.all([usersDatabase.$disconnect(), client.destroy()]);

console.log('Gracefully exiting...');

Expand Down
2 changes: 1 addition & 1 deletion src/core/blitzkrieg/secrets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ config();
const SECRET_KEYS = [
'DISCORD_TOKEN',
'GH_TOKEN',
'DISCORD_BLITZ_DB',
'DATABASE_URL',
'WOTB_DLC_CDN',
] as const;

Expand Down
12 changes: 5 additions & 7 deletions src/core/discord/resolvePlayerFromCommand/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import markdownEscape from 'markdown-escape';
import { Region } from '../../../constants/regions';
import { UserError } from '../../../hooks/userError';
import searchPlayersAcrossRegions from '../../blitz/searchPlayersAcrossRegions';
import { getBlitzFromDiscord } from '../../blitzkrieg/discordBlitz';
import { getBlitzFromDiscord } from '../../blitzkrieg/discordBlitzLink';
import { translator } from '../../localization/translator';
import { serverAndIdPattern } from './constants';

Expand Down Expand Up @@ -43,12 +43,10 @@ export default async function resolvePlayerFromCommand(
}
}
} else {
const account = await getBlitzFromDiscord(parseInt(interaction.user.id));
const account = await getBlitzFromDiscord(BigInt(interaction.user.id));

if (account) {
return { region: account.region, id: account.blitz };
} else {
throw new UserError(t`bot.common.errors.player_not_linked`);
}
if (account) return account;

throw new UserError(t`bot.common.errors.player_not_linked`);
}
}
3 changes: 3 additions & 0 deletions src/databases/users.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import { PrismaClient } from '@prisma/client';

export const usersDatabase = new PrismaClient();

0 comments on commit 4062e56

Please sign in to comment.