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()}\``) .map((g) => `\`${g.toString()}\``)
.join(",")}`; .join(",")}`;
} }
if ((genObject === null || genObject === void 0 ? void 0 : genObject.order) && !count) { function grabOrderString(order) {
let orderFields = []; let orderFields = [];
let orderSrt = ` ORDER BY`; let orderSrt = ``;
if ((genObject === null || genObject === void 0 ? void 0 : genObject.fullTextSearch) && genObject.fullTextSearch.scoreAlias) { if ((genObject === null || genObject === void 0 ? void 0 : genObject.fullTextSearch) && genObject.fullTextSearch.scoreAlias) {
orderFields.push(genObject.fullTextSearch.scoreAlias); orderFields.push(genObject.fullTextSearch.scoreAlias);
} }
else if (genObject.join) { else if (genObject === null || genObject === void 0 ? void 0 : genObject.join) {
orderFields.push(`${finalDbName}${tableName}.${String(genObject.order.field)}`); orderFields.push(`${finalDbName}${tableName}.${String(order.field)}`);
} }
else { 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}`; queryString += ` ${orderSrt}`;
} }
if ((genObject === null || genObject === void 0 ? void 0 : genObject.limit) && !count) if ((genObject === null || genObject === void 0 ? void 0 : genObject.limit) && !count)

View File

@ -819,10 +819,7 @@ export type ServerQueryParam<T extends {
limit?: number; limit?: number;
page?: number; page?: number;
offset?: number; offset?: number;
order?: { order?: ServerQueryParamOrder | ServerQueryParamOrder[];
field: keyof T;
strategy: "ASC" | "DESC";
};
searchOperator?: (typeof ServerQueryOperators)[number]; searchOperator?: (typeof ServerQueryOperators)[number];
searchEquality?: (typeof ServerQueryEqualities)[number]; searchEquality?: (typeof ServerQueryEqualities)[number];
addUserId?: { addUserId?: {
@ -834,6 +831,14 @@ export type ServerQueryParam<T extends {
fullTextSearch?: ServerQueryParamFullTextSearch<T>; fullTextSearch?: ServerQueryParamFullTextSearch<T>;
[key: string]: any; [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 { export type ServerQueryParamFullTextSearch<T extends {
[k: string]: any; [k: string]: any;
} = { } = {

View File

@ -1,5 +1,6 @@
import { import {
ServerQueryParam, ServerQueryParam,
ServerQueryParamOrder,
ServerQueryParamsJoin, ServerQueryParamsJoin,
ServerQueryParamsJoinMatchObject, ServerQueryParamsJoinMatchObject,
ServerQueryQueryObject, ServerQueryQueryObject,
@ -377,22 +378,38 @@ export default function sqlGenerator<
.join(",")}`; .join(",")}`;
} }
if (genObject?.order && !count) { function grabOrderString(order: ServerQueryParamOrder<T>) {
let orderFields = []; let orderFields = [];
let orderSrt = ``;
let orderSrt = ` ORDER BY`;
if (genObject?.fullTextSearch && genObject.fullTextSearch.scoreAlias) { if (genObject?.fullTextSearch && genObject.fullTextSearch.scoreAlias) {
orderFields.push(genObject.fullTextSearch.scoreAlias); orderFields.push(genObject.fullTextSearch.scoreAlias);
} else if (genObject.join) { } else if (genObject?.join) {
orderFields.push( orderFields.push(
`${finalDbName}${tableName}.${String(genObject.order.field)}` `${finalDbName}${tableName}.${String(order.field)}`
); );
} else { } 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}`; queryString += ` ${orderSrt}`;
} }

View File

@ -1008,10 +1008,7 @@ export type ServerQueryParam<
limit?: number; limit?: number;
page?: number; page?: number;
offset?: number; offset?: number;
order?: { order?: ServerQueryParamOrder | ServerQueryParamOrder[];
field: keyof T;
strategy: "ASC" | "DESC";
};
searchOperator?: (typeof ServerQueryOperators)[number]; searchOperator?: (typeof ServerQueryOperators)[number];
searchEquality?: (typeof ServerQueryEqualities)[number]; searchEquality?: (typeof ServerQueryEqualities)[number];
addUserId?: { addUserId?: {
@ -1024,6 +1021,13 @@ export type ServerQueryParam<
[key: string]: any; [key: string]: any;
}; };
export type ServerQueryParamOrder<
T extends { [k: string]: any } = { [k: string]: any }
> = {
field: keyof T;
strategy: "ASC" | "DESC";
};
export type ServerQueryParamFullTextSearch< export type ServerQueryParamFullTextSearch<
T extends { [k: string]: any } = { [k: string]: any } T extends { [k: string]: any } = { [k: string]: any }
> = { > = {

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/datasquirel", "name": "@moduletrace/datasquirel",
"version": "5.5.1", "version": "5.5.2",
"description": "Cloud-based SQL data management tool", "description": "Cloud-based SQL data management tool",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {