diff --git a/src/app/(pages)/api/player/history/route.ts b/src/app/(pages)/api/player/history/route.ts index bb6abb8..194490d 100644 --- a/src/app/(pages)/api/player/history/route.ts +++ b/src/app/(pages)/api/player/history/route.ts @@ -23,6 +23,7 @@ export async function GET(request: NextRequest) { if (shouldCreatePlayer && foundPlayer == null) { foundPlayer = await PlayerModel.create({ _id: id, + trackedSince: new Date(), }); const response = await scoresaberService.lookupPlayer(id, true); if (response != undefined) { diff --git a/src/app/(pages)/api/player/isbeingtracked/route.ts b/src/app/(pages)/api/player/isbeingtracked/route.ts index 427fafb..4aaefeb 100644 --- a/src/app/(pages)/api/player/isbeingtracked/route.ts +++ b/src/app/(pages)/api/player/isbeingtracked/route.ts @@ -14,7 +14,12 @@ export async function GET(request: NextRequest) { // Fetch the player and return their statistic history let foundPlayer: IPlayer | null = await PlayerModel.findById(id); - return NextResponse.json({ + + const response: { tracked: boolean; lastTracked?: string } = { tracked: foundPlayer != null, - }); + }; + if (foundPlayer != null) { + response["lastTracked"] = foundPlayer.trackedSince?.toUTCString(); + } + return NextResponse.json(response); } diff --git a/src/common/schema/player-schema.ts b/src/common/schema/player-schema.ts index 787ae63..3011dd6 100644 --- a/src/common/schema/player-schema.ts +++ b/src/common/schema/player-schema.ts @@ -25,6 +25,11 @@ export interface IPlayer extends Document { */ rawPlayer: ScoreSaberPlayer; + /** + * The first time the player was tracked + */ + trackedSince: Date; + /** * Gets when this player was last tracked. */ @@ -62,6 +67,7 @@ const PlayerSchema = new Schema({ lastTracked: { type: Date, default: new Date(), required: false }, rawPlayer: { type: Object, required: false }, statisticHistory: { type: Map, default: () => new Map(), required: false }, + trackedSince: { type: Date, default: new Date(), required: false }, }); PlayerSchema.methods.getLastTracked = function (): Date {