diff options
author | Julien Dessaux | 2024-05-20 22:50:33 +0200 |
---|---|---|
committer | Julien Dessaux | 2024-05-20 22:50:33 +0200 |
commit | 4cb5c7853c75eb3d9e99a525065f0816ebb5dd62 (patch) | |
tree | 78d2ad16754ca7d105765377f64fae7e9ea19083 /nodejs/lib/systems.ts | |
parent | [node] fixed and optimized contracting (diff) | |
download | spacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.tar.gz spacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.tar.bz2 spacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.zip |
[node] implement shipyard info retrieval and database caching
Diffstat (limited to '')
-rw-r--r-- | nodejs/lib/systems.ts | 26 |
1 files changed, 19 insertions, 7 deletions
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<Market> { 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<Market>({endpoint: `/systems/${systemSymbol}/waypoints/${waypoint.symbol}/market`}); if (response.error) { @@ -25,11 +30,18 @@ export async function market(waypoint: Waypoint): Promise<Market> { return response.data; } -//export async function shipyard(waypoint: string): Promise<unknown> { -// // TODO database caching -// const systemSymbol = systemFromWaypoint(waypoint); -// return await send({endpoint: `/systems/${systemSymbol}/waypoints/${waypoint}/shipyard`}); -//} +export async function shipyard(waypoint: Waypoint): Promise<Shipyard> { + const data = dbShipyards.get(waypoint.symbol); + if (data && (data.ships || !isThereAShipAtThisWaypoint(waypoint))) { return data; } + const systemSymbol = systemFromWaypoint(waypoint.symbol); + const response = await send<Shipyard>({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<System> { let data = dbSystems.getSystem(symbol); |