From 7959014721456a26d656245fbc574c7bae55790f Mon Sep 17 00:00:00 2001 From: Benjamin Toby Date: Wed, 3 Dec 2025 06:21:14 +0100 Subject: [PATCH] Updates --- bun.lockb | Bin 57140 -> 61842 bytes .../functions/backend/db/addDbEntry.js | 3 +- .../functions/backend/db/updateDbEntry.js | 3 +- .../functions/dsql/sql/sql-generator.js | 93 +++++++------- dist/package-shared/types/index.d.ts | 15 ++- dist/package-shared/types/index.js | 6 +- .../utils/data-fetching/crud-get.js | 5 +- .../utils/data-fetching/crud.js | 3 +- .../functions/backend/db/addDbEntry.ts | 3 +- .../functions/backend/db/updateDbEntry.ts | 3 +- .../functions/dsql/sql/sql-generator.ts | 114 +++++++++--------- package-shared/types/index.ts | 21 +++- .../utils/data-fetching/crud-get.ts | 5 +- package-shared/utils/data-fetching/crud.ts | 3 +- package.json | 5 +- 15 files changed, 165 insertions(+), 117 deletions(-) mode change 100644 => 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb old mode 100644 new mode 100755 index 7a988b4c7ff8f038575463303b2a9745aa4d4db5..62eaa2955c4d2a5bfaef8e30d7cca85457600df1 GIT binary patch delta 13671 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

6< nI?$#AevQgQ0$+Y_Q9`EFtG@NcR|&GkEnPj)Y@cQCbC&-BUj;8X delta 10751 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 B8Eyao diff --git a/dist/package-shared/functions/backend/db/addDbEntry.js b/dist/package-shared/functions/backend/db/addDbEntry.js index a151756..687d844 100644 --- a/dist/package-shared/functions/backend/db/addDbEntry.js +++ b/dist/package-shared/functions/backend/db/addDbEntry.js @@ -13,6 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addDbEntry; +const sql_formatter_1 = require("sql-formatter"); const updateDbEntry_1 = __importDefault(require("./updateDbEntry")); const lodash_1 = __importDefault(require("lodash")); const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler")); @@ -191,7 +192,7 @@ function addDbEntry(_a) { success: Boolean(newInsert === null || newInsert === void 0 ? void 0 : newInsert.insertId), payload: newInsert, queryObject: { - sql: query, + sql: (0, sql_formatter_1.format)(query), params: finalQueryValues, }, }; diff --git a/dist/package-shared/functions/backend/db/updateDbEntry.js b/dist/package-shared/functions/backend/db/updateDbEntry.js index 6c919ae..c2d05fa 100644 --- a/dist/package-shared/functions/backend/db/updateDbEntry.js +++ b/dist/package-shared/functions/backend/db/updateDbEntry.js @@ -13,6 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = updateDbEntry; +const sql_formatter_1 = require("sql-formatter"); const check_if_is_master_1 = __importDefault(require("../../../utils/check-if-is-master")); const conn_db_handler_1 = __importDefault(require("../../../utils/db/conn-db-handler")); const lodash_1 = __importDefault(require("lodash")); @@ -109,7 +110,7 @@ function updateDbEntry(_a) { success: Boolean(updatedEntry === null || updatedEntry === void 0 ? void 0 : updatedEntry.affectedRows), payload: updatedEntry, queryObject: { - sql: query, + sql: (0, sql_formatter_1.format)(query), params: updateValues, }, debug: debug ? { data, newData } : undefined, diff --git a/dist/package-shared/functions/dsql/sql/sql-generator.js b/dist/package-shared/functions/dsql/sql/sql-generator.js index b46430f..619b5c3 100644 --- a/dist/package-shared/functions/dsql/sql/sql-generator.js +++ b/dist/package-shared/functions/dsql/sql/sql-generator.js @@ -77,55 +77,9 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { else if (operatorStrParam.str) { str = operatorStrParam.str; } - // if (queryObj.equality == "LIKE") { - // str = `LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`; - // } else if (queryObj.equality == "LIKE_RAW") { - // str = `LOWER(${finalFieldName}) LIKE LOWER(?)`; - // sqlSearhValues.push(valueParsed); - // } else if (queryObj.equality == "NOT LIKE") { - // str = `LOWER(${finalFieldName}) NOT LIKE LOWER('%${valueParsed}%')`; - // } else if (queryObj.equality == "NOT LIKE_RAW") { - // str = `LOWER(${finalFieldName}) NOT LIKE LOWER(?)`; - // sqlSearhValues.push(valueParsed); - // } else if (queryObj.equality == "REGEXP") { - // str = `LOWER(${finalFieldName}) REGEXP LOWER(?)`; - // sqlSearhValues.push(valueParsed); - // } else if (queryObj.equality == "FULLTEXT") { - // str = `MATCH(${finalFieldName}) AGAINST(? IN BOOLEAN MODE)`; - // sqlSearhValues.push(valueParsed); - // } else if (queryObj.equality == "NOT EQUAL") { - // str = `${finalFieldName} != ?`; - // sqlSearhValues.push(valueParsed); - // } else if (queryObj.equality) { - // str = `${finalFieldName} ${operator} ?`; - // sqlSearhValues.push(valueParsed); - // } else { - // sqlSearhValues.push(valueParsed); - // } } return str; } - const sqlSearhString = queryKeys === null || queryKeys === void 0 ? void 0 : queryKeys.map((field) => { - const queryObj = finalQuery === null || finalQuery === void 0 ? void 0 : finalQuery[field]; - if (!queryObj) - return; - if (queryObj.__query) { - const subQueryGroup = queryObj.__query; - const subSearchKeys = Object.keys(subQueryGroup); - const subSearchString = subSearchKeys.map((_field) => { - const newSubQueryObj = subQueryGroup === null || subQueryGroup === void 0 ? void 0 : subQueryGroup[_field]; - return genSqlSrchStr({ - queryObj: newSubQueryObj, - field: _field, - join: genObject === null || genObject === void 0 ? void 0 : genObject.join, - }); - }); - return ("(" + - subSearchString.join(` ${queryObj.operator || "AND"} `) + - ")"); - } - return genSqlSrchStr({ queryObj, field, join: genObject === null || genObject === void 0 ? void 0 : genObject.join }); - }); function generateJoinStr(mtch, join) { return `${finalDbName}${typeof mtch.source == "object" ? mtch.source.tableName : tableName}.${typeof mtch.source == "object" ? mtch.source.fieldName : mtch.source}=${(() => { if (mtch.targetLiteral) { @@ -173,6 +127,32 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { str += " *"; } } + if (genObject === null || genObject === void 0 ? void 0 : genObject.countSubQueries) { + let countSqls = []; + for (let i = 0; i < genObject.countSubQueries.length; i++) { + const countSubQuery = genObject.countSubQueries[i]; + let subQStr = `(SELECT COUNT(*)`; + subQStr += ` FROM ${countSubQuery.table}`; + subQStr += ` WHERE (`; + for (let j = 0; j < countSubQuery.srcTrgMap.length; j++) { + const csqSrc = countSubQuery.srcTrgMap[j]; + subQStr += ` ${countSubQuery.table}.${csqSrc.src}`; + if (typeof csqSrc.trg == "string") { + subQStr += ` = ?`; + sqlSearhValues.push(csqSrc.trg); + } + else if (typeof csqSrc.trg == "object") { + subQStr += ` = ${csqSrc.trg.table}.${csqSrc.trg.field}`; + } + if (j < countSubQuery.srcTrgMap.length - 1) { + subQStr += ` AND `; + } + } + subQStr += ` )) AS ${countSubQuery.alias}`; + countSqls.push(subQStr); + } + str += `, ${countSqls.join(",")}`; + } if ((genObject === null || genObject === void 0 ? void 0 : genObject.join) && !count) { const existingJoinTableNames = [tableName]; str += @@ -242,6 +222,27 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { } return str; })(); + const sqlSearhString = queryKeys === null || queryKeys === void 0 ? void 0 : queryKeys.map((field) => { + const queryObj = finalQuery === null || finalQuery === void 0 ? void 0 : finalQuery[field]; + if (!queryObj) + return; + if (queryObj.__query) { + const subQueryGroup = queryObj.__query; + const subSearchKeys = Object.keys(subQueryGroup); + const subSearchString = subSearchKeys.map((_field) => { + const newSubQueryObj = subQueryGroup === null || subQueryGroup === void 0 ? void 0 : subQueryGroup[_field]; + return genSqlSrchStr({ + queryObj: newSubQueryObj, + field: _field, + join: genObject === null || genObject === void 0 ? void 0 : genObject.join, + }); + }); + return ("(" + + subSearchString.join(` ${queryObj.operator || "AND"} `) + + ")"); + } + return genSqlSrchStr({ queryObj, field, join: genObject === null || genObject === void 0 ? void 0 : genObject.join }); + }); if ((sqlSearhString === null || sqlSearhString === void 0 ? void 0 : sqlSearhString[0]) && sqlSearhString.find((str) => str)) { const stringOperator = (genObject === null || genObject === void 0 ? void 0 : genObject.searchOperator) || "AND"; queryString += ` WHERE ${sqlSearhString.join(` ${stringOperator} `)}`; diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 4463f4b..d1c9f33 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -827,8 +827,21 @@ export type ServerQueryParam[]; group?: (keyof T)[]; + countSubQueries?: ServerQueryParamsCount[]; [key: string]: any; }; +export type ServerQueryParamsCount = { + table: string; + srcTrgMap: { + src: string; + trg: string | ServerQueryParamsCountSrcTrgMap; + }[]; + alias: string; +}; +export type ServerQueryParamsCountSrcTrgMap = { + table: string; + field: string; +}; export type TableSelectFieldsObject { - const queryObj = finalQuery?.[field]; - if (!queryObj) return; - - if (queryObj.__query) { - const subQueryGroup = queryObj.__query; - - const subSearchKeys = Object.keys(subQueryGroup); - const subSearchString = subSearchKeys.map((_field) => { - const newSubQueryObj = subQueryGroup?.[_field]; - - return genSqlSrchStr({ - queryObj: newSubQueryObj, - field: _field, - join: genObject?.join, - }); - }); - - return ( - "(" + - subSearchString.join(` ${queryObj.operator || "AND"} `) + - ")" - ); - } - - return genSqlSrchStr({ queryObj, field, join: genObject?.join }); - }); - function generateJoinStr( mtch: ServerQueryParamsJoinMatchObject, join: ServerQueryParamsJoin @@ -239,6 +185,38 @@ export default function sqlGenerator< } } + if (genObject?.countSubQueries) { + let countSqls: string[] = []; + + for (let i = 0; i < genObject.countSubQueries.length; i++) { + const countSubQuery = genObject.countSubQueries[i]; + let subQStr = `(SELECT COUNT(*)`; + subQStr += ` FROM ${countSubQuery.table}`; + subQStr += ` WHERE (`; + + for (let j = 0; j < countSubQuery.srcTrgMap.length; j++) { + const csqSrc = countSubQuery.srcTrgMap[j]; + subQStr += ` ${countSubQuery.table}.${csqSrc.src}`; + + if (typeof csqSrc.trg == "string") { + subQStr += ` = ?`; + sqlSearhValues.push(csqSrc.trg); + } else if (typeof csqSrc.trg == "object") { + subQStr += ` = ${csqSrc.trg.table}.${csqSrc.trg.field}`; + } + + if (j < countSubQuery.srcTrgMap.length - 1) { + subQStr += ` AND `; + } + } + + subQStr += ` )) AS ${countSubQuery.alias}`; + countSqls.push(subQStr); + } + + str += `, ${countSqls.join(",")}`; + } + if (genObject?.join && !count) { const existingJoinTableNames: string[] = [tableName]; @@ -320,6 +298,34 @@ export default function sqlGenerator< return str; })(); + const sqlSearhString = queryKeys?.map((field) => { + const queryObj = finalQuery?.[field]; + if (!queryObj) return; + + if (queryObj.__query) { + const subQueryGroup = queryObj.__query; + + const subSearchKeys = Object.keys(subQueryGroup); + const subSearchString = subSearchKeys.map((_field) => { + const newSubQueryObj = subQueryGroup?.[_field]; + + return genSqlSrchStr({ + queryObj: newSubQueryObj, + field: _field, + join: genObject?.join, + }); + }); + + return ( + "(" + + subSearchString.join(` ${queryObj.operator || "AND"} `) + + ")" + ); + } + + return genSqlSrchStr({ queryObj, field, join: genObject?.join }); + }); + if (sqlSearhString?.[0] && sqlSearhString.find((str) => str)) { const stringOperator = genObject?.searchOperator || "AND"; queryString += ` WHERE ${sqlSearhString.join(` ${stringOperator} `)}`; diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index f92cd3b..ffb7530 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1012,9 +1012,24 @@ export type ServerQueryParam< }; join?: ServerQueryParamsJoin[]; group?: (keyof T)[]; + countSubQueries?: ServerQueryParamsCount[]; [key: string]: any; }; +export type ServerQueryParamsCount = { + table: string; + srcTrgMap: { + src: string; + trg: string | ServerQueryParamsCountSrcTrgMap; + }[]; + alias: string; +}; + +export type ServerQueryParamsCountSrcTrgMap = { + table: string; + field: string; +}; + export type TableSelectFieldsObject< T extends { [k: string]: any } = { [k: string]: any } > = { @@ -1858,7 +1873,11 @@ export const ImageMimeTypes: (keyof sharp.FormatEnum)[] = [ "jpg", ] as const; +export const VideoMimeTypes = ["mp4", "wav"] as const; + export const FileMimeTypes = [ + ...ImageMimeTypes, + ...VideoMimeTypes, "pdf", "csv", "json", @@ -1879,8 +1898,6 @@ export const FileMimeTypes = [ "css", ] as const; -export const VideoMimeTypes = ["mp4", "wav"] as const; - export const CurrentlyEditedFieldActions = [ "edit-field", "edit-index", diff --git a/package-shared/utils/data-fetching/crud-get.ts b/package-shared/utils/data-fetching/crud-get.ts index 432d10e..f13c203 100644 --- a/package-shared/utils/data-fetching/crud-get.ts +++ b/package-shared/utils/data-fetching/crud-get.ts @@ -1,3 +1,4 @@ +import { format } from "sql-formatter"; import sqlGenerator from "../../functions/dsql/sql/sql-generator"; import { APIResponseObject, DsqlCrudParam } from "../../types"; import connDbHandler, { ConnDBHandlerQueryObject } from "../db/conn-db-handler"; @@ -85,11 +86,11 @@ export default async function < : undefined, errors: res?.errors, queryObject: { - sql: queryObject?.string, + sql: format(queryObject?.string || "") || undefined, params: queryObject?.values, }, countQueryObject: { - sql: countQueryObject?.string, + sql: format(countQueryObject?.string || "") || undefined, params: countQueryObject?.values, }, count: isSuccess diff --git a/package-shared/utils/data-fetching/crud.ts b/package-shared/utils/data-fetching/crud.ts index db19fc5..da9492e 100644 --- a/package-shared/utils/data-fetching/crud.ts +++ b/package-shared/utils/data-fetching/crud.ts @@ -1,3 +1,4 @@ +import { format } from "sql-formatter"; import sqlDeleteGenerator from "../../functions/dsql/sql/sql-delete-generator"; import { APIResponseObject, @@ -94,7 +95,7 @@ export default async function dsqlCrud< success: Boolean(res.affectedRows), payload: res, queryObject: { - sql: deleteQuery?.query || "", + sql: format(deleteQuery?.query || ""), params: deleteQuery?.values || [], }, }; diff --git a/package.json b/package.json index b45edf5..22bc50f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.4.3", + "version": "5.4.4", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": { @@ -46,6 +46,7 @@ "lodash": "^4.17.21", "mariadb": "^3.4.4", "nodemailer": "^6.9.14", - "sanitize-html": "^2.13.1" + "sanitize-html": "^2.13.1", + "sql-formatter": "^15.6.10" } }