Updates
This commit is contained in:
@@ -2,11 +2,15 @@ import { ServerQueryEqualities } from "../../../types";
|
||||
type Params = {
|
||||
fieldName: string;
|
||||
value?: string;
|
||||
equality: (typeof ServerQueryEqualities)[number];
|
||||
equality?: (typeof ServerQueryEqualities)[number];
|
||||
};
|
||||
type Return = {
|
||||
str?: string;
|
||||
param?: string;
|
||||
};
|
||||
/**
|
||||
* # SQL Gen Operator Gen
|
||||
* @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 {};
|
||||
|
||||
+44
-13
@@ -12,45 +12,76 @@ const sql_equality_parser_1 = __importDefault(require("../../../utils/sql-equali
|
||||
function sqlGenOperatorGen({ fieldName, value, equality, }) {
|
||||
if (value) {
|
||||
if (equality == "LIKE") {
|
||||
return `LOWER(${fieldName}) LIKE LOWER('%${value}%')`;
|
||||
return {
|
||||
str: `LOWER(${fieldName}) LIKE LOWER('%${value}%')`,
|
||||
};
|
||||
}
|
||||
else if (equality == "LIKE_RAW") {
|
||||
return `LOWER(${fieldName}) LIKE LOWER('${value}')`;
|
||||
return {
|
||||
str: `LOWER(${fieldName}) LIKE LOWER(?)`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
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") {
|
||||
return `LOWER(${fieldName}) NOT LIKE LOWER('${value}')`;
|
||||
return {
|
||||
str: `LOWER(${fieldName}) NOT LIKE LOWER(?)`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
else if (equality == "REGEXP") {
|
||||
return `LOWER(${fieldName}) REGEXP LOWER('${value}')`;
|
||||
return {
|
||||
str: `LOWER(${fieldName}) REGEXP LOWER(?')`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
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") {
|
||||
return `${fieldName} != ${value}`;
|
||||
return {
|
||||
str: `${fieldName} != ?`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
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 {
|
||||
return `${fieldName} = ${value}`;
|
||||
return {
|
||||
str: `${fieldName} = ?`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (equality == "IS NULL") {
|
||||
return `${fieldName} IS NULL`;
|
||||
return { str: `${fieldName} IS NULL` };
|
||||
}
|
||||
else if (equality == "IS NOT NULL") {
|
||||
return `${fieldName} IS NOT NULL`;
|
||||
return { str: `${fieldName} IS NOT NULL` };
|
||||
}
|
||||
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 {
|
||||
return `${fieldName} = ?`;
|
||||
return {
|
||||
str: `${fieldName} = ?`,
|
||||
param: value,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+60
-58
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
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
|
||||
* @description Generates an SQL Query for node module `mysql` or `serverless-mysql`
|
||||
@@ -29,68 +29,72 @@ function sqlGenerator({ tableName, genObject, dbFullName, count }) {
|
||||
return field;
|
||||
})();
|
||||
let str = `${finalFieldName}=?`;
|
||||
if (queryObj.nullValue) {
|
||||
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)) {
|
||||
if (Array.isArray(queryObj.value)) {
|
||||
const strArray = [];
|
||||
queryObj.value.forEach((val) => {
|
||||
var _a;
|
||||
const valueParsed = val;
|
||||
if (queryObj.equality == "LIKE") {
|
||||
strArray.push(`LOWER(${finalFieldName}) LIKE LOWER('%${valueParsed}%')`);
|
||||
const valueString = typeof valueParsed == "string"
|
||||
? 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") {
|
||||
strArray.push(`${finalFieldName} != ?`);
|
||||
sqlSearhValues.push(valueParsed);
|
||||
}
|
||||
else {
|
||||
strArray.push(`${finalFieldName} = ?`);
|
||||
sqlSearhValues.push(valueParsed);
|
||||
else if (operatorStrParam.str) {
|
||||
strArray.push(operatorStrParam.str);
|
||||
}
|
||||
});
|
||||
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;
|
||||
}
|
||||
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 });
|
||||
});
|
||||
function generateJoinStr(
|
||||
/** @type {import("../../../types").ServerQueryParamsJoinMatchObject} */ mtch,
|
||||
/** @type {import("../../../types").ServerQueryParamsJoin} */ 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) {
|
||||
return `'${mtch.targetLiteral}'`;
|
||||
|
||||
Reference in New Issue
Block a user