[javascript] added contracts and agent database management
This commit is contained in:
parent
9a71163dda
commit
e03bb90611
4 changed files with 53 additions and 1 deletions
|
@ -5,3 +5,12 @@ CREATE TABLE tokens (
|
|||
id INTEGER PRIMARY KEY,
|
||||
data TEXT NOT NULL
|
||||
);
|
||||
CREATE TABLE agents (
|
||||
id INTEGER PRIMARY KEY,
|
||||
data TEXT NOT NULL
|
||||
);
|
||||
CREATE TABLE contracts (
|
||||
id INTEGER PRIMARY KEY,
|
||||
data TEXT NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX contracts_data_id ON contracts (json_extract(data, '$.id'));
|
||||
|
|
16
nodejs/database/agents.js
Normal file
16
nodejs/database/agents.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
import db from './db.js';
|
||||
|
||||
const addAgentStatement = db.prepare(`INSERT INTO agents(data) VALUES (json(?));`);
|
||||
const getAgentStatement = db.prepare(`SELECT data FROM agents;`);
|
||||
|
||||
export function addAgent(agent) {
|
||||
return addAgentStatement.run(JSON.stringify(agent)).lastInsertRowid;
|
||||
}
|
||||
|
||||
export function getAgent() {
|
||||
const data = getAgentStatement.get();
|
||||
if (data === undefined) {
|
||||
return null;
|
||||
}
|
||||
return data.data;
|
||||
}
|
24
nodejs/database/contracts.js
Normal file
24
nodejs/database/contracts.js
Normal file
|
@ -0,0 +1,24 @@
|
|||
import db from './db.js';
|
||||
|
||||
const addContractStatement = db.prepare(`INSERT INTO contracts(data) VALUES (json(?));`);
|
||||
const getContractStatement = db.prepare(`SELECT data FROM contracts WHERE data->>'id' = ?;`);
|
||||
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;
|
||||
}
|
||||
return data.data;
|
||||
}
|
||||
|
||||
export function setContract(data) {
|
||||
if (getContract(data.id) === null) {
|
||||
return addContractStatement.run(JSON.stringify(data)).lastInsertRowid;
|
||||
} else {
|
||||
return updateContractStatement.run({
|
||||
data: JSON.stringify(data),
|
||||
id: data.id,
|
||||
}).changes;
|
||||
}
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
import * as dbContracts from '../database/contracts.js';
|
||||
import * as api from './api.js';
|
||||
import * as dbShips from '../database/ships.js';
|
||||
|
||||
|
@ -6,7 +7,9 @@ export async function accept(ctx) {
|
|||
}
|
||||
|
||||
export async function contracts() {
|
||||
return await api.send({endpoint: '/my/contracts'});
|
||||
const contracts = await api.send({endpoint: '/my/contracts', page: 1});
|
||||
contracts.forEach(contract => dbContracts.setContract(contract));
|
||||
return contracts;
|
||||
}
|
||||
|
||||
export async function deliver(ctx) {
|
||||
|
|
Loading…
Add table
Reference in a new issue