summaryrefslogtreecommitdiff
path: root/nodejs/database/markets.js
diff options
context:
space:
mode:
authorJulien Dessaux2024-03-17 01:26:51 +0100
committerJulien Dessaux2024-03-17 01:27:44 +0100
commit1b1df83ffd68ff1a8c62fc7d6bef1a1fde19cb6b (patch)
treec8c153795d610525c2e4eedd99502b15f54566d1 /nodejs/database/markets.js
parent[javascript] refactoring (diff)
downloadspacetraders-1b1df83ffd68ff1a8c62fc7d6bef1a1fde19cb6b.tar.gz
spacetraders-1b1df83ffd68ff1a8c62fc7d6bef1a1fde19cb6b.tar.bz2
spacetraders-1b1df83ffd68ff1a8c62fc7d6bef1a1fde19cb6b.zip
[javascript] Implementing market data gathering and caching
Diffstat (limited to '')
-rw-r--r--nodejs/database/markets.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/nodejs/database/markets.js b/nodejs/database/markets.js
new file mode 100644
index 0000000..522f57f
--- /dev/null
+++ b/nodejs/database/markets.js
@@ -0,0 +1,34 @@
+import db from './db.js';
+import * as utils from '../lib/utils.js';
+
+const addMarketStatement = db.prepare(`INSERT INTO markets(system, data) VALUES (?, json(?));`);
+const getMarketAtWaypointStatement = db.prepare(`SELECT data FROM markets WHERE data->>'symbol' = ?;`);
+const getMarketsInSystemStatement = db.prepare(`SELECT data FROM markets WHERE system = ?;`);
+const updateMarketStatement = db.prepare(`UPDATE markets SET data = json(:data) WHERE data->>'symbol' = :symbol;`);
+
+export function getMarketAtWaypoint(symbol) {
+ const data = getMarketAtWaypointStatement.get(symbol);
+ if (data === undefined) {
+ return null;
+ }
+ return JSON.parse(data.data);
+}
+
+export function getMarketsInSystem(symbol) {
+ const data = getMarketsInSystemStatement.get(symbol);
+ if (data === undefined) {
+ return null;
+ }
+ return JSON.parse(data.data);
+}
+
+export function setMarket(data) {
+ if (getMarketAtWaypoint(data.symbol) === null) {
+ const system = utils.systemFromWaypoint(data.symbol);
+ return addMarketStatement.run(system, JSON.stringify(data)).lastInsertRowid;
+ }
+ return updateMarketStatement.run({
+ data: JSON.stringify(data),
+ symbol: data.symbol,
+ }).changes;
+}