~singpolyma/biboumi

ref: d7427fc9ca4c06fda458e4951559f57163d90b94 biboumi/src/database/query.cpp -rw-r--r-- 1.1 KiB
d7427fc9 — louiz’ Re-connect to postgresql when the connection is lost 5 years ago
                                                                                
50cadf3d louiz’
0168b96b louiz’
dbb86bcc louiz’
0168b96b louiz’
03714c6c louiz’
0168b96b louiz’
03714c6c louiz’
0168b96b louiz’
03714c6c louiz’
0168b96b louiz’
50cadf3d louiz’
40db183e louiz’
03714c6c louiz’
40db183e louiz’
03714c6c louiz’
40db183e louiz’
03714c6c louiz’
40db183e louiz’
b71ca15a louiz’
0168b96b louiz’
b71ca15a louiz’
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <database/query.hpp>
#include <database/column.hpp>

void actual_bind(Statement& statement, const std::string& value, int index)
{
  statement.bind_text(index, value);
}

void actual_bind(Statement& statement, const std::int64_t& value, int index)
{
  statement.bind_int64(index, value);
}

void actual_bind(Statement& statement, const OptionalBool& value, int index)
{
  if (!value.is_set)
    statement.bind_int64(index, 0);
  else if (value.value)
    statement.bind_int64(index, 1);
  else
    statement.bind_int64(index, -1);
}

void actual_add_param(Query& query, const std::string& val)
{
  query.params.push_back(val);
}

void actual_add_param(Query& query, const OptionalBool& val)
{
  if (!val.is_set)
    query.params.push_back("0");
  else if (val.value)
    query.params.push_back("1");
  else
    query.params.push_back("-1");
}

Query& operator<<(Query& query, const char* str)
{
  query.body += str;
  return query;
}

Query& operator<<(Query& query, const std::string& str)
{
  query.body += "$" + std::to_string(query.current_param);
  query.current_param++;
  actual_add_param(query, str);
  return query;
}