This commit is contained in:
Benjamin Toby 2025-12-05 06:33:20 +01:00
parent 57f06a631f
commit f91aff421c
5 changed files with 63 additions and 22 deletions

View File

@ -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)

View File

@ -819,10 +819,7 @@ export type ServerQueryParam<T extends {
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?: {
@ -834,6 +831,14 @@ export type ServerQueryParam<T extends {
fullTextSearch?: ServerQueryParamFullTextSearch<T>;
[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;
} = {

View File

@ -1,5 +1,6 @@
import {
ServerQueryParam,
ServerQueryParamOrder,
ServerQueryParamsJoin,
ServerQueryParamsJoinMatchObject,
ServerQueryQueryObject,
@ -377,22 +378,38 @@ export default function sqlGenerator<
.join(",")}`;
}
if (genObject?.order && !count) {
function grabOrderString(order: ServerQueryParamOrder<T>) {
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}`;
}

View File

@ -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 }
> = {

View File

@ -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": {