Fixed data base info retrieving through DBHelper, value(QString) should never be used because it is really slow. All items sorting should be done at db level or using std::sort.

This commit is contained in:
Luis Ángel San Martín
2017-08-26 16:16:11 +02:00
commit d6898e9a4e
1040 changed files with 102444 additions and 0 deletions

View File

@ -0,0 +1,64 @@
#include "synccontroller.h"
#include "QsLog.h"
#include <QUrl>
#include "comic_db.h"
#include "db_helper.h"
SyncController::SyncController()
{
}
void SyncController::service(HttpRequest &request, HttpResponse &response)
{
QString postData = QString::fromUtf8(request.getBody());
QLOG_TRACE() << "POST DATA: " << postData;
if(postData.length()>0) {
QList<QString> data = postData.split("\n");
qulonglong libraryId;
qulonglong comicId;
int currentPage;
int currentRating;
QString hash;
foreach(QString comicInfo, data)
{
QList<QString> comicInfoProgress = comicInfo.split("\t");
if(comicInfoProgress.length() == 4 || comicInfoProgress.length() == 5)
{
libraryId = comicInfoProgress.at(0).toULongLong();
comicId = comicInfoProgress.at(1).toULongLong();
hash = comicInfoProgress.at(2);
currentPage = comicInfoProgress.at(3).toInt();
ComicInfo info;
info.currentPage = currentPage;
info.hash = hash; //TODO remove the hash check and add UUIDs for libraries
info.id = comicId;
//Client 2.1+ version
if(comicInfoProgress.length() > 4)
{
currentRating = comicInfoProgress.at(4).toInt();
info.rating = currentRating;
}
DBHelper::updateFromRemoteClient(libraryId,info);
}
}
}
else
{
response.setStatus(412,"No comic info received");
response.writeText("",true);
return;
}
response.write("OK",true);
}