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} = ?`; } } }