aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src
diff options
context:
space:
mode:
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