def case_handler_transform()

in nl2sql_src/nl2sql_generic.py [0:0]


    def case_handler_transform(self, sql_query: str) -> str:
        """
        This function implements case-handling mechanism transformation
        for a SQL query.

        Parameters:
        - sql_query (str): The original SQL query.

        Returns:
        str: The transformed SQL query with case-handling mechanism applied,
            or the original query if no transformation is needed.
        """
        # print("Case handller transform", sql_query)
        node = sqlglot.parse_one(sql_query)

        if (
          isinstance(node, sqlglot.expressions.EQ) and
          node.find_ancestor(sqlglot.expressions.Where) and
          len(operands := list(node.unnest_operands())) == 2 and
          isinstance(
              literal := operands.pop(), sqlglot.expressions.Literal
              ) and
          isinstance(predicate := operands.pop(), sqlglot.expressions.Column)
        ):
            transformed_query =\
                sqlglot.parse_one(f"LOWER({predicate}) =\
                '{literal.this.lower()}'")
            return str(transformed_query)
        else:
            return sql_query