datoriginalfilesdatabase.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef DATORIGINALFILESDATABASE_H
  2. #define DATORIGINALFILESDATABASE_H
  3. #include <QSqlDatabase>
  4. #include <QSqlQuery>
  5. #include "models/patchinstaller.h"
  6. class DatOriginalFilesDatabase {
  7. public:
  8. explicit DatOriginalFilesDatabase(QString database_path);
  9. ~DatOriginalFilesDatabase();
  10. void addFile(int file_id, int dat_id, int version, int iteration, const LOTRO_DAT::SubfileData& data);
  11. bool getFile(int file_id, int& dat_id, int& version, int& iteration, LOTRO_DAT::SubfileData& data);
  12. bool fileExists(int file_id);
  13. void removeDatabase();
  14. void closeDatabase();
  15. private:
  16. QSqlDatabase orig_files_db;
  17. QSqlQuery _add_file_prepared_query;
  18. const QString _create_database_query = "CREATE TABLE IF NOT EXISTS patch_data ("
  19. "file_id INTEGER PRIMARY KEY,"
  20. "dat_id INTEGER NOT NULL,"
  21. "version INTEGER NOT NULL,"
  22. "iteration INTEGER NOT NULL,"
  23. "options TEXT,"
  24. "binary_data BLOB,"
  25. "text_data TEXT"
  26. ");";
  27. const QString _add_file_query = "INSERT INTO patch_data "
  28. "(file_id, dat_id, version, iteration, options, binary_data, text_data) "
  29. "VALUES"
  30. "(:file_id, :dat_id, :version, :iteration, :options, :binary_data, :text_data)"
  31. "ON CONFLICT(`file_id`) DO UPDATE SET "
  32. "dat_id=:dat_id,"
  33. "version=:version,"
  34. "iteration=:iteration,"
  35. "options=:options,"
  36. "binary_data=:binary_data,"
  37. "text_data=:text_data"
  38. ";";
  39. const QString _get_file_query = "SELECT * FROM patch_data WHERE `file_id`=%1;";
  40. };
  41. #endif // DATORIGINALFILESDATABASE_H