52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import type { Database } from 'bun:sqlite';
|
|
import { dynamicInsert, dynamicUpdate, remove, select, type QueryOptions } from '@star-kitten/util/sqlite.js';
|
|
import type { Route } from './types/routes';
|
|
|
|
const TABLE_NAME = 'routes';
|
|
|
|
export default {
|
|
createTable: (db: Database) => {
|
|
db.run(
|
|
`CREATE TABLE IF NOT EXISTS ${TABLE_NAME} (
|
|
route_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
start_location_id INTEGER NOT NULL,
|
|
end_location_id INTEGER NOT NULL,
|
|
isk_per_m3 INTEGER NOT NULL,
|
|
collat_pct REAL NOT NULL,
|
|
max_volume INTEGER NOT NULL,
|
|
min_reward INTEGER NOT NULL,
|
|
expiration INTEGER NOT NULL,
|
|
completion INTEGER NOT NULL,
|
|
max_collateral INTEGER
|
|
)
|
|
`,
|
|
);
|
|
},
|
|
|
|
dropTable: (db: Database) => {
|
|
db.run(`DROP TABLE IF EXISTS ${TABLE_NAME}`);
|
|
},
|
|
};
|
|
|
|
export function addRoute(db: Database, route: Omit<Route, 'route_id'>) {
|
|
return dynamicInsert(db, TABLE_NAME, route);
|
|
}
|
|
|
|
export function updateLocation(db: Database, location: Route) {
|
|
const id = location.route_id;
|
|
delete location.route_id;
|
|
return dynamicUpdate(db, TABLE_NAME, location, 'route_id', id);
|
|
}
|
|
|
|
export function getRoutes(db: Database, options?: QueryOptions<Route>) {
|
|
return select<Route>(db, TABLE_NAME, options);
|
|
}
|
|
|
|
export function getRoute(db: Database, route_id: number) {
|
|
return select<Route>(db, TABLE_NAME, {}, '*', { route_id })?.[0];
|
|
}
|
|
|
|
export function removeRoute(db: Database, route_id: number) {
|
|
return remove<Route>(db, TABLE_NAME, { route_id });
|
|
}
|