feat: migrated to new db

This commit is contained in:
TrèsAbhi committed 2024-04-03 15:19:48 -05:00
1 parent 0885e7e68a
commit 4062e56b4c
19 files changed
+79 -60

No files matched your search

+19
View File
@@ -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
View File
@@ -1,21 +0,0 @@
import { Region } from '../../constants/regions';
import { discordBlitzDB } from './discordBlitzDB';
export function linkBlitzAndDiscord(
discord: number,
region: Region,
blitz: number,
) {
return discordBlitzDB.discord_blitz.upsert({
where: { discord },
update: { region, blitz },
create: { discord, region, blitz },
});
}
export function getBlitzFromDiscord(discord: number) {
return discordBlitzDB.discord_blitz.findUnique({
where: { discord },
select: { region: true, blitz: true },
}) as Promise<null | { region: Region; blitz: number }>;
}
-3
View File
@@ -1,3 +0,0 @@
import { PrismaClient } from '@prisma/client';
export const discordBlitzDB = new PrismaClient();
+30
View File
@@ -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) };
}
+2 -2
View File
@@ -1,5 +1,5 @@
import { usersDatabase } from '../../databases/users';
import { client } from '../discord/client';
import { discordBlitzDB } from './discordBlitzDB';
const EXIT_EVENTS = [
'beforeExit',
@@ -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...');
+1 -1
View File
@@ -5,7 +5,7 @@ config();
const SECRET_KEYS = [
'DISCORD_TOKEN',
'GH_TOKEN',
'DISCORD_BLITZ_DB',
'DATABASE_URL',
'WOTB_DLC_CDN',
] as const;
@@ -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';
@@ -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`);
}
}