factor out common api code

This commit is contained in:
Wroclaw 2023-05-11 09:11:20 +02:00
parent 1e63e008af
commit 67cad656d5
7 changed files with 239 additions and 201 deletions

View file

@ -1,17 +1,7 @@
/* global defineEventHandler, createError */
import { ResultSetHeader } from "mysql2";
/* global defineEventHandler */
import { database } from "~/server/utils/database";
import { baaWrapper } from "../clients.get";
export default defineEventHandler(async (e) => {
const id = e.context.params?.id as string;
const [result] = await database.query(
"DELETE FROM `clients` WHERE `id` = ?",
[id],
) as unknown as [ResultSetHeader];
if (result.affectedRows === 0) throw createError({ statusCode: 404 });
return null;
export default defineEventHandler((e) => {
return baaWrapper.RESTdeleteRecord(e);
});

View file

@ -1,20 +1,7 @@
/* global defineEventHandler, createError */
/* global defineEventHandler */
import { database, data } from "~/server/utils/database";
import { client } from "~/utils/types/database";
import { baaWrapper } from "../clients.get";
export default defineEventHandler(async (e) => {
const id = e.context.params?.id;
const [data] = await database.query(
"SELECT *, CONVERT(`id`, CHAR) AS `id` FROM `clients` WHERE `id` = ?",
[id],
) as unknown as data<client>;
if (!data[0]) {
throw createError({
statusCode: 404,
});
}
return data[0];
export default defineEventHandler((e) => {
return baaWrapper.RESTgetRecord(e);
});

View file

@ -1,36 +1,8 @@
/* global defineEventHandler, readBody, createError */
import { ResultSetHeader } from "mysql2";
/* global defineEventHandler */
import { checkIsClient } from "../clients.post";
import { client } from "~/utils/types/database";
import { database, data } from "~/server/utils/database";
import { baaWrapper } from "../clients.get";
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];
export default defineEventHandler((e) => {
return baaWrapper.RESTpatchRecord(e, checkIsClient);
});

View file

@ -1,12 +1,7 @@
/* global defineEventHandler, createError */
/* global defineEventHandler */
import { database, data } from "~/server/utils/database";
import { baaWrapper } from "../clients.get";
export default defineEventHandler(async (e) => {
const [[data]] = await database.query(
"SELECT COUNT(*) as `count` FROM `clients`",
) as unknown as data<{count: number}>;
if (!data) throw createError("Database returned no rows");
return data;
export default defineEventHandler((e) => {
return baaWrapper.RESTrecordCount(e);
});