[FEATURE] Allow deleting of servers from the DB
This commit is contained in:
parent
5a1a89342e
commit
f1dd8cce3d
2 changed files with 26 additions and 10 deletions
|
@ -1,6 +1,10 @@
|
||||||
import createServerResources from "../k8s/server-create.js";
|
import createServerResources from "../k8s/server-create.js";
|
||||||
import deleteServerResources from "../k8s/server-delete.js";
|
import deleteServerResources from "../k8s/server-delete.js";
|
||||||
import { createServerEntry } from "../database/queries/server-queries.js";
|
import {
|
||||||
|
createServerEntry,
|
||||||
|
deleteServerEntry,
|
||||||
|
getServerEntry,
|
||||||
|
} from "../database/queries/server-queries.js";
|
||||||
import { sendError } from "../util/ExpressClientError.js";
|
import { sendError } from "../util/ExpressClientError.js";
|
||||||
import {
|
import {
|
||||||
startServerContainer,
|
startServerContainer,
|
||||||
|
@ -31,14 +35,18 @@ function checkServerName(serverSpec) {
|
||||||
throw new ExpressClientError({ c: 400, m: "Server name required!" });
|
throw new ExpressClientError({ c: 400, m: "Server name required!" });
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createServer(req, res) {
|
export async function createServer(req, res) {
|
||||||
if (payloadFilter(req, res) !== "filtered") return;
|
if (payloadFilter(req, res) !== "filtered") return;
|
||||||
const serverSpec = req.body;
|
const serverSpec = req.body;
|
||||||
createServerEntry(serverSpec)
|
try {
|
||||||
.then(() =>
|
const serverSpecs = await getServerEntry(serverSpec.name);
|
||||||
createServerResources(serverSpec).then(() => res.sendStatus(200)),
|
if (serverSpecs.length !== 0) throw Error("Server already exists in DB!");
|
||||||
)
|
await createServerResources(serverSpec);
|
||||||
.catch(sendError(res));
|
await createServerEntry(serverSpec);
|
||||||
|
res.sendStatus(200);
|
||||||
|
} catch (e) {
|
||||||
|
sendError(res)(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function deleteServer(req, res) {
|
export async function deleteServer(req, res) {
|
||||||
|
@ -49,8 +57,9 @@ export async function deleteServer(req, res) {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return sendError(res)(e);
|
return sendError(res)(e);
|
||||||
}
|
}
|
||||||
|
const deleteEntry = deleteServerEntry(serverSpec.name);
|
||||||
deleteServerResources(serverSpec)
|
const deleteResources = deleteServerResources(serverSpec);
|
||||||
|
Promise.all([deleteEntry, deleteResources])
|
||||||
.then(() => res.sendStatus(200))
|
.then(() => res.sendStatus(200))
|
||||||
.catch(sendError(res));
|
.catch(sendError(res));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import pg from "../postgres.js";
|
import pg from "../postgres.js";
|
||||||
import { insertQuery, selectWhereQuery } from "../pg-query.js";
|
import { deleteQuery, insertQuery, selectWhereQuery } from "../pg-query.js";
|
||||||
import ExpressClientError from "../../util/ExpressClientError.js";
|
import ExpressClientError from "../../util/ExpressClientError.js";
|
||||||
const table = "servers";
|
const table = "servers";
|
||||||
|
|
||||||
|
@ -13,11 +13,18 @@ export async function createServerEntry(serverSpec) {
|
||||||
return pg.query(q).catch(asExpressClientError);
|
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) {
|
export async function getServerEntry(serverName) {
|
||||||
if (!serverName) asExpressClientError({ message: "Server Name Required!" });
|
if (!serverName) asExpressClientError({ message: "Server Name Required!" });
|
||||||
const q = selectWhereQuery(table, { name: serverName });
|
const q = selectWhereQuery(table, { name: serverName });
|
||||||
try {
|
try {
|
||||||
const serverSpecs = await pg.query(q);
|
const serverSpecs = await pg.query(q);
|
||||||
|
if (serverSpecs.length === 0) return [];
|
||||||
if (!serverSpecs.length === 1)
|
if (!serverSpecs.length === 1)
|
||||||
throw Error("Multiple servers found with the same name!");
|
throw Error("Multiple servers found with the same name!");
|
||||||
const {
|
const {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue