~singpolyma/biboumi

ref: d1626c929f1d313c2f0f85b7d8b756a8d488d1dc biboumi/src/database/database.hpp -rw-r--r-- 2.4 KiB
d1626c92 — louiz’ When joining a channel, send the most recent history found in the database 6 years ago
                                                                                
81f8f45b louiz’
88ae2599 Florent Le Coz
8ec823be louiz’
88ae2599 Florent Le Coz
8ec823be louiz’
88ae2599 Florent Le Coz
af420738 louiz’
88ae2599 Florent Le Coz
4c1b9abe louiz’
88ae2599 Florent Le Coz
6776b827 louiz’
88ae2599 Florent Le Coz
421c960d Florent Le Coz
6776b827 louiz’
d1626c92 louiz’
8ec823be louiz’
88ae2599 Florent Le Coz
4c1b9abe louiz’
88ae2599 Florent Le Coz
8ec823be 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
54
55
56
57
58
59
60
61
62
63
64
65
66
#pragma once


#include <biboumi.h>
#ifdef USE_DATABASE

#include "biboudb.hpp"

#include <memory>

#include <litesql.hpp>
#include <chrono>

class Iid;

class Database
{
public:
  using time_point = std::chrono::system_clock::time_point;
  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::GlobalOptions get_global_options(const std::string& owner);
  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 db::IrcChannelOptions get_irc_channel_options_with_server_and_global_default(const std::string& owner,
                                                                                      const std::string& server,
                                                                                      const std::string& channel);
  static std::vector<db::MucLogLine> get_muc_logs(const std::string& owner, const std::string& chan_name, const std::string& server,
                           const int limit);
  static void store_muc_message(const std::string& owner, const Iid& iid,
                                time_point date, const std::string& body, const std::string& nick);

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


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