14 : db_type_(db_type) {}
17 return std::visit([
this](
auto&& arg) -> std::string {
18 using T = std::decay_t<
decltype(arg)>;
20 if constexpr (std::is_same_v<T, std::monostate>) {
23 else if constexpr (std::is_same_v<T, std::string>) {
26 else if constexpr (std::is_same_v<T, int>) {
29 else if constexpr (std::is_same_v<T, int64_t>) {
32 else if constexpr (std::is_same_v<T, double>) {
35 else if constexpr (std::is_same_v<T, bool>) {
38 else if constexpr (std::is_same_v<T, std::vector<uint8_t>>) {
65 return "\"" + identifier +
"\"";
67 return "\"" + identifier +
"\"";
72 return "\"" + identifier +
"\"";
84 return val ?
"TRUE" :
"FALSE";
86 return val ?
"true" :
"false";
88 return val ?
"1" :
"0";
90 return val ?
"1" :
"0";
101 return std::to_string(num);
106 if (std::isnan(num)) {
109 if (std::isinf(num)) {
110 return num > 0 ?
"'Infinity'" :
"'-Infinity'";
114 std::ostringstream oss;
115 oss << std::setprecision(15) << num;
127 std::ostringstream oss;
129 for (uint8_t
byte : data) {
130 oss << std::hex << std::setw(2) << std::setfill(
'0')
131 <<
static_cast<int>(byte);
138 std::ostringstream oss;
140 for (uint8_t
byte : data) {
141 oss << std::hex << std::setw(2) << std::setfill(
'0')
142 <<
static_cast<int>(byte);
156 result.reserve(str.length() + 10);
188 result.reserve(str.length() + 10);
std::variant< std::string, int64_t, double, bool, std::nullptr_t > database_value
database_types
Represents various database backends or modes.
@ mongodb
Indicates a MongoDB database (future implementation).
@ sqlite
Indicates a SQLite database.
@ redis
Indicates a Redis database (future implementation).
@ postgres
Indicates a PostgreSQL database.