12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include "datoriginalfilesdatabase.h"
- #include <QSqlError>
- #include <string>
- DatOriginalFilesDatabase::DatOriginalFilesDatabase(QString database_path) :
- orig_files_db(QSqlDatabase::addDatabase("QSQLITE", database_path)),
- _add_file_prepared_query(orig_files_db)
- {
- orig_files_db.setDatabaseName(database_path);
- orig_files_db.open();
- orig_files_db.exec(_create_database_query);
- orig_files_db.exec("PRAGMA synchronous = OFF");
- orig_files_db.exec("PRAGMA count_changes = OFF");
- orig_files_db.exec("PRAGMA journal_mode = MEMORY");
- orig_files_db.exec("PRAGMA temp_store = MEMORY");
- orig_files_db.exec("PRAGMA encoding = \"UTF-8\";");
- _add_file_prepared_query.prepare(_add_file_query);
- }
- DatOriginalFilesDatabase::~DatOriginalFilesDatabase() {
- closeDatabase();
- }
- void DatOriginalFilesDatabase::addFile(int file_id, int dat_id, int version, int iteration, const LOTRO_DAT::SubfileData &data) {
- std::stringstream options_stream;
- options_stream << data.options;
- const QString options = QString::fromStdString(options_stream.str());
- qDebug() << "AAAAAAdding file " << file_id << dat_id << version << iteration;
- _add_file_prepared_query.bindValue(":file_id", file_id);
- _add_file_prepared_query.bindValue(":dat_id", dat_id);
- _add_file_prepared_query.bindValue(":version", version);
- _add_file_prepared_query.bindValue(":iteration", iteration);
- _add_file_prepared_query.bindValue(":options", options);
- _add_file_prepared_query.bindValue(":binary_data", QByteArray(reinterpret_cast<char*>(data.binary_data.data()), data.binary_data.size()));
- _add_file_prepared_query.bindValue(":text_data", QString::fromStdU16String(data.text_data));
- if (!_add_file_prepared_query.exec()) {
- qWarning() << _add_file_prepared_query.lastError();
- }
- }
- bool DatOriginalFilesDatabase::getFile(int file_id, int &dat_id, int &version, int &iteration, LOTRO_DAT::SubfileData &data) {
- QSqlQuery get_file_query;
- get_file_query.exec(_get_file_query.arg(file_id));
- if (!get_file_query.next()) {
- return false;
- }
- dat_id = get_file_query.value(1).toInt();
- version = get_file_query.value(2).toInt();
- iteration = get_file_query.value(3).toInt();
- const QString options = QString::fromUtf8(get_file_query.value(4).toByteArray());
- data.options = YAML::Load(options.toStdString());
- const QByteArray binary_data = get_file_query.value(5).toByteArray();
- data.binary_data = LOTRO_DAT::BinaryData(binary_data.data(), binary_data.size());
- data.text_data = QString::fromUtf8(get_file_query.value(6).toByteArray()).toStdU16String();
- return true;
- }
- bool DatOriginalFilesDatabase::fileExists(int file_id) {
- QSqlQuery get_file_query;
- get_file_query.exec(_get_file_query.arg(file_id));
- return get_file_query.next();
- }
- void DatOriginalFilesDatabase::removeDatabase() {
- orig_files_db.close();
- QFile::remove(orig_files_db.databaseName());
- }
- void DatOriginalFilesDatabase::closeDatabase() {
- orig_files_db.close();
- }
|