From 5302e7e76b4ce9334846cc78855e8f7d23b13374 Mon Sep 17 00:00:00 2001 From: Djobbo Date: Sun, 22 Oct 2023 01:58:38 +0000 Subject: [PATCH] some cleaning #96 --- app/app/[locale]/page.tsx | 10 +- packages/server/router/index.ts | 26 +---- packages/server/router/stats/getClanStats.ts | 67 ----------- .../server/router/stats/getClansRankings.ts | 46 -------- .../router/stats/getGlobalPlayerRankings.ts | 60 ---------- .../server/router/stats/getPlayerAliases.ts | 30 ----- .../server/router/stats/getPlayerRanked.ts | 66 ----------- .../server/router/stats/getPlayerStats.ts | 77 ------------- .../server/router/stats/getPowerRankings.ts | 30 ----- packages/server/router/stats/getRankings.ts | 106 ------------------ .../server/router/stats/searchPlayerAlias.ts | 72 ------------ packages/web-parser/common/index.ts | 2 +- 12 files changed, 3 insertions(+), 589 deletions(-) delete mode 100644 packages/server/router/stats/getClanStats.ts delete mode 100644 packages/server/router/stats/getClansRankings.ts delete mode 100644 packages/server/router/stats/getGlobalPlayerRankings.ts delete mode 100644 packages/server/router/stats/getPlayerAliases.ts delete mode 100644 packages/server/router/stats/getPlayerRanked.ts delete mode 100644 packages/server/router/stats/getPlayerStats.ts delete mode 100644 packages/server/router/stats/getPowerRankings.ts delete mode 100644 packages/server/router/stats/getRankings.ts delete mode 100644 packages/server/router/stats/searchPlayerAlias.ts diff --git a/app/app/[locale]/page.tsx b/app/app/[locale]/page.tsx index 0d46e533..a65c3007 100644 --- a/app/app/[locale]/page.tsx +++ b/app/app/[locale]/page.tsx @@ -23,15 +23,7 @@ export const metadata = { "Improve your Brawlhalla Game, and find your place among the Elite with our in-depth Player and Clan stats tracking and live leaderboards.", } -type HomeProps = { - params: { - locale: string - } -} - -const t = (str: string) => str - -export default async function Home({ params: { locale } }: HomeProps) { +export default async function Home() { return ( <>
diff --git a/packages/server/router/index.ts b/packages/server/router/index.ts index 2a7330f6..02666138 100644 --- a/packages/server/router/index.ts +++ b/packages/server/router/index.ts @@ -1,29 +1,5 @@ -import { get1v1Rankings, get2v2Rankings } from "./stats/getRankings" -import { getBHArticles } from "./getBHArticles" -import { getClanStats } from "./stats/getClanStats" -import { getClansRankings } from "./stats/getClansRankings" -import { getGlobalPlayerRankings } from "./stats/getGlobalPlayerRankings" -import { getPlayerAliases } from "./stats/getPlayerAliases" -import { getPlayerRanked } from "./stats/getPlayerRanked" -import { getPlayerStats } from "./stats/getPlayerStats" -import { getPowerRankings } from "./stats/getPowerRankings" -import { getWeeklyRotation } from "./getWeeklyRotation" import { router } from "../trpc" -import { searchPlayerAlias } from "./stats/searchPlayerAlias" -export const appRouter = router({ - get1v1Rankings, - get2v2Rankings, - getClansRankings, - getPowerRankings, - getPlayerStats, - getPlayerRanked, - getPlayerAliases, - getClanStats, - searchPlayerAlias, - getWeeklyRotation, - getBHArticles, - getGlobalPlayerRankings, -}) +export const appRouter = router({}) export type AppRouter = typeof appRouter diff --git a/packages/server/router/stats/getClanStats.ts b/packages/server/router/stats/getClanStats.ts deleted file mode 100644 index 05fc46de..00000000 --- a/packages/server/router/stats/getClanStats.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { getClan } from "bhapi" -import { logError, logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { updateDBClanData } from "../../mutations/updateDBClanData" -import { waitForRequestTimeout } from "../../helpers/waitForRequestTimeout" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" - -export const getClanStats = publicProcedure // - .input( - z.object({ - clanId: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { clanId } = req.input - logInfo("getClanStats", req.input) - - const controller = new AbortController() - - const clan = await withTimeLog(getClan, "BHAPI:clanStats")(clanId) - - // // Fire and forget - // const fireAndForget = Promise.all([ - // withTimeLog(updateDBClanData, "updateDBClanData")( - // { - // id: clan.clan_id.toString(), - // name: clan.clan_name, - // created: clan.clan_create_date, - // xp: parseInt(clan.clan_xp), - // }, - // { - // abortSignal: controller.signal, - // }, - // ).catch((e) => { - // logError( - // `Failed to update clan#${clan.clan_id} in database`, - // e, - // ) - // }), - // // withTimeLog(updateDBPlayerAliases, "updateDBPlayerAliases")( - // // clan.clan.map((member) => ({ - // // playerId: member.brawlhalla_id.toString(), - // // alias: member.name, - // // createdAt: new Date(), - // // public: true, - // // })), - // // { - // // abortSignal: controller.signal, - // // }, - // // ).catch((e) => { - // // logError( - // // `Error updating player aliases for clan#${clan.clan_id}`, - // // e, - // // ) - // // }), - // ]) - - // waitForRequestTimeout(fireAndForget, { - // abortController: controller, - // }) - - return clan - }, "getClanStats"), - ) diff --git a/packages/server/router/stats/getClansRankings.ts b/packages/server/router/stats/getClansRankings.ts deleted file mode 100644 index 5005577d..00000000 --- a/packages/server/router/stats/getClansRankings.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { CLANS_RANKINGS_PER_PAGE } from "../../helpers/constants" -import { logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { supabaseService } from "db/supabase/service" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" -import type { BHClan } from "db/generated/client" - -export const getClansRankings = publicProcedure - .input( - z.object({ - name: z.string(), - page: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { name, page } = req.input - logInfo("getClansRankings", req.input) - - let query = supabaseService.from("BHClan").select("*") - - const cleanName = name.trim().replace(/'/g, "\\'") - - if (cleanName.length > 0) { - query = query.ilike("name", `${cleanName}%`) - } else { - query = query.select("*") - } - - const { data, error } = await query - .order("xp", { ascending: false }) - .range( - (page - 1) * CLANS_RANKINGS_PER_PAGE, - page * CLANS_RANKINGS_PER_PAGE - 1, - ) - - if (error) { - throw error - } - - // TODO: type check this with zod - return data - }, "getClansRankings"), - ) diff --git a/packages/server/router/stats/getGlobalPlayerRankings.ts b/packages/server/router/stats/getGlobalPlayerRankings.ts deleted file mode 100644 index bf9cf10e..00000000 --- a/packages/server/router/stats/getGlobalPlayerRankings.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { GLOBAL_PLAYER_RANKINGS_PER_PAGE } from "../../helpers/constants" -import { logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { supabaseService } from "db/supabase/service" -import { z } from "zod" -import type { BHPlayerData } from "db/generated/client" - -export const getGlobalPlayerRankings = publicProcedure - .input( - z.object({ - sortBy: z.string(), // TODO: validate with zod - page: numericLiteralValidator, - }), - ) - .output( - z.array( - z.object({ - id: z.string(), - name: z.string(), - tier: z.string(), - rating: z.number(), - peakRating: z.number(), - region: z.string(), - prop: z.number(), - }), - ), - ) - .query(async (req) => { - const { sortBy, page } = req.input - logInfo("getGlobalPlayerRankings", req.input) - - const query = supabaseService - .from("BHPlayerData") - .select(`id,name,tier,rating,region,peakRating,${sortBy}`) - .order(sortBy as keyof BHPlayerData, { ascending: false }) // TODO: validate prop with zod - - const { data, error } = await query.range( - (page - 1) * GLOBAL_PLAYER_RANKINGS_PER_PAGE, - page * GLOBAL_PLAYER_RANKINGS_PER_PAGE - 1, - ) - - if (error) throw error - - // TODO: type check this with zod - return ( - data?.map( - // TODO: validate prop with zod - (playerData) => { - const { [sortBy as keyof BHPlayerData]: prop, ...rest } = - playerData - - return { - ...(rest as BHPlayerData), - prop: prop as number, - } - }, - ) ?? [] - ) - }) diff --git a/packages/server/router/stats/getPlayerAliases.ts b/packages/server/router/stats/getPlayerAliases.ts deleted file mode 100644 index 070f7fd9..00000000 --- a/packages/server/router/stats/getPlayerAliases.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { supabaseService } from "db/supabase/service" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" -import type { BHPlayerAlias } from "db/generated/client" - -export const getPlayerAliases = publicProcedure // - .input( - z.object({ - playerId: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { playerId } = req.input - logInfo("getPlayerAliases", req.input) - - const { data, error } = await supabaseService - .from("BHPlayerAlias") - .select("*") - .order("createdAt", { ascending: false }) - .match({ playerId, public: true }) - - if (error) throw error - - return data.map((alias) => alias.alias) - }, "getPlayerAliases"), - ) diff --git a/packages/server/router/stats/getPlayerRanked.ts b/packages/server/router/stats/getPlayerRanked.ts deleted file mode 100644 index 76f05813..00000000 --- a/packages/server/router/stats/getPlayerRanked.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { getPlayerRanked as getPlayerRankedFn } from "bhapi" -import { getTeamPlayers } from "bhapi/helpers/getTeamPlayers" -import { logError, logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { updateDBPlayerAliases } from "../../mutations/updateDBPlayerAliases" -import { waitForRequestTimeout } from "../../helpers/waitForRequestTimeout" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" -import type { BHPlayerAlias } from "db/generated/client" - -export const getPlayerRanked = publicProcedure // - .input( - z.object({ - playerId: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { playerId } = req.input - logInfo("getPlayerRanked", req.input) - - const controller = new AbortController() - - const ranked = await withTimeLog( - getPlayerRankedFn, - "BHAPI:playerRanked", - )(playerId) - - // TODO: check whole object with zod - try { - z.number().parse(ranked?.brawlhalla_id) - } catch { - throw new Error("Player ranked not found") - } - - const aliases = [ - { - id: ranked.brawlhalla_id, - name: ranked.name, - }, - ...(ranked["2v2"]?.map(getTeamPlayers).flat() ?? []), - ].map(({ name, id }) => ({ - playerId: id.toString(), - alias: name, - createdAt: new Date(), - public: true, - })) - - // // Fire and forget - // const fireAndForget = withTimeLog( - // updateDBPlayerAliases, - // "updateDBPlayerAliases", - // )(aliases, { - // abortSignal: controller.signal, - // }).catch((e) => { - // logError("Error updating player aliases", e) - // }) - - // waitForRequestTimeout(fireAndForget, { - // abortController: controller, - // }) - - return ranked - }, "getPlayerRanked"), - ) diff --git a/packages/server/router/stats/getPlayerStats.ts b/packages/server/router/stats/getPlayerStats.ts deleted file mode 100644 index 35942bfa..00000000 --- a/packages/server/router/stats/getPlayerStats.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { getPlayerStats as getPlayerStatsFn } from "bhapi" -import { logError, logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { updateDBClanData } from "../../mutations/updateDBClanData" -import { updateDBPlayerAliases } from "../../mutations/updateDBPlayerAliases" -import { waitForRequestTimeout } from "../../helpers/waitForRequestTimeout" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" - -export const getPlayerStats = publicProcedure // - .input( - z.object({ - playerId: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { playerId } = req.input - logInfo("getPlayerStats", req.input) - - const controller = new AbortController() - - const stats = await withTimeLog( - getPlayerStatsFn, - "BHAPI:playerStats", - )(playerId) - - const updateClanData = async () => { - if (!stats.clan) return - - const clan = stats.clan - - await withTimeLog(updateDBClanData, "updateDBClanData")( - { - id: clan.clan_id.toString(), - name: clan.clan_name, - xp: parseInt(clan.clan_xp), - }, - { - abortSignal: controller.signal, - }, - ).catch((e) => { - logError( - `Failed to update clan#${clan.clan_id} for player#${playerId} in database`, - e, - ) - }) - } - - // // Fire and forget - // const fireAndForget = Promise.all([ - // withTimeLog(updateDBPlayerAliases, "updateDBPlayerAliases")( - // [ - // { - // playerId: stats.brawlhalla_id.toString(), - // alias: stats.name, - // createdAt: new Date(), - // public: true, - // }, - // ], - // { - // abortSignal: controller.signal, - // }, - // ).catch((e) => { - // logError("Error updating player aliases", e) - // }), - // updateClanData(), - // ]) - - // waitForRequestTimeout(fireAndForget, { - // abortController: controller, - // }) - - return stats - }, "getPlayerStats"), - ) diff --git a/packages/server/router/stats/getPowerRankings.ts b/packages/server/router/stats/getPowerRankings.ts deleted file mode 100644 index 1dc4f1ed..00000000 --- a/packages/server/router/stats/getPowerRankings.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { logInfo } from "logger" -import { - parsePowerRankingsPage, - powerRankingsBracketValidator, - powerRankingsRegionValidator, -} from "web-parser/power-rankings/parsePowerRankingsPage" -import { publicProcedure } from "../../trpc" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" - -export const getPowerRankings = publicProcedure - .input( - z.object({ - bracket: powerRankingsBracketValidator, - region: powerRankingsRegionValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { bracket, region } = req.input - logInfo("getPowerRankings", req.input) - - return [] - - // return withTimeLog( - // parsePowerRankingsPage, - // "parsePowerRankingsPage", - // )(bracket ?? "1v1", region ?? "us-e") - }, "getPowerRankings"), - ) diff --git a/packages/server/router/stats/getRankings.ts b/packages/server/router/stats/getRankings.ts deleted file mode 100644 index fccf8b84..00000000 --- a/packages/server/router/stats/getRankings.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { - get1v1Rankings as get1v1RankingsFn, - get2v2Rankings as get2v2RankingsFn, -} from "bhapi" -import { logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { rankedRegionSchema } from "bhapi/constants" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" - -export const get1v1Rankings = publicProcedure // - .input( - z.object({ - region: rankedRegionSchema, - page: numericLiteralValidator, - name: z.optional(z.string()), - }), - ) - .query( - withTimeLog(async (req) => { - const { region, page, name } = req.input - logInfo("get1v1Rankings", req.input) - - // const controller = new AbortController() - - const rankings = await withTimeLog( - get1v1RankingsFn, - "BHAPI:rankings1v1", - )(region, page, name) - - // Fire and forget - // const fireAndForget = withTimeLog( - // updateDBPlayerAliases, - // "updateDBPlayerAliases", - // )( - // rankings.map((player) => ({ - // playerId: player.brawlhalla_id.toString(), - // alias: player.name, - // createdAt: new Date(), - // public: true, - // })), - // { - // abortSignal: controller.signal, - // }, - // ).catch((e) => { - // logError("Error updating player aliases", e) - // }) - - // waitForRequestTimeout(fireAndForget, { - // abortController: controller, - // }) - - return rankings - }, "get1v1Rankings"), - ) - -export const get2v2Rankings = publicProcedure // - .input( - z.object({ - region: rankedRegionSchema, - page: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { region, page } = req.input - logInfo("get2v2Rankings", req.input) - - // const controller = new AbortController() - - const rankings = await withTimeLog( - get2v2RankingsFn, - "BHAPI:rankings2v2", - )(region, page) - - // Fire and forget - // const fireAndForget = withTimeLog( - // updateDBPlayerAliases, - // "updateDBPlayerAliases", - // )( - // rankings - // .map(getTeamPlayers) - // .flat() - // .map((player) => ({ - // playerId: player.id.toString(), - // alias: player.name, - // createdAt: new Date(), - // public: true, - // })) - // .flat(), - // { - // abortSignal: controller.signal, - // }, - // ).catch((e) => { - // logError("Error updating player aliases", e) - // }) - - // waitForRequestTimeout(fireAndForget, { - // abortController: controller, - // timeout: 5000, - // }) - - return rankings - }, "get2v2Rankings"), - ) diff --git a/packages/server/router/stats/searchPlayerAlias.ts b/packages/server/router/stats/searchPlayerAlias.ts deleted file mode 100644 index 1760891f..00000000 --- a/packages/server/router/stats/searchPlayerAlias.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { SEARCH_PLAYERS_ALIASES_PER_PAGE } from "../../helpers/constants" -import { logInfo } from "logger" -import { numericLiteralValidator } from "common/helpers/validators" -import { publicProcedure } from "../../trpc" -import { supabaseService } from "db/supabase/service" -import { withTimeLog } from "../../helpers/withTimeLog" -import { z } from "zod" -import type { BHPlayerAlias } from "db/generated/client" - -export const searchPlayerAlias = publicProcedure // - .input( - z.object({ - alias: z.string(), - page: numericLiteralValidator, - }), - ) - .query( - withTimeLog(async (req) => { - const { alias, page } = req.input - logInfo("searchPlayerAlias", req.input) - - if (alias.length < 2) { - return [] - } - - const cleanAlias = alias.trim().replace(/'/g, "\\'") - - const { data, error } = await supabaseService.rpc( - "search_aliases", - { - search: cleanAlias, - aliases_offset: - (page - 1) * SEARCH_PLAYERS_ALIASES_PER_PAGE, - aliases_per_page: SEARCH_PLAYERS_ALIASES_PER_PAGE, - }, - ) - - if (error) { - throw error - } - - const aliases = data?.reduce( - (acc, alias) => { - const player = acc.find( - (a) => a.playerId === alias.playerId, - ) - if (!player) { - acc.push({ - playerId: alias.playerId, - mainAlias: alias.alias, - otherAliases: [], - }) - - return acc - } - - if (player.mainAlias !== alias.alias) { - player.otherAliases.push(alias.alias) - } - - return acc - }, - [] as { - playerId: string - mainAlias: string - otherAliases: string[] - }[], - ) - - return aliases ?? [] - }, "searchPlayerAlias"), - ) diff --git a/packages/web-parser/common/index.ts b/packages/web-parser/common/index.ts index de55a296..535777f7 100644 --- a/packages/web-parser/common/index.ts +++ b/packages/web-parser/common/index.ts @@ -1,6 +1,6 @@ import { legends } from "bhapi/legends" import { load as loadHtml } from "cheerio" -import { logError, logInfo } from "logger" +import { logError } from "logger" import { z } from "zod" import axios from "axios"