summaryrefslogtreecommitdiff
path: root/nodejs/lib/systems.ts
diff options
context:
space:
mode:
authorJulien Dessaux2024-05-20 22:50:33 +0200
committerJulien Dessaux2024-05-20 22:50:33 +0200
commit4cb5c7853c75eb3d9e99a525065f0816ebb5dd62 (patch)
tree78d2ad16754ca7d105765377f64fae7e9ea19083 /nodejs/lib/systems.ts
parent[node] fixed and optimized contracting (diff)
downloadspacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.tar.gz
spacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.tar.bz2
spacetraders-4cb5c7853c75eb3d9e99a525065f0816ebb5dd62.zip
[node] implement shipyard info retrieval and database caching
Diffstat (limited to 'nodejs/lib/systems.ts')
-rw-r--r--nodejs/lib/systems.ts26
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);