From f91aff421c2b9d81cd88645924069ba1c68af431 Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Fri, 5 Dec 2025 06:33:20 +0100 Subject: [PATCH] Updates --- .../functions/dsql/sql/sql-generator.js | 27 ++++++++++++---- dist/package-shared/types/index.d.ts | 13 +++++--- .../functions/dsql/sql/sql-generator.ts | 31 ++++++++++++++----- package-shared/types/index.ts | 12 ++++--- package.json | 2 +- 5 files changed, 63 insertions(+), 22 deletions(-) diff --git a/dist/package-shared/functions/dsql/sql/sql-generator.js b/dist/package-shared/functions/dsql/sql/sql-generator.js index 74615e7..36777a3 100644 --- a/dist/package-shared/functions/dsql/sql/sql-generator.js +++ b/dist/package-shared/functions/dsql/sql/sql-generator.js @@ -275,19 +275,34 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { .map((g) => `\`${g.toString()}\``) .join(",")}`; } - if ((genObject === null || genObject === void 0 ? void 0 : genObject.order) && !count) { + function grabOrderString(order) { let orderFields = []; - let orderSrt = ` ORDER BY`; + let orderSrt = ``; if ((genObject === null || genObject === void 0 ? void 0 : genObject.fullTextSearch) && genObject.fullTextSearch.scoreAlias) { orderFields.push(genObject.fullTextSearch.scoreAlias); } - else if (genObject.join) { - orderFields.push(`${finalDbName}${tableName}.${String(genObject.order.field)}`); + else if (genObject === null || genObject === void 0 ? void 0 : genObject.join) { + orderFields.push(`${finalDbName}${tableName}.${String(order.field)}`); } else { - orderFields.push(genObject.order.field); + orderFields.push(order.field); + } + orderSrt += ` ${orderFields.join(", ")} ${order.strategy}`; + return orderSrt; + } + if ((genObject === null || genObject === void 0 ? void 0 : genObject.order) && !count) { + let orderSrt = ` ORDER BY`; + if (Array.isArray(genObject.order)) { + for (let i = 0; i < genObject.order.length; i++) { + const order = genObject.order[i]; + orderSrt += + grabOrderString(order) + + (i < genObject.order.length - 1 ? `,` : ""); + } + } + else { + orderSrt += grabOrderString(genObject.order); } - orderSrt += ` ${orderFields.join(", ")} ${genObject.order.strategy}`; queryString += ` ${orderSrt}`; } if ((genObject === null || genObject === void 0 ? void 0 : genObject.limit) && !count) diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 17a749b..fc7ad15 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -819,10 +819,7 @@ export type ServerQueryParam; [key: string]: any; }; +export type ServerQueryParamOrder = { + field: keyof T; + strategy: "ASC" | "DESC"; +}; export type ServerQueryParamFullTextSearch) { let orderFields = []; - - let orderSrt = ` ORDER BY`; + let orderSrt = ``; if (genObject?.fullTextSearch && genObject.fullTextSearch.scoreAlias) { orderFields.push(genObject.fullTextSearch.scoreAlias); - } else if (genObject.join) { + } else if (genObject?.join) { orderFields.push( - `${finalDbName}${tableName}.${String(genObject.order.field)}` + `${finalDbName}${tableName}.${String(order.field)}` ); } else { - orderFields.push(genObject.order.field); + orderFields.push(order.field); } - orderSrt += ` ${orderFields.join(", ")} ${genObject.order.strategy}`; + orderSrt += ` ${orderFields.join(", ")} ${order.strategy}`; + + return orderSrt; + } + + if (genObject?.order && !count) { + let orderSrt = ` ORDER BY`; + + if (Array.isArray(genObject.order)) { + for (let i = 0; i < genObject.order.length; i++) { + const order = genObject.order[i]; + orderSrt += + grabOrderString(order) + + (i < genObject.order.length - 1 ? `,` : ""); + } + } else { + orderSrt += grabOrderString(genObject.order); + } queryString += ` ${orderSrt}`; } diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index 9344cab..3fb2329 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1008,10 +1008,7 @@ export type ServerQueryParam< limit?: number; page?: number; offset?: number; - order?: { - field: keyof T; - strategy: "ASC" | "DESC"; - }; + order?: ServerQueryParamOrder | ServerQueryParamOrder[]; searchOperator?: (typeof ServerQueryOperators)[number]; searchEquality?: (typeof ServerQueryEqualities)[number]; addUserId?: { @@ -1024,6 +1021,13 @@ export type ServerQueryParam< [key: string]: any; }; +export type ServerQueryParamOrder< + T extends { [k: string]: any } = { [k: string]: any } +> = { + field: keyof T; + strategy: "ASC" | "DESC"; +}; + export type ServerQueryParamFullTextSearch< T extends { [k: string]: any } = { [k: string]: any } > = { diff --git a/package.json b/package.json index ea3a9b5..aca217c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.5.1", + "version": "5.5.2", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {