mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Add a output parameter to know if a comic is found in the DB when we try to load it
This commit is contained in:
parent
c576140e6a
commit
61458b966c
@ -680,7 +680,8 @@ ComicDB ComicModel::getComic(const QModelIndex &mi)
|
|||||||
QString connectionName = "";
|
QString connectionName = "";
|
||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
||||||
c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
connectionName = db.connectionName();
|
connectionName = db.connectionName();
|
||||||
}
|
}
|
||||||
QSqlDatabase::removeDatabase(connectionName);
|
QSqlDatabase::removeDatabase(connectionName);
|
||||||
@ -694,7 +695,8 @@ ComicDB ComicModel::_getComic(const QModelIndex &mi)
|
|||||||
QString connectionName = "";
|
QString connectionName = "";
|
||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
||||||
c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
connectionName = db.connectionName();
|
connectionName = db.connectionName();
|
||||||
}
|
}
|
||||||
QSqlDatabase::removeDatabase(connectionName);
|
QSqlDatabase::removeDatabase(connectionName);
|
||||||
@ -734,7 +736,8 @@ QList<ComicDB> ComicModel::getAllComics()
|
|||||||
|
|
||||||
int numComics = _data.count();
|
int numComics = _data.count();
|
||||||
for (int i = 0; i < numComics; i++) {
|
for (int i = 0; i < numComics; i++) {
|
||||||
comics.append(DBHelper::loadComic(_data.value(i)->data(ComicModel::Id).toULongLong(), db));
|
bool found;
|
||||||
|
comics.append(DBHelper::loadComic(_data.value(i)->data(ComicModel::Id).toULongLong(), db, found));
|
||||||
}
|
}
|
||||||
|
|
||||||
db.commit();
|
db.commit();
|
||||||
@ -763,7 +766,8 @@ QVector<YACReaderComicReadStatus> ComicModel::setComicsRead(QList<QModelIndex> l
|
|||||||
foreach (QModelIndex mi, list) {
|
foreach (QModelIndex mi, list) {
|
||||||
if (read == YACReader::Read) {
|
if (read == YACReader::Read) {
|
||||||
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(true));
|
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(true));
|
||||||
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
c.info.read = true;
|
c.info.read = true;
|
||||||
DBHelper::update(&(c.info), db);
|
DBHelper::update(&(c.info), db);
|
||||||
}
|
}
|
||||||
@ -771,7 +775,8 @@ QVector<YACReaderComicReadStatus> ComicModel::setComicsRead(QList<QModelIndex> l
|
|||||||
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(false));
|
_data.value(mi.row())->setData(ComicModel::ReadColumn, QVariant(false));
|
||||||
_data.value(mi.row())->setData(ComicModel::CurrentPage, QVariant(1));
|
_data.value(mi.row())->setData(ComicModel::CurrentPage, QVariant(1));
|
||||||
_data.value(mi.row())->setData(ComicModel::HasBeenOpened, QVariant(false));
|
_data.value(mi.row())->setData(ComicModel::HasBeenOpened, QVariant(false));
|
||||||
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
c.info.read = false;
|
c.info.read = false;
|
||||||
c.info.currentPage = 1;
|
c.info.currentPage = 1;
|
||||||
c.info.hasBeenOpened = false;
|
c.info.hasBeenOpened = false;
|
||||||
@ -796,7 +801,8 @@ void ComicModel::setComicsManga(QList<QModelIndex> list, bool isManga)
|
|||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath);
|
||||||
db.transaction();
|
db.transaction();
|
||||||
foreach (QModelIndex mi, list) {
|
foreach (QModelIndex mi, list) {
|
||||||
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
c.info.manga = isManga;
|
c.info.manga = isManga;
|
||||||
DBHelper::update(&(c.info), db);
|
DBHelper::update(&(c.info), db);
|
||||||
}
|
}
|
||||||
@ -816,7 +822,8 @@ qint64 ComicModel::asignNumbers(QList<QModelIndex> list, int startingNumber)
|
|||||||
idFirst = _data.value(list[0].row())->data(ComicModel::Id).toULongLong();
|
idFirst = _data.value(list[0].row())->data(ComicModel::Id).toULongLong();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (QModelIndex mi, list) {
|
foreach (QModelIndex mi, list) {
|
||||||
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db);
|
bool found;
|
||||||
|
ComicDB c = DBHelper::loadComic(_data.value(mi.row())->data(ComicModel::Id).toULongLong(), db, found);
|
||||||
c.info.number = startingNumber + i;
|
c.info.number = startingNumber + i;
|
||||||
c.info.edited = true;
|
c.info.edited = true;
|
||||||
DBHelper::update(&(c.info), db);
|
DBHelper::update(&(c.info), db);
|
||||||
@ -872,7 +879,8 @@ void ComicModel::finishTransaction()
|
|||||||
void ComicModel::removeInTransaction(int row)
|
void ComicModel::removeInTransaction(int row)
|
||||||
{
|
{
|
||||||
auto dbTransaction = QSqlDatabase::database(_databaseConnection);
|
auto dbTransaction = QSqlDatabase::database(_databaseConnection);
|
||||||
ComicDB c = DBHelper::loadComic(_data.at(row)->data(ComicModel::Id).toULongLong(), dbTransaction);
|
bool found;
|
||||||
|
ComicDB c = DBHelper::loadComic(_data.at(row)->data(ComicModel::Id).toULongLong(), dbTransaction, found);
|
||||||
|
|
||||||
DBHelper::removeFromDB(&c, dbTransaction);
|
DBHelper::removeFromDB(&c, dbTransaction);
|
||||||
beginRemoveRows(QModelIndex(), row, row);
|
beginRemoveRows(QModelIndex(), row, row);
|
||||||
|
@ -143,7 +143,8 @@ ComicDB DBHelper::getComicInfo(qulonglong libraryId, qulonglong id)
|
|||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
||||||
|
|
||||||
comic = DBHelper::loadComic(id, db);
|
bool found;
|
||||||
|
comic = DBHelper::loadComic(id, db, found);
|
||||||
connectionName = db.connectionName();
|
connectionName = db.connectionName();
|
||||||
}
|
}
|
||||||
QSqlDatabase::removeDatabase(connectionName);
|
QSqlDatabase::removeDatabase(connectionName);
|
||||||
@ -807,7 +808,8 @@ void DBHelper::updateProgress(qulonglong libraryId, const ComicInfo &comicInfo)
|
|||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
||||||
|
|
||||||
ComicDB comic = DBHelper::loadComic(comicInfo.id, db);
|
bool found;
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id, db, found);
|
||||||
comic.info.currentPage = comicInfo.currentPage;
|
comic.info.currentPage = comicInfo.currentPage;
|
||||||
comic.info.hasBeenOpened = comicInfo.currentPage > 0 || comic.info.hasBeenOpened;
|
comic.info.hasBeenOpened = comicInfo.currentPage > 0 || comic.info.hasBeenOpened;
|
||||||
comic.info.read = comic.info.read || comic.info.currentPage == comic.info.numPages;
|
comic.info.read = comic.info.read || comic.info.currentPage == comic.info.numPages;
|
||||||
@ -827,7 +829,8 @@ void DBHelper::setComicAsReading(qulonglong libraryId, const ComicInfo &comicInf
|
|||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
||||||
|
|
||||||
ComicDB comic = DBHelper::loadComic(comicInfo.id, db);
|
bool found;
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id, db, found);
|
||||||
comic.info.hasBeenOpened = true;
|
comic.info.hasBeenOpened = true;
|
||||||
comic.info.read = comic.info.read || comic.info.currentPage == comic.info.numPages;
|
comic.info.read = comic.info.read || comic.info.currentPage == comic.info.numPages;
|
||||||
|
|
||||||
@ -866,7 +869,8 @@ void DBHelper::updateFromRemoteClient(qulonglong libraryId, const ComicInfo &com
|
|||||||
{
|
{
|
||||||
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath + "/.yacreaderlibrary");
|
||||||
|
|
||||||
ComicDB comic = DBHelper::loadComic(comicInfo.id, db);
|
bool found;
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id, db, found);
|
||||||
|
|
||||||
if (comic.info.hash == comicInfo.hash) {
|
if (comic.info.hash == comicInfo.hash) {
|
||||||
if (comicInfo.currentPage > 0) {
|
if (comicInfo.currentPage > 0) {
|
||||||
@ -956,7 +960,8 @@ QMap<qulonglong, QList<ComicDB>> DBHelper::updateFromRemoteClient(const QMap<qul
|
|||||||
" WHERE id = :id ");
|
" WHERE id = :id ");
|
||||||
|
|
||||||
foreach (ComicInfo comicInfo, comics[libraryId]) {
|
foreach (ComicInfo comicInfo, comics[libraryId]) {
|
||||||
ComicDB comic = DBHelper::loadComic(comicInfo.id, db);
|
bool found;
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id, db, found);
|
||||||
|
|
||||||
if (comic.info.hash == comicInfo.hash) {
|
if (comic.info.hash == comicInfo.hash) {
|
||||||
bool isMoreRecent = false;
|
bool isMoreRecent = false;
|
||||||
@ -1626,7 +1631,7 @@ Folder DBHelper::loadFolder(const QString &folderName, qulonglong parentId, QSql
|
|||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
ComicDB DBHelper::loadComic(qulonglong id, QSqlDatabase &db)
|
ComicDB DBHelper::loadComic(qulonglong id, QSqlDatabase &db, bool &found)
|
||||||
{
|
{
|
||||||
ComicDB comic;
|
ComicDB comic;
|
||||||
|
|
||||||
@ -1648,6 +1653,9 @@ ComicDB DBHelper::loadComic(qulonglong id, QSqlDatabase &db)
|
|||||||
comic.name = selectQuery.value(name).toString();
|
comic.name = selectQuery.value(name).toString();
|
||||||
comic.path = selectQuery.value(path).toString();
|
comic.path = selectQuery.value(path).toString();
|
||||||
comic.info = DBHelper::loadComicInfo(selectQuery.value(hash).toString(), db);
|
comic.info = DBHelper::loadComicInfo(selectQuery.value(hash).toString(), db);
|
||||||
|
found = true;
|
||||||
|
} else {
|
||||||
|
found = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return comic;
|
return comic;
|
||||||
|
@ -93,7 +93,7 @@ public:
|
|||||||
// load
|
// load
|
||||||
static Folder loadFolder(qulonglong id, QSqlDatabase &db);
|
static Folder loadFolder(qulonglong id, QSqlDatabase &db);
|
||||||
static Folder loadFolder(const QString &folderName, qulonglong parentId, QSqlDatabase &db);
|
static Folder loadFolder(const QString &folderName, qulonglong parentId, QSqlDatabase &db);
|
||||||
static ComicDB loadComic(qulonglong id, QSqlDatabase &db);
|
static ComicDB loadComic(qulonglong id, QSqlDatabase &db, bool &found);
|
||||||
static ComicDB loadComic(QString cname, QString cpath, QString chash, QSqlDatabase &database);
|
static ComicDB loadComic(QString cname, QString cpath, QString chash, QSqlDatabase &database);
|
||||||
static ComicInfo loadComicInfo(QString hash, QSqlDatabase &db);
|
static ComicInfo loadComicInfo(QString hash, QSqlDatabase &db);
|
||||||
static ComicInfo getComicInfoFromQuery(QSqlQuery &query, const QString &idKey = "id");
|
static ComicInfo getComicInfoFromQuery(QSqlQuery &query, const QString &idKey = "id");
|
||||||
|
Loading…
Reference in New Issue
Block a user