import pg from "../postgres.js"; import { deleteQuery, insertQuery, selectWhereQuery } from "../pg-query.js"; import ExpressClientError from "../../util/ExpressClientError.js"; const table = "servers"; const asExpressClientError = (e) => { throw new ExpressClientError({ m: e.message, c: 409 }); }; export async function createServerEntry(serverSpec) { const { name, host, version, serverType: server_type, memory } = serverSpec; const q = insertQuery(table, { name, host, version, server_type, memory }); return pg.query(q).catch(asExpressClientError); } export async function deleteServerEntry(serverName) { if (!serverName) asExpressClientError({ message: "Server Name Required!" }); const q = deleteQuery(table, { name: serverName }); return pg.query(q).catch(asExpressClientError); } export async function getServerEntry(serverName) { if (!serverName) asExpressClientError({ message: "Server Name Required!" }); const q = selectWhereQuery(table, { name: serverName }); try { const serverSpecs = await pg.query(q); if (serverSpecs.length === 0) return []; if (!serverSpecs.length === 1) throw Error("Multiple servers found with the same name!"); const { name, host, version, server_type: serverType, memory, } = serverSpecs[0]; return { name, host, version, serverType, memory }; } catch (e) { asExpressClientError(e); } }