about summary refs log tree commit diff
path: root/src/db.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.hh')
-rw-r--r--src/db.hh71
1 files changed, 58 insertions, 13 deletions
diff --git a/src/db.hh b/src/db.hh
index 6f13eb30c813..57b6e4d8ebfb 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 */