[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 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 {
|
||||
startServerContainer,
|
||||
|
@ -31,14 +35,18 @@ function checkServerName(serverSpec) {
|
|||
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;
|
||||
const serverSpec = req.body;
|
||||
createServerEntry(serverSpec)
|
||||
.then(() =>
|
||||
createServerResources(serverSpec).then(() => res.sendStatus(200)),
|
||||
)
|
||||
.catch(sendError(res));
|
||||
try {
|
||||
const serverSpecs = await getServerEntry(serverSpec.name);
|
||||
if (serverSpecs.length !== 0) throw Error("Server already exists in DB!");
|
||||
await createServerResources(serverSpec);
|
||||
await createServerEntry(serverSpec);
|
||||
res.sendStatus(200);
|
||||
} catch (e) {
|
||||
sendError(res)(e);
|
||||
}
|
||||
}
|
||||
|
||||
export async function deleteServer(req, res) {
|
||||
|
@ -49,8 +57,9 @@ export async function deleteServer(req, res) {
|
|||
} catch (e) {
|
||||
return sendError(res)(e);
|
||||
}
|
||||
|
||||
deleteServerResources(serverSpec)
|
||||
const deleteEntry = deleteServerEntry(serverSpec.name);
|
||||
const deleteResources = deleteServerResources(serverSpec);
|
||||
Promise.all([deleteEntry, deleteResources])
|
||||
.then(() => res.sendStatus(200))
|
||||
.catch(sendError(res));
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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";
|
||||
const table = "servers";
|
||||
|
||||
|
@ -13,11 +13,18 @@ export async function createServerEntry(serverSpec) {
|
|||
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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue