diff --git a/src/server/controllers/guild/api/filter.controller.ts b/src/server/controllers/guild/api/filter.controller.ts index 8d7468e..6de6d60 100644 --- a/src/server/controllers/guild/api/filter.controller.ts +++ b/src/server/controllers/guild/api/filter.controller.ts @@ -33,8 +33,8 @@ export const post = async (request: Request, response: Response) => { guild_id: guildId, value: value, matching_algorithm: matching_algorithm, - is_insensitive: is_insensitive, - is_whitelist: is_whitelist + is_insensitive: is_insensitive === "on", + is_whitelist: is_whitelist === "on" } }); } @@ -49,10 +49,38 @@ export const post = async (request: Request, response: Response) => { response.status(201).json(filter); }; -export const patch = async () => {} // TODO ... +export const patch = async (request: Request, response: Response) => { + const guildId = request.params.guildId; + const { id, name, value, matching_algorithm, is_insensitive, is_whitelist } = request.body; + + let filter; + + try { + filter = await prisma.filter.update({ + where: { id: Number(id) }, + data: { + name: name, + guild_id: guildId, + value: value, + matching_algorithm: matching_algorithm, + is_insensitive: is_insensitive === "on", + is_whitelist: is_whitelist === "on" + } + }); + } + catch (error) { + console.error(error); + if (error instanceof Prisma.PrismaClientKnownRequestError) { + response.status(500).json({ error: error.message }); + return; + } + } + + response.status(201).json(filter); +}; export const del = async (request: Request, response: Response) => { - const { ids } = request.body; + let { ids } = request.body; const guildId = request.params.guildId; if (!ids || !Array.isArray(ids)) { @@ -60,6 +88,8 @@ export const del = async (request: Request, response: Response) => { return; } + ids = ids.map(id => Number(id)); + try { await prisma.filter.deleteMany({ where: { id: { in: ids }, @@ -82,7 +112,9 @@ export const datatable = async (request: Request, response: Response) => { request, response, prisma.filter, - { id: "asc" } + [{ updated_at: "desc" }, { id: "asc" }], + {}, + { guild_id: request.params.guildId } ); };