[FEATURE] Server service containerization

This commit is contained in:
Dunemask 2023-12-19 11:39:01 -07:00
parent 22bf905415
commit 12d198456c
9 changed files with 165 additions and 91 deletions

View file

@ -1,8 +1,12 @@
/*CREATE SEQUENCE servers_id_seq;
CREATE SEQUENCE servers_id_seq;
CREATE TABLE servers (
id bigint NOT NULL DEFAULT nextval('servers_id_seq') PRIMARY KEY,
name varchar(255) DEFAULT NULL,
host varchar(255) DEFAULT NULL,
version varchar(63) DEFAULT 'latest',
server_type varchar(63) DEFAULT 'VANILLA',
memory varchar(63) DEFAULT '512',
CONSTRAINT unique_name UNIQUE(name),
CONSTRAINT unique_host UNIQUE(host)
);
ALTER SEQUENCE servers_id_seq OWNED BY servers.id;*/
ALTER SEQUENCE servers_id_seq OWNED BY servers.id;

View file

@ -0,0 +1,34 @@
import pg from "../postgres.js";
import { 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 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 === 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);
}
}