diff --git a/app/abstract/voyagetracker.ts b/app/abstract/voyagetracker.ts index b8f7ace..ef61985 100644 --- a/app/abstract/voyagetracker.ts +++ b/app/abstract/voyagetracker.ts @@ -1,4 +1,4 @@ -import { ITrackedAssignment, ITrackedVoyage } from "../datacore/voyage"; +import { IFullPayloadAssignment, ITrackedAssignment, ITrackedVoyage } from "../datacore/voyage"; import { TrackedCrew, TrackedVoyage } from "../models/Tracked"; import { Logger, LogData } from "../logic/logger"; @@ -148,7 +148,7 @@ export abstract class VoyageTrackerBase { async postTrackedData( dbid: number, voyage: ITrackedVoyage, - assignments: ITrackedAssignment[], + assignments: IFullPayloadAssignment[], logData: LogData ): Promise { Logger.info("Tracked Voyage data", { dbid, voyage, logData }); diff --git a/app/controllers/api.controller.ts b/app/controllers/api.controller.ts index d7c788d..11da2ae 100644 --- a/app/controllers/api.controller.ts +++ b/app/controllers/api.controller.ts @@ -1,7 +1,7 @@ import { Router, Request, Response } from 'express'; import { ApiResult, DataCoreAPI, LogData } from '../logic'; import { PlayerData } from '../datacore/player'; -import { ITrackedAssignment, ITrackedVoyage } from '../datacore/voyage'; +import { IFullPayloadAssignment, ITrackedAssignment, ITrackedPayload, ITrackedVoyage } from '../datacore/voyage'; import { IFBB_BossBattle_Document } from '../models/BossBattles'; import { CrewTrial, Solve } from '../datacore/boss'; import { VoyageTrackerAPI } from '../logic/voyagetracker'; @@ -302,9 +302,8 @@ router.post('/postTrackedData', async (req: Request, res: Response, next) => { return; } try { - let dbid = req.body.dbid; - let voyage = req.body.voyage as ITrackedVoyage; - let assignments = req.body.assignments as ITrackedAssignment[]; + let payload = req.body as ITrackedPayload; + const { dbid, voyage, assignments } = payload; let apiResult = await VoyageTrackerAPI.postTrackedData(dbid, voyage, assignments, getLogDataFromReq(req)); res.status(apiResult.Status).send(apiResult.Body); } catch (e) { diff --git a/app/datacore/voyage.ts b/app/datacore/voyage.ts index 9160166..cd4b364 100644 --- a/app/datacore/voyage.ts +++ b/app/datacore/voyage.ts @@ -64,14 +64,23 @@ export interface ITrackedAssignmentsByCrew { [key: string]: ITrackedAssignment[]; // key is crew.symbol }; - export interface ITrackedAssignment { tracker_id: number; slot: number; // Slot index where crew is seated trait: string; // Matched trait or empty string if no match - crew?: string; }; +export interface IFullPayloadAssignment extends ITrackedAssignment { + crew: string; + kwipment?: number[] | number[][]; +} + +export interface ITrackedPayload { + dbid: number; + voyage: ITrackedVoyage; + assignments: IFullPayloadAssignment[]; +} + export interface ITrackedAssignmentsBySkill { [key: string]: { ids: number[], diff --git a/app/logic/voyagetracker.ts b/app/logic/voyagetracker.ts index 9b971f1..740b358 100644 --- a/app/logic/voyagetracker.ts +++ b/app/logic/voyagetracker.ts @@ -1,4 +1,4 @@ -import { ITrackedAssignment, ITrackedVoyage } from "../datacore/voyage"; +import { IFullPayloadAssignment, ITrackedAssignment, ITrackedVoyage } from "../datacore/voyage"; import { TrackedCrew, TrackedVoyage } from "../models/Tracked"; import { makeSql } from "../sequelize"; import { TrackerPostResult, VoyageTrackerBase } from "../abstract/voyagetracker"; @@ -126,7 +126,7 @@ export class VoyageTracker extends VoyageTrackerBase { protected async postOrPutTrackedData( dbid: number, voyage: ITrackedVoyage, - assignments: ITrackedAssignment[], + assignments: IFullPayloadAssignment[], timeStamp: Date = new Date() ): Promise { const sql = await makeSql(dbid); diff --git a/app/models/Tracked.ts b/app/models/Tracked.ts index 5d5d685..1e5ba5a 100644 --- a/app/models/Tracked.ts +++ b/app/models/Tracked.ts @@ -1,5 +1,5 @@ import { Column, CreatedAt, DataType, Model, Table, UpdatedAt } from "sequelize-typescript"; -import { ITrackedVoyage, ITrackedAssignment } from "../datacore/voyage"; +import { ITrackedVoyage, ITrackedAssignment, IFullPayloadAssignment } from "../datacore/voyage"; export interface ITelemetryVoyage { crewSymbol: string; @@ -62,7 +62,7 @@ export class TrackedCrew extends Model implements ITrackedCrewRecord { trackerId!: number; @Column(DataType.JSON) - assignment!: ITrackedAssignment; + assignment!: ITrackedAssignment | IFullPayloadAssignment; @CreatedAt timeStamp!: Date;