From ecb0fd91e50fa88e3dce22eefa98979bc99549bb Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 24 Mar 2025 14:17:07 +0100 Subject: [PATCH] fix _id field in response --- src/controllers/custom/deleteAccountController.ts | 2 ++ src/models/leaderboardModel.ts | 1 + src/services/leaderboardService.ts | 6 +++--- src/services/statsService.ts | 2 +- src/types/leaderboardTypes.ts | 5 +++-- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/controllers/custom/deleteAccountController.ts b/src/controllers/custom/deleteAccountController.ts index 63ade312..d7df8670 100644 --- a/src/controllers/custom/deleteAccountController.ts +++ b/src/controllers/custom/deleteAccountController.ts @@ -8,6 +8,7 @@ import { PersonalRooms } from "@/src/models/personalRoomsModel"; import { Ship } from "@/src/models/shipModel"; import { Stats } from "@/src/models/statsModel"; import { GuildMember } from "@/src/models/guildModel"; +import { Leaderboard } from "@/src/models/leaderboardModel"; export const deleteAccountController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); @@ -17,6 +18,7 @@ export const deleteAccountController: RequestHandler = async (req, res) => { GuildMember.deleteMany({ accountId: accountId }), Inbox.deleteMany({ ownerId: accountId }), Inventory.deleteOne({ accountOwnerId: accountId }), + Leaderboard.deleteMany({ accountId: accountId }), Loadout.deleteOne({ loadoutOwnerId: accountId }), PersonalRooms.deleteOne({ personalRoomsOwnerId: accountId }), Ship.deleteMany({ ShipOwnerId: accountId }), diff --git a/src/models/leaderboardModel.ts b/src/models/leaderboardModel.ts index d6d031e9..6ff6d53a 100644 --- a/src/models/leaderboardModel.ts +++ b/src/models/leaderboardModel.ts @@ -4,6 +4,7 @@ import { ILeaderboardEntryDatabase } from "../types/leaderboardTypes"; const leaderboardEntrySchema = new Schema( { leaderboard: { type: String, required: true }, + accountId: { type: Schema.Types.ObjectId, required: true }, displayName: { type: String, required: true }, score: { type: Number, required: true }, expiry: { type: Date, required: true } diff --git a/src/services/leaderboardService.ts b/src/services/leaderboardService.ts index 0f8dbf96..a8d933f7 100644 --- a/src/services/leaderboardService.ts +++ b/src/services/leaderboardService.ts @@ -1,9 +1,9 @@ -import { toOid } from "../helpers/inventoryHelpers"; import { Leaderboard } from "../models/leaderboardModel"; import { ILeaderboardEntryClient } from "../types/leaderboardTypes"; export const submitLeaderboardScore = async ( leaderboard: string, + accountId: string, displayName: string, score: number ): Promise => { @@ -21,7 +21,7 @@ export const submitLeaderboardScore = async ( } await Leaderboard.findOneAndUpdate( { leaderboard, displayName }, - { $max: { score }, $set: { expiry } }, + { $max: { score }, $set: { accountId, expiry } }, { upsert: true } ); }; @@ -39,7 +39,7 @@ export const getLeaderboard = async ( let r = before; for (const entry of entries) { res.push({ - _id: toOid(entry._id), + _id: entry.accountId.toString(), s: entry.score, r: ++r, n: entry.displayName diff --git a/src/services/statsService.ts b/src/services/statsService.ts index efc1c8de..9394bef6 100644 --- a/src/services/statsService.ts +++ b/src/services/statsService.ts @@ -303,7 +303,7 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate) playerStats.Races.set(race, { highScore }); } - await submitLeaderboardScore("daily.accounts." + race, payload.displayName, highScore); + await submitLeaderboardScore("daily.accounts." + race, accountOwnerId, payload.displayName, highScore); } break; diff --git a/src/types/leaderboardTypes.ts b/src/types/leaderboardTypes.ts index b1fb253c..c2fec490 100644 --- a/src/types/leaderboardTypes.ts +++ b/src/types/leaderboardTypes.ts @@ -1,14 +1,15 @@ -import { IOid } from "./commonTypes"; +import { Types } from "mongoose"; export interface ILeaderboardEntryDatabase { leaderboard: string; + accountId: Types.ObjectId; displayName: string; score: number; expiry: Date; } export interface ILeaderboardEntryClient { - _id: IOid; + _id: string; // player id s: number; // score r: number; // rank n: string; // displayName