WorkshopTasker/server/api/clients/[id].patch.ts
2023-05-11 06:03:22 +02:00

36 lines
1 KiB
TypeScript

/* global defineEventHandler, readBody, createError */
import { ResultSetHeader } from "mysql2";
import { checkIsClient } from "../clients.post";
import { client } from "~/utils/types/database";
import { database, data } from "~/server/utils/database";
export default defineEventHandler(async (e) => {
const body = await readBody(e);
const id = e.context.params?.id as string;
if (!checkIsClient(body, false)) return; // checkIsClient already throws an detailed error
for (const [k, v] of Object.entries(body)) {
const [res] = await database.query(
// I believe it is safe to put key in the template
// because it is limited to 4 values here
`UPDATE \`clients\` SET \`${k}\` = ? WHERE \`id\` = ?`,
[v, id],
) as unknown as [ResultSetHeader];
if (res.affectedRows !== 1) {
throw createError({
statusCode: 404,
});
}
}
const [data] = await database.query(
"SELECT *, CONVERT(`id`, CHAR) AS `id` FROM `clients` WHERE `id` = ?",
[id],
) as unknown as data<client>;
return data[0];
});