Database System 0.1.0
Advanced C++20 Database System with Multi-Backend Support
Loading...
Searching...
No Matches
value_formatter.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
5#pragma once
6
7#include "../database_types.h"
9#include <string>
10#include <vector>
11
12namespace database::query {
13
33public:
38 explicit value_formatter(database_types db_type);
39
45 std::string format(const core::database_value& value) const;
46
52 std::string escape_string(const std::string& str) const;
53
59 std::string escape_identifier(const std::string& identifier) const;
60
65 std::string null_literal() const;
66
72 std::string bool_literal(bool val) const;
73
74private:
76
77 std::string format_string(const std::string& str) const;
78 std::string format_int(int64_t num) const;
79 std::string format_double(double num) const;
80 std::string format_bool(bool val) const;
81 std::string format_blob(const std::vector<uint8_t>& data) const;
82
83 // Database-specific escaping
84 std::string escape_postgresql_string(const std::string& str) const;
85 std::string escape_sqlite_string(const std::string& str) const;
86};
87
88} // namespace database::query
Formats database values for different backends.
std::string format_bool(bool val) const
std::string escape_identifier(const std::string &identifier) const
Quote and escape an identifier (table/column name)
value_formatter(database_types db_type)
Construct formatter for specific database type.
std::string format_int(int64_t num) const
std::string escape_string(const std::string &str) const
Escape a string value.
std::string escape_sqlite_string(const std::string &str) const
std::string escape_postgresql_string(const std::string &str) const
std::string format(const core::database_value &value) const
Format a database value.
std::string format_blob(const std::vector< uint8_t > &data) const
std::string format_double(double num) const
std::string format_string(const std::string &str) const
std::string bool_literal(bool val) const
Get boolean literal.
std::string null_literal() const
Get NULL literal for this database.
Abstract interface for database backends.
Defines the enumeration of supported database types.
std::variant< std::string, int64_t, double, bool, std::nullptr_t > database_value
database_types
Represents various database backends or modes.