From 637415b8ca6843fa46dbb4e80d849c3a4324f0b6 Mon Sep 17 00:00:00 2001 From: Corban-Lee Date: Tue, 29 Apr 2025 12:27:19 +0100 Subject: [PATCH] feat: allow a custom 'where' clause parameter for datatable queries. --- src/server/controllers/guild/api/dt.module.ts | 7 +++++-- src/server/controllers/guild/api/feed.controller.ts | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/controllers/guild/api/dt.module.ts b/src/server/controllers/guild/api/dt.module.ts index 4782e89..1c19887 100644 --- a/src/server/controllers/guild/api/dt.module.ts +++ b/src/server/controllers/guild/api/dt.module.ts @@ -24,7 +24,8 @@ export const datatableRequest = async ( response: Response, model: ModelDelegate, defaultOrderBy: TOrderBy, - include?: object + include?: object, + where?: object ) => { const query = request.body as unknown as DatatableQuery; @@ -32,7 +33,7 @@ export const datatableRequest = async ( ? { [query.columns[query.order[0].column].data]: query.order[0].dir } as unknown as TOrderBy : defaultOrderBy; - const where = query.search?.value + const searchWhere = query.search?.value ? { OR: Object.values(query.columns) .filter(col => col.searchable) @@ -42,6 +43,8 @@ export const datatableRequest = async ( } : {}; + where = { ...where, ...searchWhere }; + const data = await model.findMany({ skip: query.start, take: query.length, diff --git a/src/server/controllers/guild/api/feed.controller.ts b/src/server/controllers/guild/api/feed.controller.ts index a5c072a..f177fdb 100644 --- a/src/server/controllers/guild/api/feed.controller.ts +++ b/src/server/controllers/guild/api/feed.controller.ts @@ -83,7 +83,8 @@ export const datatable = async (request: Request, response: Response) => { response, prisma.feed, { id: "asc" }, - { channels: true } + { channels: true }, + { guild_id: request.params.guildId } ); };