2023-12-20 03:20:04 +00:00
|
|
|
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 });
|
|
|
|
};
|
|
|
|
|
2023-12-22 20:06:01 -07:00
|
|
|
const getMclName = (host, id) => `${host.replaceAll(".", "-")}-${id}`;
|
|
|
|
|
2023-12-20 03:20:04 +00:00
|
|
|
export async function createServerEntry(serverSpec) {
|
|
|
|
const { name, host, version, serverType: server_type, memory } = serverSpec;
|
2023-12-22 14:45:49 -07:00
|
|
|
var q = insertQuery(table, { name, host, version, server_type, memory });
|
|
|
|
q += "\n RETURNING *";
|
|
|
|
try {
|
|
|
|
const entries = await pg.query(q);
|
|
|
|
const {
|
|
|
|
id,
|
|
|
|
name,
|
|
|
|
host,
|
|
|
|
version,
|
|
|
|
server_type: serverType,
|
|
|
|
memory,
|
|
|
|
} = entries[0];
|
2023-12-22 20:06:01 -07:00
|
|
|
const mclName = getMclName(host, id);
|
|
|
|
return { name, mclName, id, host, version, serverType, memory };
|
2023-12-22 14:45:49 -07:00
|
|
|
} catch (e) {
|
|
|
|
asExpressClientError(e);
|
|
|
|
}
|
2023-12-20 03:20:04 +00:00
|
|
|
}
|
|
|
|
|
2023-12-22 14:45:49 -07:00
|
|
|
export async function deleteServerEntry(serverId) {
|
|
|
|
if (!serverId) asExpressClientError({ message: "Server ID Required!" });
|
|
|
|
const q = deleteQuery(table, { id: serverId });
|
2023-12-20 03:20:04 +00:00
|
|
|
return pg.query(q).catch(asExpressClientError);
|
|
|
|
}
|
|
|
|
|
2023-12-22 14:45:49 -07:00
|
|
|
export async function getServerEntry(serverId) {
|
|
|
|
if (!serverId) asExpressClientError({ message: "Server ID Required!" });
|
|
|
|
const q = selectWhereQuery(table, { id: serverId });
|
2023-12-20 03:20:04 +00:00
|
|
|
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 {
|
2023-12-22 14:45:49 -07:00
|
|
|
id,
|
2023-12-20 03:20:04 +00:00
|
|
|
name,
|
|
|
|
host,
|
|
|
|
version,
|
|
|
|
server_type: serverType,
|
|
|
|
memory,
|
|
|
|
} = serverSpecs[0];
|
2023-12-22 20:06:01 -07:00
|
|
|
const mclName = getMclName(host, id);
|
|
|
|
return { name, mclName, id, host, version, serverType, memory };
|
2023-12-20 03:20:04 +00:00
|
|
|
} catch (e) {
|
|
|
|
asExpressClientError(e);
|
|
|
|
}
|
|
|
|
}
|
2023-12-22 20:06:01 -07:00
|
|
|
|
|
|
|
export async function getServerEntries() {
|
|
|
|
const q = `SELECT * FROM ${table}`;
|
|
|
|
return pg.query(q);
|
|
|
|
}
|