fix: errors with feed datatables api endpoint

This commit is contained in:
Corban-Lee Jones 2025-04-23 14:09:59 +01:00
parent 98b9bb1fba
commit 130fa63f69

View File

@ -83,8 +83,8 @@ interface DataTableResponse {
} }
interface DatatableQuery { interface DatatableQuery {
length: number; length: string;
start: number; start: string;
order: { column: string; dir: string }[]; order: { column: string; dir: string }[];
columns: { [key: string]: { data: string; searchable: string }}; columns: { [key: string]: { data: string; searchable: string }};
search: { value: string }; search: { value: string };
@ -94,11 +94,11 @@ interface DatatableQuery {
export const datatable = async (request: Request, response: Response) => { export const datatable = async (request: Request, response: Response) => {
const query = request.query as unknown as DatatableQuery; const query = request.query as unknown as DatatableQuery;
const size: number = query.length || 10; const size: number = Number(query.length) || 10;
const start: number = query.start; const start: number = Number(query.start);
const order: string = (query.order && query.columns[query.order[0].column].data) || "id"; const order: string = (query.order && query.columns[query.order[0].column].data) || "id";
const direction: string = (query.order && query.order[0].dir) || "asc"; const direction: string = (query.order && query.order[0].dir) || "asc";
const search: string = query.search.value; const search: string = query.search?.value || "";
let dbQuery: any = {}; let dbQuery: any = {};
@ -116,16 +116,19 @@ export const datatable = async (request: Request, response: Response) => {
); );
} }
const orderBy: any = {};
orderBy[order] = direction;
const data = await prisma.feed.findMany({ const data = await prisma.feed.findMany({
...dbQuery, ...dbQuery,
skip: start, skip: start,
take: size, take: size,
orderBy: { order: direction }, orderBy: orderBy,
}); });
response.json(<DataTableResponse>{ response.json(<DataTableResponse>{
data: data, data: data,
recordsFiltered: await prisma.feed.count(...dbQuery), recordsFiltered: await prisma.feed.count({...dbQuery}),
recordsTotal: await prisma.feed.count() recordsTotal: await prisma.feed.count()
}); });
}; };