diff --git a/components/scoreplaylog/action.ts b/components/scoreplaylog/action.ts index 40684a2..5696547 100644 --- a/components/scoreplaylog/action.ts +++ b/components/scoreplaylog/action.ts @@ -6,7 +6,6 @@ import type * as Prisma from "@prisma/client"; type ChuniScorePlaylog = Prisma.PrismaClient; type ChuniStaticMusic = Prisma.PrismaClient; - export async function getSongsWithTitles(userId: number) { try { const songs: ChuniScorePlaylog[] = @@ -82,36 +81,16 @@ export async function getSongsWithTitles(userId: number) { }, }); - const chuniScoreBest: chuni_score_best[] = - await artemis.chuni_score_best.findMany({ - where: { - musicId: { - in: chuniScorePlaylogMusicId, - }, - }, - select: { - id: true, - user: true, - musicId: true, - level: true, - playCount: true, - scoreMax: true, - resRequestCount: true, - resAcceptCount: true, - resSuccessCount: true, - missCount: true, - maxComboCount: true, - isFullCombo: true, - isAllJustice: true, - isSuccess: true, - fullChain: true, - maxChain: true, - scoreRank: true, - isLock: true, - ext1: true, - theoryCount: true, - }, - }); + const playCounts = await artemis.chuni_score_playlog.groupBy({ + by: ["musicId", "level"], + where: { + musicId: { in: chuniScorePlaylogMusicId }, + user: userId, + }, + _count: { + _all: true, + }, + }); const songsWithTitles = songs.map((song) => { const staticInfo = staticMusicInfo.find( @@ -120,9 +99,10 @@ export async function getSongsWithTitles(userId: number) { chuniStaticMusic.chartId === song.level, ); - const bestScore = chuniScoreBest.find( - (score) => score.musicId === song.musicId, - ); + const playCount = + playCounts.find( + (play) => play.musicId === song.musicId && play.level === song.level, + )?._count._all || 0; return { ...song, @@ -132,8 +112,7 @@ export async function getSongsWithTitles(userId: number) { chartId: staticInfo?.chartId || "Unknown chartId", level: staticInfo?.level || "Unknown Level", chartlevel: song.level || "Unknown Level", - playCount: bestScore?.playCount || 0, - isSuccess: bestScore?.isSuccess || 0, + playCount, jacketPath: staticInfo?.jacketPath || "", }; }); diff --git a/components/scoreplaylog/colums.tsx b/components/scoreplaylog/colums.tsx index 7c33ddb..1e5816e 100644 --- a/components/scoreplaylog/colums.tsx +++ b/components/scoreplaylog/colums.tsx @@ -22,7 +22,8 @@ import { chuni_score_best } from "@/prisma/schemas/artemis/generated/artemis"; import { getDifficultyText, getGrade } from "@/lib/helpers"; import { Skeleton } from "../ui/skeleton"; import ActionsCell from "./moreAction"; -type chunithm = chuni_score_playlog & chuni_static_music & chuni_score_best; +type chunithm = chuni_score_playlog & + chuni_static_music & { playCount: number }; export const columns: ColumnDef[] = [ { @@ -60,39 +61,11 @@ export const columns: ColumnDef[] = [ ); }, cell: ({ row }) => { - const isSuccess = row.original.isSuccess; - const skillId = row.original.skillId; - let isSuccessText = ""; - - switch (isSuccess) { - case 0: - isSuccessText = " Clear"; - break; - case 1: - isSuccessText = "Clear"; - break; - case 2: - isSuccessText = "Hard"; - break; - case 3: - isSuccessText = "Absolute"; - break; - case 4: - isSuccessText = "Absolute+"; - break; - case 6: - isSuccessText = "Catastrophe"; - break; - default: - isSuccessText = isSuccess?.toString() ?? ""; - break; - } - return (
{row.original.score?.toLocaleString()}
- {isSuccessText} + e