YPC  0.2.0
db.h
1 
2 #pragma once
3 #include "ypc/core/configuration.h"
4 #include <ff/sql.h>
5 #include <memory>
6 
7 namespace ypc {
8 
9 class db_base {
10 public:
11  db_base(const std::string &url, const std::string &usrname,
12  const std::string &passwd, const std::string &dbname);
13  virtual void create_tables() = 0;
14  virtual void clear_tables() = 0;
15 
16  ::ff::sql::mysql<::ff::sql::cppconn> *db_engine_ptr();
17 
18 protected:
19  void init_db(const std::string &url, const std::string &usrname,
20  const std::string &passwd, const std::string &dbname);
21 
22 protected:
23  std::shared_ptr<::ff::sql::mysql<::ff::sql::cppconn>> m_db_engine;
24 };
25 
26 template <typename DB>
27 std::shared_ptr<ypc::db_base> construct_db_ptr(const std::string &filename) {
28  db_info_t dbinfo = configuration::instance().read_db_config_file(filename);
29  std::shared_ptr<ypc::db_base> base_ptr =
30  std::make_shared<DB>(dbinfo.get<db_url>(), dbinfo.get<db_usr>(),
31  dbinfo.get<db_pass>(), dbinfo.get<db_dbname>());
32  return base_ptr;
33 }
34 
35 } // namespace ypc
ypc::db_base
Definition: db.h:9