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) { 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) { return select(db, TABLE_NAME, options); } export function getRoute(db: Database, route_id: number) { return select(db, TABLE_NAME, {}, '*', { route_id })?.[0]; } export function removeRoute(db: Database, route_id: number) { return remove(db, TABLE_NAME, { route_id }); }