aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src
diff options
context:
space:
mode:
authorPinapelz <yukais@pinapelz.com>2025-07-07 00:00:22 -0700
committerPinapelz <yukais@pinapelz.com>2025-07-07 00:00:22 -0700
commit152894146b72830e48e800721ea6160228a9bdc1 (patch)
tree081a7e0c7988988d14583894c2f2ea80d2ab0538 /backend/src
parentdf79d68cb3cbec15e985fed8c0cabc484ef55e35 (diff)
generate sha-1 hash for chart on score import
Diffstat (limited to 'backend/src')
-rw-r--r--backend/src/routes/score.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/backend/src/routes/score.ts b/backend/src/routes/score.ts
index e0f2281..d0fdc56 100644
--- a/backend/src/routes/score.ts
+++ b/backend/src/routes/score.ts
@@ -1,6 +1,7 @@
import express from "express";
import { prisma } from "../config/db";
import { PAGE_SIZE } from "../config/constants";
+import crypto from "crypto";
export const handleScoreUpload = async (
req: express.Request,
@@ -42,6 +43,10 @@ export const handleScoreUpload = async (
let skippedCount = 0;
for (const scoreData of scoresArray) {
+ const chartIdHash = crypto
+ .createHash("sha1")
+ .update(`${internalGameName}${scoreData.title}${scoreData.artist}`)
+ .digest("hex");
// Check if exact same score data already exists
const existingScore = await prisma.score.findFirst({
where: {
@@ -56,9 +61,26 @@ export const handleScoreUpload = async (
if (existingScore) {
skippedCount++;
} else {
+ const chartExists = await prisma.charts.findFirst({
+ where: {
+ gameInternalName: internalGameName,
+ chartId: chartIdHash,
+ },
+ });
+ if(!chartExists){
+ await prisma.charts.create({
+ data: {
+ gameInternalName: internalGameName,
+ chartId: chartIdHash,
+ title: scoreData.title,
+ artist: scoreData.artist,
+ },
+ });
+ }
scoresToCreate.push({
gameInternalName: internalGameName,
userId: userId,
+ chartId: chartIdHash,
timestamp: scoreData.timestamp,
data: scoreData,
});
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage