From 1be8836df1a7dec7261356faac8d23bc9558df56 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 20 Feb 2026 22:56:34 +0100 Subject: [PATCH] refactor(ScanController, ResponseScanIntake, RunnerKV): Rename totalDistance to distance for consistency --- src/controllers/ScanController.ts | 14 +++++++------- src/models/responses/ResponseScanIntake.ts | 2 +- src/nats/RunnerKV.ts | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/controllers/ScanController.ts b/src/controllers/ScanController.ts index 8ffe039..11f33a8 100644 --- a/src/controllers/ScanController.ts +++ b/src/controllers/ScanController.ts @@ -1,14 +1,11 @@ import type { Request } from "express"; import { Authorized, Body, Delete, Get, HttpError, JsonController, OnUndefined, Param, Post, Put, QueryParam, Req, UseBefore } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { Repository, getConnection, getConnectionManager } from 'typeorm'; +import { getConnection, getConnectionManager, Repository } from 'typeorm'; import { RunnerNotFoundError } from '../errors/RunnerErrors'; import { ScanIdsNotMatchingError, ScanNotFoundError } from '../errors/ScanErrors'; import { ScanStationNotFoundError } from '../errors/ScanStationErrors'; import ScanAuth from '../middlewares/ScanAuth'; -import { deleteCardEntry, getCardEntry, setCardEntry } from '../nats/CardKV'; -import { deleteRunnerEntry, getRunnerEntry, RunnerKVEntry, setRunnerEntry, warmRunner } from '../nats/RunnerKV'; -import { getStationEntryById } from '../nats/StationKV'; import { CreateScan } from '../models/actions/create/CreateScan'; import { CreateTrackScan } from '../models/actions/create/CreateTrackScan'; import { UpdateScan } from '../models/actions/update/UpdateScan'; @@ -20,6 +17,9 @@ import { ResponseEmpty } from '../models/responses/ResponseEmpty'; import { ResponseScan } from '../models/responses/ResponseScan'; import { ResponseScanIntake, ResponseScanIntakeRunner } from '../models/responses/ResponseScanIntake'; import { ResponseTrackScan } from '../models/responses/ResponseTrackScan'; +import { getCardEntry, setCardEntry } from '../nats/CardKV'; +import { deleteRunnerEntry, getRunnerEntry, RunnerKVEntry, setRunnerEntry, warmRunner } from '../nats/RunnerKV'; +import { getStationEntryById } from '../nats/StationKV'; @JsonController('/scans') @OpenAPI({ security: [{ "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) export class ScanController { @@ -145,12 +145,12 @@ export class ScanController { // Compute const lapTime = entry.latestTimestamp === 0 ? 0 : now - entry.latestTimestamp; const valid = minimumLapTime === 0 || lapTime > minimumLapTime; - const newDistance = entry.totalDistance + (valid ? trackDistance : 0); + const newDistance = entry.distance + (valid ? trackDistance : 0); const newTimestamp = valid ? now : entry.latestTimestamp; const updated: RunnerKVEntry = { displayName: entry.displayName, - totalDistance: newDistance, + distance: newDistance, latestTimestamp: newTimestamp, }; @@ -174,7 +174,7 @@ export class ScanController { const runnerInfo = new ResponseScanIntakeRunner(); runnerInfo.displayName = entry.displayName; - runnerInfo.totalDistance = newDistance; + runnerInfo.distance = newDistance; response = new ResponseScanIntake(); response.accepted = true; diff --git a/src/models/responses/ResponseScanIntake.ts b/src/models/responses/ResponseScanIntake.ts index d860995..d9e517c 100644 --- a/src/models/responses/ResponseScanIntake.ts +++ b/src/models/responses/ResponseScanIntake.ts @@ -11,7 +11,7 @@ export class ResponseScanIntakeRunner { displayName: string; @IsInt() - totalDistance: number; + distance: number; } export class ResponseScanIntake { diff --git a/src/nats/RunnerKV.ts b/src/nats/RunnerKV.ts index 6302cd9..c18cfb3 100644 --- a/src/nats/RunnerKV.ts +++ b/src/nats/RunnerKV.ts @@ -14,7 +14,7 @@ export interface RunnerKVEntry { /** "Firstname Lastname" — middlename omitted. */ displayName: string; /** Sum of all valid scan distances in metres. */ - totalDistance: number; + distance: number; /** Unix seconds timestamp of the last valid scan. 0 if none. */ latestTimestamp: number; } @@ -93,7 +93,7 @@ export async function deleteRunnerEntry(runnerId: number): Promise { * scan timestamp from the database, writes the result to KV, and returns it. * * Called on any KV cache miss during the scan intake flow. - * Also handles the first-scan-ever case — latestTimestamp=0, totalDistance=0. + * Also handles the first-scan-ever case — latestTimestamp=0, distance=0. */ export async function warmRunner(runnerId: number): Promise { const connection = getConnection(); @@ -119,7 +119,7 @@ export async function warmRunner(runnerId: number): Promise { const entry: RunnerKVEntry = { displayName, - totalDistance: parseInt(distanceResult?.total ?? '0', 10), + distance: parseInt(distanceResult?.total ?? '0', 10), latestTimestamp: latestScan?.timestamp ?? 0, }; @@ -180,7 +180,7 @@ export async function warmAll(): Promise { const writePromises = runners.map((runner) => { const entry: RunnerKVEntry = { displayName: `${runner.firstname} ${runner.lastname}`, - totalDistance: distanceMap.get(runner.id) ?? 0, + distance: distanceMap.get(runner.id) ?? 0, latestTimestamp: latestMap.get(runner.id) ?? 0, }; return setRunnerEntry(runner.id, entry);