diff --git a/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp b/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp index cdb28424..bb963b06 100644 --- a/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp +++ b/YACReaderLibrary/comic_vine/comic_vine_dialog.cpp @@ -454,7 +454,7 @@ void ComicVineDialog::getComicsInfo(QList > & matchingIn } db.commit(); db.close(); - QSqlDatabase::removeDatabase(databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); close(); emit accepted(); @@ -492,7 +492,7 @@ void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QStr db.commit(); db.close(); - QSqlDatabase::removeDatabase(databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); if(mode == SingleComic || currentIndex == (comics.count()-1)) { diff --git a/YACReaderLibrary/db/comic_model.cpp b/YACReaderLibrary/db/comic_model.cpp index e4605689..c8d4c9f0 100644 --- a/YACReaderLibrary/db/comic_model.cpp +++ b/YACReaderLibrary/db/comic_model.cpp @@ -176,7 +176,7 @@ bool ComicModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int break; } - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); //endMoveRows(); @@ -470,7 +470,7 @@ void ComicModel::setupFolderModelData(unsigned long long int folderId,const QStr setupModelData(selectQuery); } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); /*if(_data.length()==0) @@ -501,7 +501,7 @@ void ComicModel::setupLabelModelData(unsigned long long parentLabel, const QStri setupModelDataForList(selectQuery); } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); /*if(_data.length()==0) @@ -558,7 +558,7 @@ void ComicModel::setupReadingListModelData(unsigned long long parentReadingList, } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); } @@ -585,7 +585,7 @@ void ComicModel::setupFavoritesModelData(const QString &databasePath) setupModelDataForList(selectQuery); } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); /*if(_data.length()==0) @@ -614,7 +614,7 @@ void ComicModel::setupReadingModelData(const QString &databasePath) setupModelDataForList(selectQuery); } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); /*if(_data.length()==0) @@ -682,7 +682,7 @@ void ComicModel::setupModelData(const SearchModifiers modifier, const QString &f //selectQuery.finish(); } db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); emit searchNumResults(_data.length()); @@ -748,7 +748,7 @@ ComicDB ComicModel::getComic(const QModelIndex & mi) QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(),db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); return c; } @@ -758,7 +758,7 @@ ComicDB ComicModel::_getComic(const QModelIndex & mi) QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); ComicDB c = DBHelper::loadComic(_data.at(mi.row())->data(ComicModel::Id).toULongLong(),db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); return c; } @@ -801,7 +801,7 @@ QList ComicModel::getAllComics() db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); return comics; } @@ -819,7 +819,7 @@ QList ComicModel::getComics(QList list) } db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); return comics; } //TODO @@ -850,7 +850,7 @@ QVector ComicModel::setComicsRead(QList l } db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); emit dataChanged(index(list.first().row(),ComicModel::ReadColumn),index(list.last().row(),ComicModel::HasBeenOpened),QVector() << ReadColumnRole << CurrentPageRole << HasBeenOpenedRole); @@ -873,7 +873,7 @@ qint64 ComicModel::asignNumbers(QList list,int startingNumber) db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); //emit dataChanged(index(0,ComicModel::Number),index(_data.count()-1,ComicModel::HasBeenOpened)); @@ -906,7 +906,6 @@ QList ComicModel::getIndexesFromIds(const QList &comicI void ComicModel::startTransaction() { - dbTransaction = DataBaseManagement::loadDatabase(_databasePath); dbTransaction.transaction(); } @@ -915,7 +914,7 @@ void ComicModel::finishTransaction() { dbTransaction.commit(); dbTransaction.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(dbTransaction.connectionName()); } void ComicModel::removeInTransaction(int row) @@ -943,7 +942,7 @@ void ComicModel::remove(ComicDB * comic, int row) _data.removeAt(row); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endRemoveRows(); } */ @@ -991,7 +990,7 @@ void ComicModel::resetComicRating(const QModelIndex &mi) emit dataChanged(mi,mi); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } QUrl ComicModel::getCoverUrlPathForComicHash(const QString &hash) const @@ -1013,7 +1012,7 @@ void ComicModel::addComicsToFavorites(const QList & comicsList) DBHelper::insertComicsInFavorites(comics,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ComicModel::addComicsToLabel(const QList &comicIds, qulonglong labelId) @@ -1030,7 +1029,7 @@ void ComicModel::addComicsToLabel(const QList &comicsList, qulonglo DBHelper::insertComicsInLabel(comics,labelId,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ComicModel::addComicsToReadingList(const QList &comicIds, qulonglong readingListId) @@ -1047,7 +1046,7 @@ void ComicModel::addComicsToReadingList(const QList &comicsList, qu DBHelper::insertComicsInReadingList(comics,readingListId,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ComicModel::deleteComicsFromFavorites(const QList &comicsList) @@ -1059,7 +1058,7 @@ void ComicModel::deleteComicsFromFavorites(const QList &comicsList) DBHelper::deleteComicsFromFavorites(comics,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); if(mode == Favorites) deleteComicsFromModel(comicsList); @@ -1074,7 +1073,7 @@ void ComicModel::deleteComicsFromLabel(const QList &comicsList, qul DBHelper::deleteComicsFromLabel(comics,labelId,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); deleteComicsFromModel(comicsList); } @@ -1088,7 +1087,7 @@ void ComicModel::deleteComicsFromReadingList(const QList &comicsLis DBHelper::deleteComicsFromReadingList(comics,readingListId,db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); deleteComicsFromModel(comicsList); } @@ -1118,7 +1117,7 @@ bool ComicModel::isFavorite(const QModelIndex &index) isFavorite = DBHelper::isFavoriteComic(_data[index.row()]->data(Id).toLongLong(),db); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); return isFavorite; } @@ -1137,5 +1136,5 @@ void ComicModel::updateRating(int rating, QModelIndex mi) emit dataChanged(mi,mi); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } diff --git a/YACReaderLibrary/db/data_base_management.cpp b/YACReaderLibrary/db/data_base_management.cpp index e367b64b..c79b7cde 100644 --- a/YACReaderLibrary/db/data_base_management.cpp +++ b/YACReaderLibrary/db/data_base_management.cpp @@ -67,8 +67,9 @@ QSqlDatabase DataBaseManagement::createDatabase(QString name, QString path) } QSqlDatabase DataBaseManagement::createDatabase(QString dest) -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",dest); +{ + QString threadId = QString::number((long long)QThread::currentThreadId(), 16); + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",dest+threadId); db.setDatabaseName(dest); if (!db.open()) qDebug() << db.lastError(); @@ -92,9 +93,10 @@ QSqlDatabase DataBaseManagement::createDatabase(QString dest) QSqlDatabase DataBaseManagement::loadDatabase(QString path) { - //TODO check path - QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",path); - db.setDatabaseName(path+"/library.ydb"); + //TODO check path + QString threadId = QString::number((long long)QThread::currentThreadId(), 16); + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",path+threadId); + db.setDatabaseName(path + "/library.ydb"); if (!db.open()) { //se devuelve una base de datos vacía e inválida @@ -108,8 +110,9 @@ QSqlDatabase DataBaseManagement::loadDatabase(QString path) QSqlDatabase DataBaseManagement::loadDatabaseFromFile(QString filePath) { - //TODO check path - QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",filePath); + //TODO check path + QString threadId = QString::number((long long)QThread::currentThreadId(), 16); + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE",filePath+threadId); db.setDatabaseName(filePath); if (!db.open()) { //se devuelve una base de datos vacía e inválida @@ -696,7 +699,8 @@ QString DataBaseManagement::checkValidDB(const QString & fullPath) } db.close(); - QSqlDatabase::removeDatabase(fullPath); + QSqlDatabase::removeDatabase(db.connectionName()); + return versionString; } @@ -863,7 +867,7 @@ bool DataBaseManagement::updateToCurrentVersion(const QString & path) } db.close(); - QSqlDatabase::removeDatabase(fullPath); + QSqlDatabase::removeDatabase(db.connectionName()); return returnValue; } diff --git a/YACReaderLibrary/db/folder_model.cpp b/YACReaderLibrary/db/folder_model.cpp index 48eebe51..f895e765 100644 --- a/YACReaderLibrary/db/folder_model.cpp +++ b/YACReaderLibrary/db/folder_model.cpp @@ -306,7 +306,7 @@ void FolderModel::setupModelData(QString path) } //selectQuery.finish(); db.close(); - QSqlDatabase::removeDatabase(path); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); } @@ -428,7 +428,7 @@ void FolderModel::updateFolderCompletedStatus(const QModelIndexList &list, bool } db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); emit dataChanged(index(list.first().row(),FolderModel::Name),index(list.last().row(),FolderModel::Completed)); } @@ -448,7 +448,7 @@ void FolderModel::updateFolderFinishedStatus(const QModelIndexList &list, bool s } db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); emit dataChanged(index(list.first().row(),FolderModel::Name),index(list.last().row(),FolderModel::Completed)); } @@ -469,7 +469,7 @@ QStringList FolderModel::getSubfoldersNames(const QModelIndex &mi) db.commit(); db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); //TODO sort result)) qSort(result.begin(),result.end(),naturalSortLessThanCI); @@ -546,7 +546,7 @@ void FolderModel::fetchMoreFromDB(const QModelIndex &parent) db.close(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } QModelIndex FolderModel::addFolderAtParent(const QString &folderName, const QModelIndex &parent) @@ -566,7 +566,7 @@ QModelIndex FolderModel::addFolderAtParent(const QString &folderName, const QMod QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); newFolder.id = DBHelper::insert(&newFolder, db); DBHelper::updateChildrenInfo(parentItem->id, db); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); int destRow = 0; @@ -605,7 +605,7 @@ void FolderModel::deleteFolder(const QModelIndex &mi) QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); DBHelper::removeFromDB(&f,db); DBHelper::updateChildrenInfo(item->parent()->id, db); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endRemoveRows(); } @@ -614,7 +614,7 @@ void FolderModel::updateFolderChildrenInfo(qulonglong folderId) { QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); DBHelper::updateChildrenInfo(folderId, db); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } //PROXY @@ -729,7 +729,7 @@ void FolderModelProxy::setupFilteredModelData() } //selectQuery.finish(); db.close(); - QSqlDatabase::removeDatabase(model->_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endResetModel(); } diff --git a/YACReaderLibrary/db/reading_list_model.cpp b/YACReaderLibrary/db/reading_list_model.cpp index 5bff8e81..7bd920ed 100644 --- a/YACReaderLibrary/db/reading_list_model.cpp +++ b/YACReaderLibrary/db/reading_list_model.cpp @@ -396,7 +396,7 @@ void ReadingListModel::addNewLabel(const QString &name, YACReader::LabelColors c endInsertRows(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ReadingListModel::addReadingList(const QString &name) @@ -423,7 +423,7 @@ void ReadingListModel::addReadingList(const QString &name) endInsertRows(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ReadingListModel::addReadingListAt(const QString &name, const QModelIndex &mi) @@ -452,7 +452,7 @@ void ReadingListModel::addReadingListAt(const QString &name, const QModelIndex & endInsertRows(); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } bool ReadingListModel::isEditable(const QModelIndex &mi) @@ -523,7 +523,7 @@ void ReadingListModel::rename(const QModelIndex &mi, const QString &name) emit dataChanged(index(mi.row(), 0), index(mi.row(), 0)); } - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } void ReadingListModel::deleteItem(const QModelIndex &mi) @@ -557,7 +557,7 @@ void ReadingListModel::deleteItem(const QModelIndex &mi) DBHelper::removeLabelFromDB(item->getId(), db); } - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); endRemoveRows(); } @@ -746,7 +746,7 @@ void ReadingListModel::reorderingChildren(QList children) QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); DBHelper::reasignOrderToSublists(childrenIds, db); - QSqlDatabase::removeDatabase(_databasePath); + QSqlDatabase::removeDatabase(db.connectionName()); } bool ReadingListModel::rowIsSpecialList(int row, const QModelIndex &parent) const diff --git a/YACReaderLibrary/db_helper.cpp b/YACReaderLibrary/db_helper.cpp index 7caf575c..1ea042d3 100644 --- a/YACReaderLibrary/db_helper.cpp +++ b/YACReaderLibrary/db_helper.cpp @@ -40,7 +40,7 @@ QList DBHelper::getFolderSubfoldersFromLibrary(qulonglong library QList list = DBHelper::getFoldersFromParent(folderId,db,false); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return list; } QList DBHelper::getFolderComicsFromLibrary(qulonglong libraryId, qulonglong folderId) @@ -56,7 +56,7 @@ QList DBHelper::getFolderComicsFromLibrary(qulonglong libraryId, QList list = DBHelper::getComicsFromParent(folderId,db,sort); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return list; } @@ -86,7 +86,7 @@ quint32 DBHelper::getNumChildrenFromFolder(qulonglong libraryId, qulonglong fold } db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return result; } @@ -99,7 +99,7 @@ qulonglong DBHelper::getParentFromComicFolderId(qulonglong libraryId, qulonglong Folder f = DBHelper::loadFolder(id,db); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return f.parentId; } ComicDB DBHelper::getComicInfo(qulonglong libraryId, qulonglong id) @@ -110,7 +110,7 @@ ComicDB DBHelper::getComicInfo(qulonglong libraryId, qulonglong id) ComicDB comic = DBHelper::loadComic(id,db); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return comic; } @@ -121,7 +121,7 @@ QList DBHelper::getSiblings(qulonglong libraryId, qulonglong parentId) QList comics = DBHelper::getSortedComicsFromParent(parentId,db); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return comics; } @@ -145,7 +145,7 @@ QString DBHelper::getFolderName(qulonglong libraryId, qulonglong id) } db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); return name; } QList DBHelper::getLibrariesNames() @@ -193,7 +193,9 @@ QList DBHelper::getLabelComics(qulonglong libraryId, qulonglong labelId } db.close(); - } + } + //TODO ? + //QSqlDatabase::removeDatabase(db.connectionName()); return list; } @@ -235,7 +237,9 @@ QList DBHelper::getFavorites(qulonglong libraryId) db.close(); } - + //TODO ? + //QSqlDatabase::removeDatabase(db.connectionName()); + return list; } @@ -273,7 +277,9 @@ QList DBHelper::getReading(qulonglong libraryId) db.close(); } - + //TODO ? + //QSqlDatabase::removeDatabase(db.connectionName()); + return list; } @@ -310,7 +316,10 @@ QList DBHelper::getReadingLists(qulonglong libraryId) list.insert(i,item); } } - + + //TODO ? + //QSqlDatabase::removeDatabase(db.connectionName()); + return list; } @@ -362,8 +371,11 @@ QList DBHelper::getReadingListFullContent(qulonglong libraryId, qulongl list.append(comic); } } - } - + } + + //TODO ? + //QSqlDatabase::removeDatabase(db.connectionName()); + return list; } @@ -479,7 +491,7 @@ void DBHelper::update(qulonglong libraryId, ComicInfo & comicInfo) DBHelper::update(&comicInfo,db); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); } void DBHelper::update(ComicInfo * comicInfo, QSqlDatabase & db) @@ -689,7 +701,7 @@ void DBHelper::updateProgress(qulonglong libraryId, const ComicInfo &comicInfo) DBHelper::updateReadingRemoteProgress(comic.info,db); db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); } void DBHelper::updateReadingRemoteProgress(const ComicInfo &comicInfo, QSqlDatabase &db) @@ -741,7 +753,7 @@ void DBHelper::updateFromRemoteClient(qulonglong libraryId,const ComicInfo & com } db.close(); - QSqlDatabase::removeDatabase(libraryPath); + QSqlDatabase::removeDatabase(db.connectionName()); } void DBHelper::renameLabel(qulonglong id, const QString &name, QSqlDatabase &db) @@ -1293,7 +1305,7 @@ QList