From 4cb5c7853c75eb3d9e99a525065f0816ebb5dd62 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Mon, 20 May 2024 22:50:33 +0200 Subject: [node] implement shipyard info retrieval and database caching --- nodejs/lib/systems.ts | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'nodejs/lib/systems.ts') diff --git a/nodejs/lib/systems.ts b/nodejs/lib/systems.ts index d4b3be5..6f0a830 100644 --- a/nodejs/lib/systems.ts +++ b/nodejs/lib/systems.ts @@ -4,17 +4,22 @@ import { sendPaginated, } from './api.ts'; import * as dbMarkets from '../database/markets.ts'; +import * as dbShipyards from '../database/shipyards.ts'; import * as dbSystems from '../database/systems.ts'; import { Market, + Shipyard, System, Waypoint, } from './types.ts' -import { systemFromWaypoint } from './utils.ts'; +import { + isThereAShipAtThisWaypoint, + systemFromWaypoint, +} from './utils.ts'; export async function market(waypoint: Waypoint): Promise { const data = dbMarkets.getMarketAtWaypoint(waypoint.symbol); - if (data) { return data; } + if (data && (data.tradeGoods || !isThereAShipAtThisWaypoint(waypoint))) { return data; } const systemSymbol = systemFromWaypoint(waypoint.symbol); let response = await send({endpoint: `/systems/${systemSymbol}/waypoints/${waypoint.symbol}/market`}); if (response.error) { @@ -25,11 +30,18 @@ export async function market(waypoint: Waypoint): Promise { return response.data; } -//export async function shipyard(waypoint: string): Promise { -// // TODO database caching -// const systemSymbol = systemFromWaypoint(waypoint); -// return await send({endpoint: `/systems/${systemSymbol}/waypoints/${waypoint}/shipyard`}); -//} +export async function shipyard(waypoint: Waypoint): Promise { + const data = dbShipyards.get(waypoint.symbol); + if (data && (data.ships || !isThereAShipAtThisWaypoint(waypoint))) { return data; } + const systemSymbol = systemFromWaypoint(waypoint.symbol); + const response = await send({endpoint: `/systems/${systemSymbol}/waypoints/${waypoint.symbol}/shipyard`}); + if (response.error) { + debugLog(response); + throw response; + } + dbShipyards.set(response.data); + return response.data; +} export async function system(symbol: string): Promise { let data = dbSystems.getSystem(symbol); -- cgit v1.2.3