[node] begin the great typescript rewrite
This commit is contained in:
parent
3b61a9694d
commit
d668eac4a6
31 changed files with 879 additions and 666 deletions
|
@ -1,21 +0,0 @@
|
|||
import db from './db.js';
|
||||
|
||||
const addAgentStatement = db.prepare(`INSERT INTO agents(data) VALUES (json(?));`);
|
||||
const getAgentStatement = db.prepare(`SELECT data FROM agents;`);
|
||||
const setAgentStatement = db.prepare(`UPDATE agents SET data = json(?);`);
|
||||
|
||||
export function addAgent(agent) {
|
||||
return addAgentStatement.run(JSON.stringify(agent)).lastInsertRowid;
|
||||
}
|
||||
|
||||
export function getAgent() {
|
||||
const data = getAgentStatement.get();
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
return JSON.parse(data.data);
|
||||
}
|
||||
|
||||
export function setAgent(agent) {
|
||||
return setAgentStatement.run(JSON.stringify(agent)).changes;
|
||||
}
|
20
nodejs/database/agents.ts
Normal file
20
nodejs/database/agents.ts
Normal file
|
@ -0,0 +1,20 @@
|
|||
import { Agent } from '../model/agent.ts';
|
||||
import db from './db.js';
|
||||
|
||||
const addAgentStatement = db.prepare(`INSERT INTO agents(data) VALUES (json(?));`);
|
||||
const getAgentStatement = db.prepare(`SELECT data FROM agents;`);
|
||||
const setAgentStatement = db.prepare(`UPDATE agents SET data = json(?);`);
|
||||
|
||||
export function addAgent(agent: Agent) {
|
||||
addAgentStatement.run(JSON.stringify(agent));
|
||||
}
|
||||
|
||||
export function getAgent(): Agent|null {
|
||||
const data = getAgentStatement.get() as {data: string}|undefined;
|
||||
if (!data) return null;
|
||||
return JSON.parse(data.data);
|
||||
}
|
||||
|
||||
export function setAgent(agent: Agent) {
|
||||
setAgentStatement.run(JSON.stringify(agent));
|
||||
}
|
|
@ -1,30 +1,29 @@
|
|||
import db from './db.js';
|
||||
import { Contract } from '../model/contract.ts';
|
||||
import db from './db.ts';
|
||||
|
||||
const addContractStatement = db.prepare(`INSERT INTO contracts(data) VALUES (json(?));`);
|
||||
const getContractStatement = db.prepare(`SELECT data FROM contracts WHERE data->>'id' = ?;`);
|
||||
const getContractsStatement = db.prepare(`SELECT data FROM contracts WHERE data->>'fulfilled' = false;`);
|
||||
const updateContractStatement = db.prepare(`UPDATE contracts SET data = json(:data) WHERE data->>'id' = :id;`);
|
||||
|
||||
export function getContract(id) {
|
||||
const data = getContractStatement.get(id);
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
export function getContract(id: string): Contract|null {
|
||||
const data = getContractStatement.get(id) as {data: string}|undefined;
|
||||
if (!data) return null;
|
||||
return JSON.parse(data.data);
|
||||
}
|
||||
|
||||
export function getContracts() {
|
||||
const data = getContractsStatement.all();
|
||||
export function getContracts(): Array<Contract> {
|
||||
const data = getContractsStatement.all() as Array<{data: string}>;
|
||||
return data.map(contractData => JSON.parse(contractData.data));
|
||||
}
|
||||
|
||||
export function setContract(data) {
|
||||
export function setContract(data: Contract) {
|
||||
if (getContract(data.id) === null) {
|
||||
return addContractStatement.run(JSON.stringify(data)).lastInsertRowid;
|
||||
addContractStatement.run(JSON.stringify(data));
|
||||
} else {
|
||||
return updateContractStatement.run({
|
||||
updateContractStatement.run({
|
||||
data: JSON.stringify(data),
|
||||
id: data.id,
|
||||
}).changes;
|
||||
});
|
||||
}
|
||||
}
|
|
@ -11,7 +11,7 @@ const allMigrations = [
|
|||
|
||||
const db = new Database(
|
||||
process.env.NODE_ENV === 'test' ? 'test.db' : 'spacetraders.db',
|
||||
process.env.NODE_ENV === 'development' ? { verbose: console.log } : null
|
||||
process.env.NODE_ENV === 'development' ? { verbose: console.log } : undefined
|
||||
);
|
||||
db.pragma('foreign_keys = ON');
|
||||
db.pragma('journal_mode = WAL');
|
||||
|
@ -20,7 +20,8 @@ function init() {
|
|||
db.transaction(function migrate() {
|
||||
let version;
|
||||
try {
|
||||
version = db.prepare('SELECT version FROM schema_version').get().version;
|
||||
const res = db.prepare('SELECT version FROM schema_version').get() as {version: number};
|
||||
version = res.version;
|
||||
} catch {
|
||||
version = 0;
|
||||
}
|
||||
|
@ -34,10 +35,10 @@ function init() {
|
|||
}
|
||||
|
||||
export function reset() {
|
||||
const indices = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'index';`).all();
|
||||
const tables = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'table';`).all();
|
||||
const triggers = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'trigger';`).all();
|
||||
const views = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'view';`).all();
|
||||
const indices = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'index';`).all() as Array<{name: string}>;
|
||||
const tables = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'table';`).all() as Array<{name: string}>;
|
||||
const triggers = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'trigger';`).all() as Array<{name: string}>;
|
||||
const views = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'view';`).all() as Array<{name: string}>;
|
||||
indices.forEach(elt => db.exec(`DROP INDEX ${elt.name};`));
|
||||
tables.forEach(elt => db.exec(`DROP TABLE ${elt.name};`));
|
||||
triggers.forEach(elt => db.exec(`DROP TRIGGER ${elt.name};`));
|
|
@ -1,4 +1,6 @@
|
|||
import db from './db.js';
|
||||
import db from './db.ts';
|
||||
import { Cargo } from '../model/cargo.ts';
|
||||
import { Fuel, Nav, Ship } from '../model/ship.ts';
|
||||
|
||||
const addShipStatement = db.prepare(`INSERT INTO ships(data) VALUES (json(?));`);
|
||||
const getShipStatement = db.prepare(`SELECT data FROM ships WHERE data->>'symbol' = ?;`);
|
||||
|
@ -8,51 +10,46 @@ const setShipFuelStatement = db.prepare(`UPDATE ships SET data = (SELECT json_se
|
|||
const setShipNavStatement = db.prepare(`UPDATE ships SET data = (SELECT json_set(data, '$.nav', json(:nav)) FROM ships WHERE data->>'symbol' = :symbol) WHERE data->>'symbol' = :symbol;`);
|
||||
const updateShipStatement = db.prepare(`UPDATE ships SET data = json(:data) WHERE data->>'symbol' = :symbol;`);
|
||||
|
||||
export function getShip(symbol) {
|
||||
const data = getShipStatement.get(symbol);
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
export function getShip(symbol: string): Ship|null {
|
||||
const data = getShipStatement.get(symbol) as {data: string}|undefined;
|
||||
if (!data) return null;
|
||||
return JSON.parse(data.data);
|
||||
}
|
||||
|
||||
export function getShipsAt(symbol) {
|
||||
const data = getShipsAtStatement.all(symbol);
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
export function getShipsAt(symbol: string) {
|
||||
const data = getShipsAtStatement.all(symbol) as Array<{data: string}>;
|
||||
return data.map(elt => JSON.parse(elt.data));
|
||||
}
|
||||
|
||||
|
||||
export function setShip(data) {
|
||||
export function setShip(data: Ship) {
|
||||
if (getShip(data.symbol) === null) {
|
||||
return addShipStatement.run(JSON.stringify(data)).lastInsertRowid;
|
||||
addShipStatement.run(JSON.stringify(data));
|
||||
} else {
|
||||
return updateShipStatement.run({
|
||||
updateShipStatement.run({
|
||||
data: JSON.stringify(data),
|
||||
symbol: data.symbol,
|
||||
}).changes;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export function setShipCargo(symbol, cargo) {
|
||||
return setShipCargoStatement.run({
|
||||
export function setShipCargo(symbol: string, cargo: Cargo) {
|
||||
setShipCargoStatement.run({
|
||||
cargo: JSON.stringify(cargo),
|
||||
symbol: symbol,
|
||||
}).changes;
|
||||
});
|
||||
}
|
||||
|
||||
export function setShipFuel(symbol, fuel) {
|
||||
return setShipFuelStatement.run({
|
||||
export function setShipFuel(symbol: string, fuel: Fuel) {
|
||||
setShipFuelStatement.run({
|
||||
fuel: JSON.stringify(fuel),
|
||||
symbol: symbol,
|
||||
}).changes;
|
||||
});
|
||||
}
|
||||
|
||||
export function setShipNav(symbol, nav) {
|
||||
return setShipNavStatement.run({
|
||||
export function setShipNav(symbol: string, nav: Nav) {
|
||||
setShipNavStatement.run({
|
||||
nav: JSON.stringify(nav),
|
||||
symbol: symbol,
|
||||
}).changes;
|
||||
});
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
import db from './db.js';
|
||||
|
||||
const addTokenStatement = db.prepare(`INSERT INTO tokens(data) VALUES (?);`);
|
||||
const getTokenStatement = db.prepare(`SELECT data FROM tokens;`);
|
||||
|
||||
export function addToken(token) {
|
||||
return addTokenStatement.run(token).lastInsertRowid;
|
||||
}
|
||||
|
||||
export function getToken() {
|
||||
const data = getTokenStatement.get();
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
return data.data;
|
||||
}
|
14
nodejs/database/tokens.ts
Normal file
14
nodejs/database/tokens.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import db from './db.ts';
|
||||
|
||||
const addTokenStatement = db.prepare(`INSERT INTO tokens(data) VALUES (?);`);
|
||||
const getTokenStatement = db.prepare(`SELECT data FROM tokens;`);
|
||||
|
||||
export function addToken(token: string) {
|
||||
addTokenStatement.run(token);
|
||||
}
|
||||
|
||||
export function getToken(): string|null {
|
||||
const data = getTokenStatement.get() as {data: string}|undefined;
|
||||
if (data === undefined) return null;
|
||||
return data.data;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue