diff options
Diffstat (limited to 'src/db.hh')
-rw-r--r-- | src/db.hh | 71 |
1 files changed, 58 insertions, 13 deletions
diff --git a/src/db.hh b/src/db.hh index 6f13eb30c8..57b6e4d8eb 100644 --- a/src/db.hh +++ b/src/db.hh @@ -4,28 +4,73 @@ #include <string> #include <list> +#include <db_cxx.h> + #include "util.hh" using namespace std; -void createDB(const string & filename, const string & dbname); -bool queryDB(const string & filename, const string & dbname, - const string & key, string & data); +class Database; + + +class Transaction +{ + friend class Database; + +private: + DbTxn * txn; + +public: + Transaction(); + Transaction(Database & _db); + ~Transaction(); + + void commit(); +}; + + +#define noTxn Transaction() + + +class Database +{ + friend class Transaction; + +private: + DbEnv * env; + + void requireEnv(); + + Db * openDB(const Transaction & txn, + const string & table, bool create); + +public: + Database(); + ~Database(); + + void open(const string & path); + + void createTable(const string & table); + + bool queryString(const Transaction & txn, const string & table, + const string & key, string & data); + + bool queryStrings(const Transaction & txn, const string & table, + const string & key, Strings & data); -bool queryListDB(const string & filename, const string & dbname, - const string & key, Strings & data); + void setString(const Transaction & txn, const string & table, + const string & key, const string & data); -void setDB(const string & filename, const string & dbname, - const string & key, const string & data); + void setStrings(const Transaction & txn, const string & table, + const string & key, const Strings & data); -void setListDB(const string & filename, const string & dbname, - const string & key, const Strings & data); + void delPair(const Transaction & txn, const string & table, + const string & key); -void delDB(const string & filename, const string & dbname, - const string & key); + void enumTable(const Transaction & txn, const string & table, + Strings & keys); +}; -void enumDB(const string & filename, const string & dbname, - Strings & keys); #endif /* !__DB_H */ |