~singpolyma/biboumi

ref: 4c1b9abe7e230a39b119bdc45ebcd5e677fad488 biboumi/src/database/database.hpp -rw-r--r-- 1.5 KiB
4c1b9abe — louiz’ Properly catch and handle database errors 6 years ago
                                                                                
81f8f45b louiz’
88ae2599 Florent Le Coz
af420738 louiz’
88ae2599 Florent Le Coz
4c1b9abe louiz’
88ae2599 Florent Le Coz
421c960d Florent Le Coz
88ae2599 Florent Le Coz
4c1b9abe louiz’
88ae2599 Florent Le Coz
81f8f45b 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
52
53
#pragma once


#include <biboumi.h>
#ifdef USE_DATABASE

#include "biboudb.hpp"

#include <memory>

#include <litesql.hpp>

class Database
{
public:
  Database() = default;
  ~Database() = default;

  Database(const Database&) = delete;
  Database(Database&&) = delete;
  Database& operator=(const Database&) = delete;
  Database& operator=(Database&&) = delete;

  static void set_verbose(const bool val);

  template<typename PersistentType>
  static size_t count()
  {
    return litesql::select<PersistentType>(*Database::db).count();
  }
  /**
   * Return the object from the db. Create it beforehand (with all default
   * values) if it is not already present.
   */
  static db::IrcServerOptions get_irc_server_options(const std::string& owner,
                                                     const std::string& server);
  static db::IrcChannelOptions get_irc_channel_options(const std::string& owner,
                                                       const std::string& server,
                                                       const std::string& channel);
  static db::IrcChannelOptions get_irc_channel_options_with_server_default(const std::string& owner,
                                                                           const std::string& server,
                                                                           const std::string& channel);

  static void close();
  static void open(const std::string& filename, const std::string& db_type="sqlite3");


private:
  static std::unique_ptr<db::BibouDB> db;
};
#endif /* USE_DATABASE */