summaryrefslogtreecommitdiff
path: root/nodejs/database/markets.ts
diff options
context:
space:
mode:
Diffstat (limited to 'nodejs/database/markets.ts')
-rw-r--r--nodejs/database/markets.ts26
1 files changed, 26 insertions, 0 deletions
diff --git a/nodejs/database/markets.ts b/nodejs/database/markets.ts
new file mode 100644
index 0000000..7ae5ca2
--- /dev/null
+++ b/nodejs/database/markets.ts
@@ -0,0 +1,26 @@
+import { DbData, db } from './db.ts';
+import { Market } from '../model/market.ts';
+import { systemFromWaypoint } from '../lib/utils.ts';
+
+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: string): Market|null {
+ const data = getMarketAtWaypointStatement.get(symbol) as DbData;
+ if (!data) return null;
+ return JSON.parse(data.data);
+}
+
+export function setMarket(data: Market): void {
+ if (getMarketAtWaypoint(data.symbol) === null) {
+ const system = systemFromWaypoint(data.symbol);
+ addMarketStatement.run(system, JSON.stringify(data));
+ } else {
+ updateMarketStatement.run({
+ data: JSON.stringify(data),
+ symbol: data.symbol,
+ });
+ }
+}