~singpolyma/biboumi

ref: 8ec823be4fc587abb7282a06a12f9df9c37810d2 biboumi/src/database/database.hpp -rw-r--r-- 1.8 KiB
8ec823be — louiz’ Save received and sent messages into the database 7 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
421c960d Florent Le Coz
88ae2599 Florent Le Coz
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
#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::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 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 */