#ifndef LOTRO_DAT_DATABASE_H #define LOTRO_DAT_DATABASE_H #include struct lotrodat_sqlite3; struct lotrodat_sqlite3_stmt; extern "C++" { namespace LOTRO_DAT { class BinaryData; class SubfileData; class Database { public: Database(); ~Database(); bool InitDatabase(const std::string &filename, bool create_if_not_exists=false); bool CloseDatabase(); bool PushFile(const SubfileData &data); SubfileData GetNextFile(); bool RemoveDatabase(); bool ClearDatabase(); size_t CountRows(); private: void ExecSql(const std::string &sql); lotrodat_sqlite3* db_; lotrodat_sqlite3_stmt* insert_request_; lotrodat_sqlite3_stmt* fetch_one_request_; lotrodat_sqlite3_stmt* get_rows_number_request_; const std::string CreateTableCommand_ = "CREATE TABLE IF NOT EXISTS `patch_data` ( " "`binary_data` BLOB, " "`text_data` TEXT, " "`options` TEXT NOT NULL);"; const std::string InsertFileCommand_ = "INSERT INTO `patch_data` " "(`binary_data`, `text_data`, `options`) " "VALUES (?, ?, ?); "; const std::string FetchOneCommand = "SELECT * FROM `patch_data`"; const std::string ClearTableCommand_ = "DELETE * FROM `patch_data`"; const std::string GetRowsNumberCommand_ = "SELECT Count(*) as count FROM `patch_data`"; }; } // namespace LOTRO_DAT } // extern "C++" #endif