datasquirel/package-shared/functions/dsql/sql/sql-gen-operator-gen.ts
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

51 lines
1.8 KiB
TypeScript

import sqlEqualityParser from "../../../utils/sql-equality-parser";
import { ServerQueryEqualities } from "../../../types";
type Params = {
fieldName: string;
value?: string;
equality: (typeof ServerQueryEqualities)[number];
};
/**
* # 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 {
if (value) {
if (equality == "LIKE") {
return `LOWER(${fieldName}) LIKE LOWER('%${value}%')`;
} else if (equality == "LIKE_RAW") {
return `LOWER(${fieldName}) LIKE LOWER('${value}')`;
} else if (equality == "NOT LIKE") {
return `LOWER(${fieldName}) NOT LIKE LOWER('%${value}%')`;
} else if (equality == "NOT LIKE_RAW") {
return `LOWER(${fieldName}) NOT LIKE LOWER('${value}')`;
} else if (equality == "REGEXP") {
return `LOWER(${fieldName}) REGEXP LOWER('${value}')`;
} else if (equality == "FULLTEXT") {
return `MATCH(${fieldName}) AGAINST('${value}' IN BOOLEAN MODE)`;
} else if (equality == "NOT EQUAL") {
return `${fieldName} != ${value}`;
} else if (equality) {
return `${fieldName} ${sqlEqualityParser(equality)} ${value}`;
} else {
return `${fieldName} = ${value}`;
}
} else {
if (equality == "IS NULL") {
return `${fieldName} IS NULL`;
} else if (equality == "IS NOT NULL") {
return `${fieldName} IS NOT NULL`;
} else if (equality) {
return `${fieldName} ${sqlEqualityParser(equality)} ?`;
} else {
return `${fieldName} = ?`;
}
}
}