Updates
This commit is contained in:
parent
e8269a8b5e
commit
82bea3efd0
@ -2,11 +2,15 @@ import { ServerQueryEqualities } from "../../../types";
|
|||||||
type Params = {
|
type Params = {
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
value?: string;
|
value?: string;
|
||||||
equality: (typeof ServerQueryEqualities)[number];
|
equality?: (typeof ServerQueryEqualities)[number];
|
||||||
|
};
|
||||||
|
type Return = {
|
||||||
|
str?: string;
|
||||||
|
param?: string;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* # SQL Gen Operator Gen
|
* # SQL Gen Operator Gen
|
||||||
* @description Generates an SQL operator for node module `mysql` or `serverless-mysql`
|
* @description Generates an SQL operator for node module `mysql` or `serverless-mysql`
|
||||||
*/
|
*/
|
||||||
export default function sqlGenOperatorGen({ fieldName, value, equality, }: Params): string;
|
export default function sqlGenOperatorGen({ fieldName, value, equality, }: Params): Return;
|
||||||
export {};
|
export {};
|
||||||
|
@ -12,45 +12,76 @@ const sql_equality_parser_1 = __importDefault(require("../../../utils/sql-equali
|
|||||||
function sqlGenOperatorGen({ fieldName, value, equality, }) {
|
function sqlGenOperatorGen({ fieldName, value, equality, }) {
|
||||||
if (value) {
|
if (value) {
|
||||||
if (equality == "LIKE") {
|
if (equality == "LIKE") {
|
||||||
return `LOWER(${fieldName}) LIKE LOWER('%${value}%')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) LIKE LOWER('%${value}%')`,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "LIKE_RAW") {
|
else if (equality == "LIKE_RAW") {
|
||||||
return `LOWER(${fieldName}) LIKE LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) LIKE LOWER(?)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "NOT LIKE") {
|
else if (equality == "NOT LIKE") {
|
||||||
return `LOWER(${fieldName}) NOT LIKE LOWER('%${value}%')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) NOT LIKE LOWER('%${value}%')`,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "NOT LIKE_RAW") {
|
else if (equality == "NOT LIKE_RAW") {
|
||||||
return `LOWER(${fieldName}) NOT LIKE LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) NOT LIKE LOWER(?)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "REGEXP") {
|
else if (equality == "REGEXP") {
|
||||||
return `LOWER(${fieldName}) REGEXP LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) REGEXP LOWER(?')`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "FULLTEXT") {
|
else if (equality == "FULLTEXT") {
|
||||||
return `MATCH(${fieldName}) AGAINST('${value}' IN BOOLEAN MODE)`;
|
return {
|
||||||
|
str: `MATCH(${fieldName}) AGAINST(? IN BOOLEAN MODE)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality == "NOT EQUAL") {
|
else if (equality == "NOT EQUAL") {
|
||||||
return `${fieldName} != ${value}`;
|
return {
|
||||||
|
str: `${fieldName} != ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else if (equality) {
|
else if (equality) {
|
||||||
return `${fieldName} ${(0, sql_equality_parser_1.default)(equality)} ${value}`;
|
return {
|
||||||
|
str: `${fieldName} ${(0, sql_equality_parser_1.default)(equality)} ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return `${fieldName} = ${value}`;
|
return {
|
||||||
|
str: `${fieldName} = ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (equality == "IS NULL") {
|
if (equality == "IS NULL") {
|
||||||
return `${fieldName} IS NULL`;
|
return { str: `${fieldName} IS NULL` };
|
||||||
}
|
}
|
||||||
else if (equality == "IS NOT NULL") {
|
else if (equality == "IS NOT NULL") {
|
||||||
return `${fieldName} IS NOT NULL`;
|
return { str: `${fieldName} IS NOT NULL` };
|
||||||
}
|
}
|
||||||
else if (equality) {
|
else if (equality) {
|
||||||
return `${fieldName} ${(0, sql_equality_parser_1.default)(equality)} ?`;
|
return {
|
||||||
|
str: `${fieldName} ${(0, sql_equality_parser_1.default)(equality)} ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return `${fieldName} = ?`;
|
return {
|
||||||
|
str: `${fieldName} = ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.default = sqlGenerator;
|
exports.default = sqlGenerator;
|
||||||
const sql_equality_parser_1 = __importDefault(require("../../../utils/sql-equality-parser"));
|
const sql_gen_operator_gen_1 = __importDefault(require("./sql-gen-operator-gen"));
|
||||||
/**
|
/**
|
||||||
* # SQL Query Generator
|
* # SQL Query Generator
|
||||||
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
|
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
|
||||||
@ -29,68 +29,72 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) {
|
|||||||
return field;
|
return field;
|
||||||
})();
|
})();
|
||||||
let str = `${finalFieldName}=?`;
|
let str = `${finalFieldName}=?`;
|
||||||
if (queryObj.nullValue) {
|
if (Array.isArray(queryObj.value)) {
|
||||||
str = `${finalFieldName} IS NULL`;
|
|
||||||
}
|
|
||||||
else if (queryObj.notNullValue) {
|
|
||||||
str = `${finalFieldName} IS NOT NULL`;
|
|
||||||
}
|
|
||||||
else if (typeof queryObj.value == "string" ||
|
|
||||||
typeof queryObj.value == "number") {
|
|
||||||
const valueParsed = String(queryObj.value);
|
|
||||||
const operator = (0, sql_equality_parser_1.default)(queryObj.equality || "EQUAL");
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (Array.isArray(queryObj.value)) {
|
|
||||||
const strArray = [];
|
const strArray = [];
|
||||||
queryObj.value.forEach((val) => {
|
queryObj.value.forEach((val) => {
|
||||||
|
var _a;
|
||||||
const valueParsed = val;
|
const valueParsed = val;
|
||||||
if (queryObj.equality == "LIKE") {
|
const valueString = typeof valueParsed == "string"
|
||||||
strArray.push(`LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`);
|
? valueParsed
|
||||||
|
: (_a = valueParsed.value) === null || _a === void 0 ? void 0 : _a.toString();
|
||||||
|
const valueEquality = typeof valueParsed == "object"
|
||||||
|
? valueParsed.equality || queryObj.equality
|
||||||
|
: queryObj.equality;
|
||||||
|
const operatorStrParam = (0, sql_gen_operator_gen_1.default)({
|
||||||
|
equality: valueEquality,
|
||||||
|
fieldName: finalFieldName || "",
|
||||||
|
value: (valueString === null || valueString === void 0 ? void 0 : valueString.toString()) || "",
|
||||||
|
});
|
||||||
|
if (operatorStrParam.str && operatorStrParam.param) {
|
||||||
|
strArray.push(operatorStrParam.str);
|
||||||
|
sqlSearhValues.push(operatorStrParam.param);
|
||||||
}
|
}
|
||||||
else if (queryObj.equality == "NOT EQUAL") {
|
else if (operatorStrParam.str) {
|
||||||
strArray.push(`${finalFieldName} != ?`);
|
strArray.push(operatorStrParam.str);
|
||||||
sqlSearhValues.push(valueParsed);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
strArray.push(`${finalFieldName} = ?`);
|
|
||||||
sqlSearhValues.push(valueParsed);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")";
|
str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")";
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
const valueParsed = String(queryObj.value);
|
||||||
|
const operatorStrParam = (0, sql_gen_operator_gen_1.default)({
|
||||||
|
equality: queryObj.equality,
|
||||||
|
fieldName: finalFieldName || "",
|
||||||
|
value: valueParsed,
|
||||||
|
});
|
||||||
|
if (operatorStrParam.str && operatorStrParam.param) {
|
||||||
|
str = operatorStrParam.str;
|
||||||
|
sqlSearhValues.push(operatorStrParam.param);
|
||||||
|
}
|
||||||
|
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;
|
return str;
|
||||||
}
|
}
|
||||||
const sqlSearhString = queryKeys === null || queryKeys === void 0 ? void 0 : queryKeys.map((field) => {
|
const sqlSearhString = queryKeys === null || queryKeys === void 0 ? void 0 : queryKeys.map((field) => {
|
||||||
@ -114,9 +118,7 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) {
|
|||||||
}
|
}
|
||||||
return genSqlSrchStr({ queryObj, field, join: genObject === null || genObject === void 0 ? void 0 : genObject.join });
|
return genSqlSrchStr({ queryObj, field, join: genObject === null || genObject === void 0 ? void 0 : genObject.join });
|
||||||
});
|
});
|
||||||
function generateJoinStr(
|
function generateJoinStr(mtch, join) {
|
||||||
/** @type {import("../../../types").ServerQueryParamsJoinMatchObject} */ mtch,
|
|
||||||
/** @type {import("../../../types").ServerQueryParamsJoin} */ join) {
|
|
||||||
return `${finalDbName}${typeof mtch.source == "object" ? mtch.source.tableName : tableName}.${typeof mtch.source == "object" ? mtch.source.fieldName : mtch.source}=${(() => {
|
return `${finalDbName}${typeof mtch.source == "object" ? mtch.source.tableName : tableName}.${typeof mtch.source == "object" ? mtch.source.fieldName : mtch.source}=${(() => {
|
||||||
if (mtch.targetLiteral) {
|
if (mtch.targetLiteral) {
|
||||||
return `'${mtch.targetLiteral}'`;
|
return `'${mtch.targetLiteral}'`;
|
||||||
|
6
dist/package-shared/types/index.d.ts
vendored
6
dist/package-shared/types/index.d.ts
vendored
@ -829,10 +829,14 @@ export type ServerQueryParam<T extends {
|
|||||||
group?: (keyof T)[];
|
group?: (keyof T)[];
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
|
export type ServerQueryValuesObject = {
|
||||||
|
value?: string | number;
|
||||||
|
equality?: (typeof ServerQueryEqualities)[number];
|
||||||
|
};
|
||||||
export type ServerQueryObject<T extends object = {
|
export type ServerQueryObject<T extends object = {
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
}, K extends string = string> = {
|
}, K extends string = string> = {
|
||||||
value?: string | string[];
|
value?: string | (string | ServerQueryValuesObject)[];
|
||||||
nullValue?: boolean;
|
nullValue?: boolean;
|
||||||
notNullValue?: boolean;
|
notNullValue?: boolean;
|
||||||
operator?: (typeof ServerQueryOperators)[number];
|
operator?: (typeof ServerQueryOperators)[number];
|
||||||
|
@ -4,7 +4,12 @@ import { ServerQueryEqualities } from "../../../types";
|
|||||||
type Params = {
|
type Params = {
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
value?: string;
|
value?: string;
|
||||||
equality: (typeof ServerQueryEqualities)[number];
|
equality?: (typeof ServerQueryEqualities)[number];
|
||||||
|
};
|
||||||
|
|
||||||
|
type Return = {
|
||||||
|
str?: string;
|
||||||
|
param?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,36 +20,67 @@ export default function sqlGenOperatorGen({
|
|||||||
fieldName,
|
fieldName,
|
||||||
value,
|
value,
|
||||||
equality,
|
equality,
|
||||||
}: Params): string {
|
}: Params): Return {
|
||||||
if (value) {
|
if (value) {
|
||||||
if (equality == "LIKE") {
|
if (equality == "LIKE") {
|
||||||
return `LOWER(${fieldName}) LIKE LOWER('%${value}%')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) LIKE LOWER('%${value}%')`,
|
||||||
|
};
|
||||||
} else if (equality == "LIKE_RAW") {
|
} else if (equality == "LIKE_RAW") {
|
||||||
return `LOWER(${fieldName}) LIKE LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) LIKE LOWER(?)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else if (equality == "NOT LIKE") {
|
} else if (equality == "NOT LIKE") {
|
||||||
return `LOWER(${fieldName}) NOT LIKE LOWER('%${value}%')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) NOT LIKE LOWER('%${value}%')`,
|
||||||
|
};
|
||||||
} else if (equality == "NOT LIKE_RAW") {
|
} else if (equality == "NOT LIKE_RAW") {
|
||||||
return `LOWER(${fieldName}) NOT LIKE LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) NOT LIKE LOWER(?)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else if (equality == "REGEXP") {
|
} else if (equality == "REGEXP") {
|
||||||
return `LOWER(${fieldName}) REGEXP LOWER('${value}')`;
|
return {
|
||||||
|
str: `LOWER(${fieldName}) REGEXP LOWER(?')`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else if (equality == "FULLTEXT") {
|
} else if (equality == "FULLTEXT") {
|
||||||
return `MATCH(${fieldName}) AGAINST('${value}' IN BOOLEAN MODE)`;
|
return {
|
||||||
|
str: `MATCH(${fieldName}) AGAINST(? IN BOOLEAN MODE)`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else if (equality == "NOT EQUAL") {
|
} else if (equality == "NOT EQUAL") {
|
||||||
return `${fieldName} != ${value}`;
|
return {
|
||||||
|
str: `${fieldName} != ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else if (equality) {
|
} else if (equality) {
|
||||||
return `${fieldName} ${sqlEqualityParser(equality)} ${value}`;
|
return {
|
||||||
|
str: `${fieldName} ${sqlEqualityParser(equality)} ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
return `${fieldName} = ${value}`;
|
return {
|
||||||
|
str: `${fieldName} = ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (equality == "IS NULL") {
|
if (equality == "IS NULL") {
|
||||||
return `${fieldName} IS NULL`;
|
return { str: `${fieldName} IS NULL` };
|
||||||
} else if (equality == "IS NOT NULL") {
|
} else if (equality == "IS NOT NULL") {
|
||||||
return `${fieldName} IS NOT NULL`;
|
return { str: `${fieldName} IS NOT NULL` };
|
||||||
} else if (equality) {
|
} else if (equality) {
|
||||||
return `${fieldName} ${sqlEqualityParser(equality)} ?`;
|
return {
|
||||||
|
str: `${fieldName} ${sqlEqualityParser(equality)} ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
return `${fieldName} = ?`;
|
return {
|
||||||
|
str: `${fieldName} = ?`,
|
||||||
|
param: value,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
import sqlEqualityParser from "../../../utils/sql-equality-parser";
|
|
||||||
import {
|
import {
|
||||||
ServerQueryParam,
|
ServerQueryParam,
|
||||||
ServerQueryParamsJoin,
|
ServerQueryParamsJoin,
|
||||||
|
ServerQueryParamsJoinMatchObject,
|
||||||
ServerQueryQueryObject,
|
ServerQueryQueryObject,
|
||||||
} from "../../../types";
|
} from "../../../types";
|
||||||
|
import sqlGenOperatorGen from "./sql-gen-operator-gen";
|
||||||
|
|
||||||
type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
|
type Param<T extends { [key: string]: any } = { [key: string]: any }> = {
|
||||||
genObject?: ServerQueryParam<T>;
|
genObject?: ServerQueryParam<T>;
|
||||||
@ -56,60 +57,76 @@ export default function sqlGenerator<
|
|||||||
|
|
||||||
let str = `${finalFieldName}=?`;
|
let str = `${finalFieldName}=?`;
|
||||||
|
|
||||||
if (queryObj.nullValue) {
|
if (Array.isArray(queryObj.value)) {
|
||||||
str = `${finalFieldName} IS NULL`;
|
|
||||||
} else if (queryObj.notNullValue) {
|
|
||||||
str = `${finalFieldName} IS NOT NULL`;
|
|
||||||
} else if (
|
|
||||||
typeof queryObj.value == "string" ||
|
|
||||||
typeof queryObj.value == "number"
|
|
||||||
) {
|
|
||||||
const valueParsed = String(queryObj.value);
|
|
||||||
const operator = sqlEqualityParser(queryObj.equality || "EQUAL");
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
} else if (Array.isArray(queryObj.value)) {
|
|
||||||
const strArray: string[] = [];
|
const strArray: string[] = [];
|
||||||
queryObj.value.forEach((val) => {
|
queryObj.value.forEach((val) => {
|
||||||
const valueParsed = val;
|
const valueParsed = val;
|
||||||
if (queryObj.equality == "LIKE") {
|
const valueString =
|
||||||
strArray.push(
|
typeof valueParsed == "string"
|
||||||
`LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`
|
? valueParsed
|
||||||
);
|
: valueParsed.value?.toString();
|
||||||
} else if (queryObj.equality == "NOT EQUAL") {
|
|
||||||
strArray.push(`${finalFieldName} != ?`);
|
const valueEquality =
|
||||||
sqlSearhValues.push(valueParsed);
|
typeof valueParsed == "object"
|
||||||
} else {
|
? valueParsed.equality || queryObj.equality
|
||||||
strArray.push(`${finalFieldName} = ?`);
|
: queryObj.equality;
|
||||||
sqlSearhValues.push(valueParsed);
|
|
||||||
|
const operatorStrParam = sqlGenOperatorGen({
|
||||||
|
equality: valueEquality,
|
||||||
|
fieldName: finalFieldName || "",
|
||||||
|
value: valueString?.toString() || "",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (operatorStrParam.str && operatorStrParam.param) {
|
||||||
|
strArray.push(operatorStrParam.str);
|
||||||
|
sqlSearhValues.push(operatorStrParam.param);
|
||||||
|
} else if (operatorStrParam.str) {
|
||||||
|
strArray.push(operatorStrParam.str);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")";
|
str = "(" + strArray.join(` ${queryObj.operator || "AND"} `) + ")";
|
||||||
|
} else {
|
||||||
|
const valueParsed = String(queryObj.value);
|
||||||
|
|
||||||
|
const operatorStrParam = sqlGenOperatorGen({
|
||||||
|
equality: queryObj.equality,
|
||||||
|
fieldName: finalFieldName || "",
|
||||||
|
value: valueParsed,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (operatorStrParam.str && operatorStrParam.param) {
|
||||||
|
str = operatorStrParam.str;
|
||||||
|
sqlSearhValues.push(operatorStrParam.param);
|
||||||
|
} 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;
|
return str;
|
||||||
@ -144,8 +161,8 @@ export default function sqlGenerator<
|
|||||||
});
|
});
|
||||||
|
|
||||||
function generateJoinStr(
|
function generateJoinStr(
|
||||||
/** @type {import("../../../types").ServerQueryParamsJoinMatchObject} */ mtch: import("../../../types").ServerQueryParamsJoinMatchObject,
|
mtch: ServerQueryParamsJoinMatchObject,
|
||||||
/** @type {import("../../../types").ServerQueryParamsJoin} */ join: import("../../../types").ServerQueryParamsJoin
|
join: ServerQueryParamsJoin
|
||||||
) {
|
) {
|
||||||
return `${finalDbName}${
|
return `${finalDbName}${
|
||||||
typeof mtch.source == "object" ? mtch.source.tableName : tableName
|
typeof mtch.source == "object" ? mtch.source.tableName : tableName
|
||||||
|
@ -1009,11 +1009,16 @@ export type ServerQueryParam<
|
|||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export type ServerQueryValuesObject = {
|
||||||
|
value?: string | number;
|
||||||
|
equality?: (typeof ServerQueryEqualities)[number];
|
||||||
|
};
|
||||||
|
|
||||||
export type ServerQueryObject<
|
export type ServerQueryObject<
|
||||||
T extends object = { [key: string]: any },
|
T extends object = { [key: string]: any },
|
||||||
K extends string = string
|
K extends string = string
|
||||||
> = {
|
> = {
|
||||||
value?: string | string[];
|
value?: string | (string | ServerQueryValuesObject)[];
|
||||||
nullValue?: boolean;
|
nullValue?: boolean;
|
||||||
notNullValue?: boolean;
|
notNullValue?: boolean;
|
||||||
operator?: (typeof ServerQueryOperators)[number];
|
operator?: (typeof ServerQueryOperators)[number];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@moduletrace/datasquirel",
|
"name": "@moduletrace/datasquirel",
|
||||||
"version": "5.2.1",
|
"version": "5.2.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": {
|
||||||
|
Loading…
Reference in New Issue
Block a user