]> git.stg.codes - stg.git/blob - include/stg/base_db.h
Explicitly initialize base class in copy ctors of notifiers
[stg.git] / include / stg / base_db.h
1 #ifndef __BASE_DB_H__
2 #define __BASE_DB_H__
3
4 #include <string>
5 #include <vector>
6 #include <map>
7
8 class BASE_DB {
9 public:
10
11     typedef std::map<std::string, std::string> TUPLE;
12     typedef std::vector<TUPLE> TUPLES;
13     typedef std::vector<std::string> COLUMNS;
14
15     BASE_DB() {};
16     BASE_DB(std::string & dbHost,
17             std::string & dbDatabase,
18             std::string & dbUser,
19             std::string & dbPassword)
20         : host(dbHost),
21           database(dbDatabase),
22           user(dbUser),
23           password(dbPassword)
24     {};
25     virtual ~BASE_DB() {};
26
27     void SetHost(const std::string & h) { host = h; };
28     void SetDatabase(const std::string & db) { database = db; };
29     void SetUser(const std::string & u) { user = u; };
30     void SetPassword(const std::string & p) { password = p; };
31
32     const std::string & GetHost() const { return host; };
33     const std::string & GetDatabase() const { return database; };
34     const std::string & GetUser() const { return user; };
35     const std::string & GetPassword() const { return password; };
36
37     const std::string & GetErrorMsg() const { return errorMsg; };
38
39     virtual bool Connect() { return true; };
40     virtual bool Disconnect() { return true; };
41     virtual bool Query(const std::string & q) { return true; };
42     virtual bool Start() { return true; };
43     virtual bool Commit() { return true; };
44     virtual bool Rollback() { return true; };
45
46     int GetTuples() const { return tuples; };
47     int GetColumns() const { return columns; };
48     int GetAffectedRows() const { return affected; };
49
50     virtual TUPLES GetResult() const { return TUPLES(); };
51     virtual TUPLE GetTuple(int n = 0) const { return TUPLE(); };
52     const COLUMNS & GetColumnsNames() const { return cols; };
53
54 protected:
55     std::string host;
56     std::string database;
57     std::string user;
58     std::string password;
59
60     std::string errorMsg;
61
62     COLUMNS cols;
63
64     int columns;
65     int tuples;
66     int affected;
67 };
68
69 extern "C" BASE_DB * CreateDriver();
70 extern "C" void DestroyDriver(BASE_DB *);
71
72 typedef BASE_DB * (* CreateDriverFn)();
73 typedef void (* DestroyDriverFn)(BASE_DB *);
74
75 #endif