~singpolyma/biboumi

biboumi/src/database/postgresql_engine.hpp -rw-r--r-- 1.2 KiB
12223354Stephen Paul Weber Fix caps hash 5 months ago
                                                                                
0168b96b louiz’
414bbca0 louiz’
0168b96b louiz’
414bbca0 louiz’
0168b96b louiz’
414bbca0 louiz’
0168b96b louiz’
61de6b1d louiz’
0168b96b louiz’
61de6b1d louiz’
0168b96b louiz’
414bbca0 louiz’
de8267fa louiz’
414bbca0 louiz’
de8267fa louiz’
414bbca0 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
#pragma once

#include <biboumi.h>
#include <string>
#include <stdexcept>
#include <memory>

#include <database/statement.hpp>
#include <database/engine.hpp>

#include <tuple>
#include <set>

#ifdef PQ_FOUND

#include <libpq-fe.h>

class PostgresqlEngine: public DatabaseEngine
{
 public:
  PostgresqlEngine(PGconn*const conn);

  ~PostgresqlEngine();

  static std::unique_ptr<DatabaseEngine> open(const std::string& string);

  std::set<std::string> get_all_columns_from_table(const std::string& table_name) override final;
  std::tuple<bool, std::string> raw_exec(const std::string& query) override final;
  std::unique_ptr<Statement> prepare(const std::string& query) override;
  void extract_last_insert_rowid(Statement& statement) override;
  std::string get_returning_id_sql_string(const std::string& col_name) override;
  std::string id_column_type() override;
private:
  PGconn* const conn;
};

#else

using namespace std::string_literals;

class PostgresqlEngine
{
public:
  static std::unique_ptr<DatabaseEngine> open(const std::string& string)
  {
    throw std::runtime_error("Cannot open postgresql database "s + string + ": biboumi is not compiled with libpq.");
    return {};
  }
};

#endif