Fix data base management + include cover thumbnails scan to calculate coverSizeRatio.

This commit is contained in:
Luis Ángel San Martín 2018-03-12 21:21:30 +01:00
parent f0e1458576
commit d7c633cf3f

View File

@ -5,6 +5,7 @@
#include "check_new_version.h" #include "check_new_version.h"
#include "db_helper.h" #include "db_helper.h"
#include "QsLog.h"
static QString fields = "title ," static QString fields = "title ,"
@ -324,7 +325,7 @@ void DataBaseManagement::exportComicsInfo(QString source, QString dest)
//QSqlDatabase sourceDB = loadDatabase(source); //QSqlDatabase sourceDB = loadDatabase(source);
QSqlDatabase destDB = loadDatabaseFromFile(dest); QSqlDatabase destDB = loadDatabaseFromFile(dest);
//sourceDB.open(); //sourceDB.open();
{ {
QSqlQuery attach(destDB); QSqlQuery attach(destDB);
attach.prepare("ATTACH DATABASE '"+QDir().toNativeSeparators(dest) +"' AS dest;"); attach.prepare("ATTACH DATABASE '"+QDir().toNativeSeparators(dest) +"' AS dest;");
//attach.bindValue(":dest",QDir().toNativeSeparators(dest)); //attach.bindValue(":dest",QDir().toNativeSeparators(dest));
@ -633,8 +634,12 @@ bool DataBaseManagement::addColumns(const QString &tableName, const QStringList
QSqlQuery alterTable(db); QSqlQuery alterTable(db);
alterTable.prepare(sql.arg(tableName).arg(columnDef)); alterTable.prepare(sql.arg(tableName).arg(columnDef));
//alterTableComicInfo.bindValue(":column_def",columnDef); //alterTableComicInfo.bindValue(":column_def",columnDef);
alterTable.exec(); bool exec = alterTable.exec();
returnValue = returnValue && (alterTable.numRowsAffected() > 0); returnValue = returnValue && exec;
if (!exec) {
QLOG_ERROR() << alterTable.lastError().text();
}
//returnValue = returnValue && (alterTable.numRowsAffected() > 0);
} }
return returnValue; return returnValue;
@ -726,13 +731,15 @@ int DataBaseManagement::compareVersions(const QString & v1, const QString v2)
return 0; return 0;
} }
bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath) bool DataBaseManagement::updateToCurrentVersion(const QString & path)
{ {
bool pre7 = false; bool pre7 = false;
bool pre7_1 = false; bool pre7_1 = false;
bool pre8 = false; bool pre8 = false;
bool pre9_5 = false; bool pre9_5 = false;
QString fullPath = path + "/library.ydb";
if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.0")<0) if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.0")<0)
pre7 = true; pre7 = true;
if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.3")<0) if(compareVersions(DataBaseManagement::checkValidDB(fullPath),"7.0.3")<0)
@ -752,7 +759,7 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
updateVersion.bindValue(":version",VERSION); updateVersion.bindValue(":version",VERSION);
updateVersion.exec(); updateVersion.exec();
if(updateVersion.numRowsAffected() > 0) if(updateVersion.numRowsAffected() > 0)
returnValue = true; returnValue = true;
if(pre7) //TODO: execute only if previous version was < 7.0 if(pre7) //TODO: execute only if previous version was < 7.0
@ -769,7 +776,8 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
<< "contrast INTEGER DEFAULT -1" << "contrast INTEGER DEFAULT -1"
<< "gamma INTEGER DEFAULT -1"; << "gamma INTEGER DEFAULT -1";
returnValue = returnValue && addColumns("comic_info", columnDefs, db); bool successAddingColumns = addColumns("comic_info", columnDefs, db);
returnValue = returnValue && successAddingColumns;
} }
//TODO update hasBeenOpened value //TODO update hasBeenOpened value
@ -779,19 +787,22 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
QStringList columnDefs; QStringList columnDefs;
columnDefs << "finished BOOLEAN DEFAULT 0" columnDefs << "finished BOOLEAN DEFAULT 0"
<< "completed BOOLEAN DEFAULT 1"; << "completed BOOLEAN DEFAULT 1";
returnValue = returnValue && addColumns("folder", columnDefs, db); bool successAddingColumns = addColumns("folder", columnDefs, db);
returnValue = returnValue && successAddingColumns;
} }
{//comic_info {//comic_info
QStringList columnDefs; QStringList columnDefs;
columnDefs << "comicVineID TEXT DEFAULT NULL"; columnDefs << "comicVineID TEXT DEFAULT NULL";
returnValue = returnValue && addColumns("comic_info", columnDefs, db); bool successAddingColumns = addColumns("comic_info", columnDefs, db);
returnValue = returnValue && successAddingColumns;
} }
} }
if(pre8) if(pre8)
{ {
returnValue = returnValue && createV8Tables(db); bool successCreatingNewTables = createV8Tables(db);
returnValue = returnValue && successCreatingNewTables;
} }
if(pre9_5) if(pre9_5)
@ -802,18 +813,21 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
columnDefs << "numChildren INTEGER"; columnDefs << "numChildren INTEGER";
columnDefs << "firstChildHash TEXT"; columnDefs << "firstChildHash TEXT";
columnDefs << "customImage TEXT"; columnDefs << "customImage TEXT";
returnValue = returnValue && addColumns("folder", columnDefs, db); bool successAddingColumns = addColumns("folder", columnDefs, db);
returnValue = returnValue && successAddingColumns;
} }
{//comic_info {//comic_info
QStringList columnDefs; QStringList columnDefs;
columnDefs << "lastTimeOpened INTEGER"; columnDefs << "lastTimeOpened INTEGER";
columnDefs << "coverSizeRatio REAL"; columnDefs << "coverSizeRatio REAL";
columnDefs << "originalCoverSize STRING"; columnDefs << "originalCoverSize TEXT";
returnValue = returnValue && addColumns("comic_info", columnDefs, db); bool successAddingColumns = addColumns("comic_info", columnDefs, db);
returnValue = returnValue && successAddingColumns;
QSqlQuery queryIndexLastTimeOpened(db); QSqlQuery queryIndexLastTimeOpened(db);
returnValue = returnValue && queryIndexLastTimeOpened.exec("CREATE INDEX last_time_opened_index ON comic_info (lastTimeOpened)"); bool successCreatingIndex = queryIndexLastTimeOpened.exec("CREATE INDEX last_time_opened_index ON comic_info (lastTimeOpened)");
returnValue = returnValue && successCreatingIndex;
} }
//update folders info //update folders info
@ -821,9 +835,29 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & fullPath)
DBHelper::updateChildrenInfo(db); DBHelper::updateChildrenInfo(db);
} }
//TODO udate covers info
{ {
//cover sizes... QSqlQuery selectQuery(db);
selectQuery.prepare("SELECT id, hash FROM comic_info");
selectQuery.exec();
db.transaction();
QSqlQuery updateCoverInfo(db);
updateCoverInfo.prepare("UPDATE comic_info SET coverSizeRatio = :coverSizeRatio WHERE id = :id");
QImageReader thumbnail;
while (selectQuery.next())
{
thumbnail.setFileName(path % "/covers/" % selectQuery.value(1).toString() % ".jpg");
float coverSizeRatio = static_cast<float>(thumbnail.size().width()) / thumbnail.size().height();
updateCoverInfo.bindValue(":coverSizeRatio", coverSizeRatio);
updateCoverInfo.bindValue(":id", selectQuery.value(0));
updateCoverInfo.exec();
}
db.commit();
} }
} }
} }