moved prepare_* methods from dialect to query_utils

This commit is contained in:
2026-05-18 15:05:00 +02:00
parent 052ff657c1
commit e58b7b9b0d
8 changed files with 117 additions and 122 deletions
+38
View File
@@ -17,5 +17,43 @@ void prepare_column(sql::query_context& ctx, const sql::dialect& d, const table_
void prepare_column(std::string &out, const sql::dialect& d, const table_column &col);
[[nodiscard]] std::string prepare_identifier(const sql::dialect& d, const table_column &col);
[[nodiscard]] std::string prepare_criteria(const sql::dialect& d, const table_column &col);
[[nodiscard]] std::string to_query_string(const utils::value &val, const sql::dialect& d);
/**
* Prepare string literal
*
* @param str String literal to be prepared
* @param d The SQL dialect to use preparing the literal
*/
[[nodiscard]] std::string prepare_literal(const std::string &str, const sql::dialect& d);
/**
* Prepare SQL dialect identifier for execution
* and escape quotes and quote the identifier
* string
*
* @param col The identifier string to be prepared
* @param d The SQL dialect to use preparing the identifier string
* @return The prepared string
*/
[[nodiscard]] std::string prepare_identifier_string(const std::string &col, const sql::dialect& d);
/**
* Escape identifier quotes inside identifiers.
*
* @param str Identifier to be escaped
* @param d The SQL dialect to use for escaping
*/
void escape_quotes_in_identifier(std::string &str, const sql::dialect& d);
/**
* Escape quotes in string literals
*
* @param str String literal to be escaped
* @param d The SQL dialect to use for escaping
*/
void escape_quotes_in_literals(std::string &str, const sql::dialect& d);
}
#endif //MATADOR_QUERY_UTILS_HPP
+4 -45
View File
@@ -21,15 +21,14 @@ namespace matador::sql {
class connection_impl;
class dialect final
{
class dialect final {
public:
/**
* Holding enums concerning escaping identifiers
*/
enum class escape_identifier_t : uint8_t {
ESCAPE_BOTH_SAME, /**< The escape quotes are the same */
ESCAPE_CLOSING_BRACKET /**< The escape quotes differ; escape the closing one */
EscapeBothSame, /**< The escape quotes are the same */
EscapeClosingBracket /**< The escape quotes differ; escape the closing one */
};
using token_to_string_map = std::unordered_map<dialect_token, std::string>;
@@ -44,50 +43,10 @@ public:
[[nodiscard]] const std::string& data_type_at(utils::basic_type type) const;
[[nodiscard]] const std::string& sql_function_at(sql_function_t func) const;
/**
* Prepare sql dialect identifier for execution
* and escape quotes and quote the identifier
* string
*
* @param col The identifier string to be prepared
* @return The prepared string
*/
[[nodiscard]] std::string prepare_identifier_string(const std::string &col) const;
[[nodiscard]] const std::string& to_string(bool val) const;
[[nodiscard]] std::string to_sql_string(const utils::value &val) const ;
void bool_strings(const std::string &true_string, const std::string &false_string);
/**
* Prepare string literal
*
* @param str String literal to be prepared
*/
[[nodiscard]] std::string prepare_literal(const std::string &str) const;
/**
* Wrap identifier quotes around a SQL identifier keyword
*
* @param str Identifier to put quotes around
*/
void quote_identifier(std::string &str) const;
/**
* Escape identifier quotes inside identifiers.
*
* @param str Identifier to be escaped
*/
void escape_quotes_in_identifier(std::string &str) const;
/**
* Escape quotes in string literals
*
* @param str String literal to be escaped
*/
void escape_quotes_in_literals(std::string &str) const;
/**
* Returns how the identifier quotes should be
* escaped.
@@ -192,7 +151,7 @@ private:
next_placeholder_func placeholder_func_ = [](size_t) { return "?"; };
to_escaped_string_func to_escaped_string_func_ = [](const utils::blob_type_t &val) { return utils::to_string(val); };
escape_identifier_t identifier_escape_type_ = escape_identifier_t::ESCAPE_BOTH_SAME;
escape_identifier_t identifier_escape_type_ = escape_identifier_t::EscapeBothSame;
std::string default_schema_name_;