[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,
|
id INTEGER PRIMARY KEY,
|
||||||
data TEXT NOT NULL
|
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 api from './api.js';
|
||||||
import * as dbShips from '../database/ships.js';
|
import * as dbShips from '../database/ships.js';
|
||||||
|
|
||||||
|
@ -6,7 +7,9 @@ export async function accept(ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function contracts() {
|
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) {
|
export async function deliver(ctx) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue