1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #ifndef DATORIGINALFILESDATABASE_H
- #define DATORIGINALFILESDATABASE_H
- #include <QSqlDatabase>
- #include <QSqlQuery>
- #include "models/patchinstaller.h"
- class DatOriginalFilesDatabase {
- public:
- typedef std::function<void (int file_id, int dat_id, int version, int iteration, const LOTRO_DAT::SubfileData& data)> FileOperation;
- explicit DatOriginalFilesDatabase(QString database_path);
- ~DatOriginalFilesDatabase();
- void addFile(int file_id, int dat_id, int version, int iteration, const LOTRO_DAT::SubfileData& data);
- bool getFile(int file_id, int& dat_id, int& version, int& iteration, LOTRO_DAT::SubfileData& data);
- bool fileExists(int file_id);
- size_t getRowsCount();
- void removeDatabase();
- void closeDatabase();
- void performOperationOnAllFiles(const FileOperation& operation);
- private:
- QSqlDatabase* orig_files_db = nullptr;
- QSqlQuery* _add_file_prepared_query = nullptr;
- const QString _create_database_query = "CREATE TABLE IF NOT EXISTS patch_data ("
- "file_id INTEGER PRIMARY KEY,"
- "dat_id INTEGER NOT NULL,"
- "version INTEGER NOT NULL,"
- "iteration INTEGER NOT NULL,"
- "options TEXT,"
- "binary_data BLOB,"
- "text_data TEXT"
- ");";
- const QString _add_file_query = "INSERT INTO patch_data "
- "(file_id, dat_id, version, iteration, options, binary_data, text_data) "
- "VALUES"
- "(:file_id, :dat_id, :version, :iteration, :options, :binary_data, :text_data)"
- "ON CONFLICT(`file_id`) DO UPDATE SET "
- "dat_id=:dat_id,"
- "version=:version,"
- "iteration=:iteration,"
- "options=:options,"
- "binary_data=:binary_data,"
- "text_data=:text_data"
- ";";
- const QString _get_file_query = "SELECT * FROM patch_data WHERE `file_id`=%1;";
- const QString _get_all_files_query = "SELECT * FROM patch_data;";
- const QString _count_all_rows_query = "SELECT COUNT(*) FROM patch_data";
- };
- #endif // DATORIGINALFILESDATABASE_H
|