#ifndef __DB_H #define __DB_H #include #include #include #include "util.hh" using namespace std; 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); void setString(const Transaction & txn, const string & table, const string & key, const string & data); void setStrings(const Transaction & txn, const string & table, const string & key, const Strings & data); void delPair(const Transaction & txn, const string & table, const string & key); void enumTable(const Transaction & txn, const string & table, Strings & keys); }; #endif /* !__DB_H */