diff --git a/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.d.ts b/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.d.ts index 9941c45..7d34af1 100644 --- a/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.d.ts +++ b/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.d.ts @@ -1,8 +1,11 @@ -import { ServerQueryEqualities } from "../../../types"; +import { ServerQueryEqualities, ServerQueryObject } from "../../../types"; type Params = { fieldName: string; value?: string; equality?: (typeof ServerQueryEqualities)[number]; + queryObj: ServerQueryObject<{ + [key: string]: any; + }, string>; }; type Return = { str?: string; @@ -12,5 +15,5 @@ type Return = { * # SQL Gen Operator Gen * @description Generates an SQL operator for node module `mysql` or `serverless-mysql` */ -export default function sqlGenOperatorGen({ fieldName, value, equality, }: Params): Return; +export default function sqlGenOperatorGen({ fieldName, value, equality, queryObj, }: Params): Return; export {}; diff --git a/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.js b/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.js index 89ea730..19d7e40 100644 --- a/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.js +++ b/dist/package-shared/functions/dsql/sql/sql-gen-operator-gen.js @@ -9,7 +9,13 @@ const sql_equality_parser_1 = __importDefault(require("../../../utils/sql-equali * # SQL Gen Operator Gen * @description Generates an SQL operator for node module `mysql` or `serverless-mysql` */ -function sqlGenOperatorGen({ fieldName, value, equality, }) { +function sqlGenOperatorGen({ fieldName, value, equality, queryObj, }) { + if (queryObj.nullValue) { + return { str: `${fieldName} IS NULL` }; + } + if (queryObj.notNullValue) { + return { str: `${fieldName} IS NOT NULL` }; + } if (value) { if (equality == "MATCH") { return { diff --git a/dist/package-shared/functions/dsql/sql/sql-generator.js b/dist/package-shared/functions/dsql/sql/sql-generator.js index 6b63583..b46430f 100644 --- a/dist/package-shared/functions/dsql/sql/sql-generator.js +++ b/dist/package-shared/functions/dsql/sql/sql-generator.js @@ -38,11 +38,14 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { return; const valueString = typeof valueParsed == "string" ? valueParsed - : (_a = valueParsed.value) === null || _a === void 0 ? void 0 : _a.toString(); + : valueParsed + ? (_a = valueParsed.value) === null || _a === void 0 ? void 0 : _a.toString() + : undefined; const valueEquality = typeof valueParsed == "object" ? valueParsed.equality || queryObj.equality : queryObj.equality; const operatorStrParam = (0, sql_gen_operator_gen_1.default)({ + queryObj, equality: valueEquality, fieldName: finalFieldName || "", value: (valueString === null || valueString === void 0 ? void 0 : valueString.toString()) || "", @@ -58,11 +61,14 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) { str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")"; } else { - const valueParsed = String(queryObj.value); + const valueParsed = queryObj.value + ? String(queryObj.value) + : undefined; const operatorStrParam = (0, sql_gen_operator_gen_1.default)({ equality: queryObj.equality, fieldName: finalFieldName || "", value: valueParsed, + queryObj, }); if (operatorStrParam.str && operatorStrParam.param) { str = operatorStrParam.str; diff --git a/package-shared/functions/dsql/sql/sql-gen-operator-gen.ts b/package-shared/functions/dsql/sql/sql-gen-operator-gen.ts index 88abcff..3df4c4f 100644 --- a/package-shared/functions/dsql/sql/sql-gen-operator-gen.ts +++ b/package-shared/functions/dsql/sql/sql-gen-operator-gen.ts @@ -1,10 +1,16 @@ import sqlEqualityParser from "../../../utils/sql-equality-parser"; -import { ServerQueryEqualities } from "../../../types"; +import { ServerQueryEqualities, ServerQueryObject } from "../../../types"; type Params = { fieldName: string; value?: string; equality?: (typeof ServerQueryEqualities)[number]; + queryObj: ServerQueryObject< + { + [key: string]: any; + }, + string + >; }; type Return = { @@ -20,7 +26,16 @@ export default function sqlGenOperatorGen({ fieldName, value, equality, + queryObj, }: Params): Return { + if (queryObj.nullValue) { + return { str: `${fieldName} IS NULL` }; + } + + if (queryObj.notNullValue) { + return { str: `${fieldName} IS NOT NULL` }; + } + if (value) { if (equality == "MATCH") { return { diff --git a/package-shared/functions/dsql/sql/sql-generator.ts b/package-shared/functions/dsql/sql/sql-generator.ts index c97698f..b3b79c7 100644 --- a/package-shared/functions/dsql/sql/sql-generator.ts +++ b/package-shared/functions/dsql/sql/sql-generator.ts @@ -67,7 +67,9 @@ export default function sqlGenerator< const valueString = typeof valueParsed == "string" ? valueParsed - : valueParsed.value?.toString(); + : valueParsed + ? valueParsed.value?.toString() + : undefined; const valueEquality = typeof valueParsed == "object" @@ -75,6 +77,7 @@ export default function sqlGenerator< : queryObj.equality; const operatorStrParam = sqlGenOperatorGen({ + queryObj, equality: valueEquality, fieldName: finalFieldName || "", value: valueString?.toString() || "", @@ -90,12 +93,15 @@ export default function sqlGenerator< str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")"; } else { - const valueParsed = String(queryObj.value); + const valueParsed = queryObj.value + ? String(queryObj.value) + : undefined; const operatorStrParam = sqlGenOperatorGen({ equality: queryObj.equality, fieldName: finalFieldName || "", value: valueParsed, + queryObj, }); if (operatorStrParam.str && operatorStrParam.param) { diff --git a/package.json b/package.json index 6ac9ff8..b99bf91 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "5.3.2", + "version": "5.3.3", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": {