Changeset View
Changeset View
Standalone View
Standalone View
src/databaseinterface.cpp
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show All 11 Lines | |||||
12 | * Lesser General Public License for more details. | 12 | * Lesser General Public License for more details. | ||
13 | * | 13 | * | ||
14 | * You should have received a copy of the GNU Lesser General Public License | 14 | * You should have received a copy of the GNU Lesser General Public License | ||
15 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | 15 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
16 | */ | 16 | */ | ||
17 | 17 | | |||
18 | #include "databaseinterface.h" | 18 | #include "databaseinterface.h" | ||
19 | 19 | | |||
20 | #include "databaseLogging.h" | ||||
21 | | ||||
20 | #include "musicaudiotrack.h" | 22 | #include "musicaudiotrack.h" | ||
21 | 23 | | |||
22 | #include <KI18n/KLocalizedString> | 24 | #include <KI18n/KLocalizedString> | ||
23 | 25 | | |||
24 | #include <QCoreApplication> | 26 | #include <QCoreApplication> | ||
25 | 27 | | |||
26 | #include <QSqlDatabase> | 28 | #include <QSqlDatabase> | ||
27 | #include <QSqlDriver> | 29 | #include <QSqlDriver> | ||
28 | #include <QSqlQuery> | 30 | #include <QSqlQuery> | ||
29 | #include <QSqlRecord> | 31 | #include <QSqlRecord> | ||
30 | #include <QSqlError> | 32 | #include <QSqlError> | ||
31 | 33 | | |||
32 | #include <QDateTime> | 34 | #include <QDateTime> | ||
33 | #include <QMutex> | 35 | #include <QMutex> | ||
34 | #include <QVariant> | 36 | #include <QVariant> | ||
35 | #include <QAtomicInt> | 37 | #include <QAtomicInt> | ||
38 | #include <QElapsedTimer> | ||||
36 | #include <QDebug> | 39 | #include <QDebug> | ||
37 | 40 | | |||
38 | #include <algorithm> | 41 | #include <algorithm> | ||
39 | 42 | | |||
40 | class DatabaseInterfacePrivate | 43 | class DatabaseInterfacePrivate | ||
41 | { | 44 | { | ||
42 | public: | 45 | public: | ||
43 | 46 | | |||
Show All 9 Lines | 48 | : mTracksDatabase(tracksDatabase), mSelectAlbumQuery(mTracksDatabase), | |||
53 | mSelectArtistQuery(mTracksDatabase), mUpdateTrackStatistics(mTracksDatabase), | 56 | mSelectArtistQuery(mTracksDatabase), mUpdateTrackStatistics(mTracksDatabase), | ||
54 | mRemoveTrackQuery(mTracksDatabase), mRemoveAlbumQuery(mTracksDatabase), | 57 | mRemoveTrackQuery(mTracksDatabase), mRemoveAlbumQuery(mTracksDatabase), | ||
55 | mRemoveArtistQuery(mTracksDatabase), mSelectAllTracksQuery(mTracksDatabase), | 58 | mRemoveArtistQuery(mTracksDatabase), mSelectAllTracksQuery(mTracksDatabase), | ||
56 | mInsertTrackMapping(mTracksDatabase), mUpdateTrackFirstPlayStatistics(mTracksDatabase), | 59 | mInsertTrackMapping(mTracksDatabase), mUpdateTrackFirstPlayStatistics(mTracksDatabase), | ||
57 | mInsertMusicSource(mTracksDatabase), mSelectMusicSource(mTracksDatabase), | 60 | mInsertMusicSource(mTracksDatabase), mSelectMusicSource(mTracksDatabase), | ||
58 | mUpdateTrackPriority(mTracksDatabase), mUpdateTrackFileModifiedTime(mTracksDatabase), | 61 | mUpdateTrackPriority(mTracksDatabase), mUpdateTrackFileModifiedTime(mTracksDatabase), | ||
59 | mSelectTracksMapping(mTracksDatabase), mSelectTracksMappingPriority(mTracksDatabase), | 62 | mSelectTracksMapping(mTracksDatabase), mSelectTracksMappingPriority(mTracksDatabase), | ||
60 | mUpdateAlbumArtUriFromAlbumIdQuery(mTracksDatabase), mSelectTracksMappingPriorityByTrackId(mTracksDatabase), | 63 | mUpdateAlbumArtUriFromAlbumIdQuery(mTracksDatabase), mSelectTracksMappingPriorityByTrackId(mTracksDatabase), | ||
61 | mSelectAllTrackFilesFromSourceQuery(mTracksDatabase), mSelectAlbumIdsFromArtist(mTracksDatabase), | 64 | mSelectAlbumIdsFromArtist(mTracksDatabase), mSelectAllTrackFilesQuery(mTracksDatabase), | ||
62 | mRemoveTracksMappingFromSource(mTracksDatabase), mRemoveTracksMapping(mTracksDatabase), | 65 | mRemoveTracksMappingFromSource(mTracksDatabase), mRemoveTracksMapping(mTracksDatabase), | ||
63 | mSelectTracksWithoutMappingQuery(mTracksDatabase), mSelectAlbumIdFromTitleAndArtistQuery(mTracksDatabase), | 66 | mSelectTracksWithoutMappingQuery(mTracksDatabase), mSelectAlbumIdFromTitleAndArtistQuery(mTracksDatabase), | ||
64 | mSelectAlbumIdFromTitleWithoutArtistQuery(mTracksDatabase), | 67 | mSelectAlbumIdFromTitleWithoutArtistQuery(mTracksDatabase), | ||
65 | mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery(mTracksDatabase), mSelectAlbumArtUriFromAlbumIdQuery(mTracksDatabase), | 68 | mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery(mTracksDatabase), mSelectAlbumArtUriFromAlbumIdQuery(mTracksDatabase), | ||
66 | mInsertComposerQuery(mTracksDatabase), mSelectComposerByNameQuery(mTracksDatabase), | 69 | mInsertComposerQuery(mTracksDatabase), mSelectComposerByNameQuery(mTracksDatabase), | ||
67 | mSelectComposerQuery(mTracksDatabase), mInsertLyricistQuery(mTracksDatabase), | 70 | mSelectComposerQuery(mTracksDatabase), mInsertLyricistQuery(mTracksDatabase), | ||
68 | mSelectLyricistByNameQuery(mTracksDatabase), mSelectLyricistQuery(mTracksDatabase), | 71 | mSelectLyricistByNameQuery(mTracksDatabase), mSelectLyricistQuery(mTracksDatabase), | ||
69 | mInsertGenreQuery(mTracksDatabase), mSelectGenreByNameQuery(mTracksDatabase), | 72 | mInsertGenreQuery(mTracksDatabase), mSelectGenreByNameQuery(mTracksDatabase), | ||
70 | mSelectGenreQuery(mTracksDatabase), mSelectAllTracksShortQuery(mTracksDatabase), | 73 | mSelectGenreQuery(mTracksDatabase), mSelectAllTracksShortQuery(mTracksDatabase), | ||
71 | mSelectAllAlbumsShortQuery(mTracksDatabase), mSelectAllComposersQuery(mTracksDatabase), | 74 | mSelectAllAlbumsShortQuery(mTracksDatabase), mSelectAllComposersQuery(mTracksDatabase), | ||
72 | mSelectAllLyricistsQuery(mTracksDatabase), mSelectCountAlbumsForComposerQuery(mTracksDatabase), | 75 | mSelectAllLyricistsQuery(mTracksDatabase), mSelectCountAlbumsForComposerQuery(mTracksDatabase), | ||
73 | mSelectCountAlbumsForLyricistQuery(mTracksDatabase), mSelectAllGenresQuery(mTracksDatabase), | 76 | mSelectCountAlbumsForLyricistQuery(mTracksDatabase), mSelectAllGenresQuery(mTracksDatabase), | ||
74 | mSelectGenreForArtistQuery(mTracksDatabase), mSelectGenreForAlbumQuery(mTracksDatabase), | 77 | mSelectGenreForArtistQuery(mTracksDatabase), mSelectGenreForAlbumQuery(mTracksDatabase), | ||
75 | mUpdateTrackQuery(mTracksDatabase), mUpdateAlbumArtistQuery(mTracksDatabase), | 78 | mUpdateTrackQuery(mTracksDatabase), mUpdateAlbumArtistQuery(mTracksDatabase), | ||
76 | mUpdateAlbumArtistInTracksQuery(mTracksDatabase), mQueryMaximumTrackIdQuery(mTracksDatabase), | 79 | mUpdateAlbumArtistInTracksQuery(mTracksDatabase), mQueryMaximumTrackIdQuery(mTracksDatabase), | ||
77 | mQueryMaximumAlbumIdQuery(mTracksDatabase), mQueryMaximumArtistIdQuery(mTracksDatabase), | 80 | mQueryMaximumAlbumIdQuery(mTracksDatabase), mQueryMaximumArtistIdQuery(mTracksDatabase), | ||
78 | mQueryMaximumLyricistIdQuery(mTracksDatabase), mQueryMaximumComposerIdQuery(mTracksDatabase), | 81 | mQueryMaximumLyricistIdQuery(mTracksDatabase), mQueryMaximumComposerIdQuery(mTracksDatabase), | ||
79 | mQueryMaximumGenreIdQuery(mTracksDatabase), mSelectAllArtistsWithGenreFilterQuery(mTracksDatabase), | 82 | mQueryMaximumGenreIdQuery(mTracksDatabase), mSelectAllArtistsWithGenreFilterQuery(mTracksDatabase), | ||
80 | mSelectAllAlbumsShortWithGenreArtistFilterQuery(mTracksDatabase), mSelectAllAlbumsShortWithArtistFilterQuery(mTracksDatabase), | 83 | mSelectAllAlbumsShortWithGenreArtistFilterQuery(mTracksDatabase), mSelectAllAlbumsShortWithArtistFilterQuery(mTracksDatabase), | ||
81 | mSelectAllRecentlyPlayedTracksQuery(mTracksDatabase), mSelectAllFrequentlyPlayedTracksQuery(mTracksDatabase), | 84 | mSelectAllRecentlyPlayedTracksQuery(mTracksDatabase), mSelectAllFrequentlyPlayedTracksQuery(mTracksDatabase), | ||
82 | mClearTracksTable(mTracksDatabase), mClearAlbumsTable(mTracksDatabase), mClearArtistsTable(mTracksDatabase), | 85 | mClearTracksTable(mTracksDatabase), mClearAlbumsTable(mTracksDatabase), mClearArtistsTable(mTracksDatabase), | ||
83 | mClearComposerTable(mTracksDatabase), mClearGenreTable(mTracksDatabase), mClearLyricistTable(mTracksDatabase), | 86 | mClearComposerTable(mTracksDatabase), mClearGenreTable(mTracksDatabase), mClearLyricistTable(mTracksDatabase), | ||
84 | mArtistMatchGenreQuery(mTracksDatabase) | 87 | mArtistMatchGenreQuery(mTracksDatabase), mSelectTrackIdQuery(mTracksDatabase) | ||
85 | { | 88 | { | ||
86 | } | 89 | } | ||
87 | 90 | | |||
88 | QSqlDatabase mTracksDatabase; | 91 | QSqlDatabase mTracksDatabase; | ||
89 | 92 | | |||
90 | QSqlQuery mSelectAlbumQuery; | 93 | QSqlQuery mSelectAlbumQuery; | ||
91 | 94 | | |||
92 | QSqlQuery mSelectTrackQuery; | 95 | QSqlQuery mSelectTrackQuery; | ||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Line(s) | |||||
142 | QSqlQuery mSelectTracksMapping; | 145 | QSqlQuery mSelectTracksMapping; | ||
143 | 146 | | |||
144 | QSqlQuery mSelectTracksMappingPriority; | 147 | QSqlQuery mSelectTracksMappingPriority; | ||
145 | 148 | | |||
146 | QSqlQuery mUpdateAlbumArtUriFromAlbumIdQuery; | 149 | QSqlQuery mUpdateAlbumArtUriFromAlbumIdQuery; | ||
147 | 150 | | |||
148 | QSqlQuery mSelectTracksMappingPriorityByTrackId; | 151 | QSqlQuery mSelectTracksMappingPriorityByTrackId; | ||
149 | 152 | | |||
150 | QSqlQuery mSelectAllTrackFilesFromSourceQuery; | | |||
151 | | ||||
152 | QSqlQuery mSelectAlbumIdsFromArtist; | 153 | QSqlQuery mSelectAlbumIdsFromArtist; | ||
153 | 154 | | |||
155 | QSqlQuery mSelectAllTrackFilesQuery; | ||||
156 | | ||||
154 | QSqlQuery mRemoveTracksMappingFromSource; | 157 | QSqlQuery mRemoveTracksMappingFromSource; | ||
155 | 158 | | |||
156 | QSqlQuery mRemoveTracksMapping; | 159 | QSqlQuery mRemoveTracksMapping; | ||
157 | 160 | | |||
158 | QSqlQuery mSelectTracksWithoutMappingQuery; | 161 | QSqlQuery mSelectTracksWithoutMappingQuery; | ||
159 | 162 | | |||
160 | QSqlQuery mSelectAlbumIdFromTitleAndArtistQuery; | 163 | QSqlQuery mSelectAlbumIdFromTitleAndArtistQuery; | ||
161 | 164 | | |||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Line(s) | |||||
238 | QSqlQuery mClearComposerTable; | 241 | QSqlQuery mClearComposerTable; | ||
239 | 242 | | |||
240 | QSqlQuery mClearGenreTable; | 243 | QSqlQuery mClearGenreTable; | ||
241 | 244 | | |||
242 | QSqlQuery mClearLyricistTable; | 245 | QSqlQuery mClearLyricistTable; | ||
243 | 246 | | |||
244 | QSqlQuery mArtistMatchGenreQuery; | 247 | QSqlQuery mArtistMatchGenreQuery; | ||
245 | 248 | | |||
249 | QSqlQuery mSelectTrackIdQuery; | ||||
250 | | ||||
246 | QSet<qulonglong> mModifiedTrackIds; | 251 | QSet<qulonglong> mModifiedTrackIds; | ||
247 | 252 | | |||
248 | QSet<qulonglong> mModifiedAlbumIds; | 253 | QSet<qulonglong> mModifiedAlbumIds; | ||
249 | 254 | | |||
250 | QSet<qulonglong> mModifiedArtistIds; | 255 | QSet<qulonglong> mModifiedArtistIds; | ||
251 | 256 | | |||
252 | QSet<qulonglong> mInsertedTracks; | 257 | QSet<qulonglong> mInsertedTracks; | ||
253 | 258 | | |||
254 | QSet<qulonglong> mInsertedAlbums; | 259 | QSet<qulonglong> mInsertedAlbums; | ||
255 | 260 | | |||
256 | QSet<qulonglong> mInsertedArtists; | 261 | QSet<qulonglong> mInsertedArtists; | ||
257 | 262 | | |||
258 | qulonglong mAlbumId = 1; | 263 | qulonglong mAlbumId = 1; | ||
259 | 264 | | |||
260 | qulonglong mArtistId = 1; | 265 | qulonglong mArtistId = 1; | ||
261 | 266 | | |||
262 | qulonglong mComposerId = 1; | 267 | qulonglong mComposerId = 1; | ||
263 | 268 | | |||
264 | qulonglong mLyricistId = 1; | 269 | qulonglong mLyricistId = 1; | ||
265 | 270 | | |||
266 | qulonglong mGenreId = 1; | 271 | qulonglong mGenreId = 1; | ||
267 | 272 | | |||
268 | qulonglong mTrackId = 1; | 273 | qulonglong mTrackId = 1; | ||
269 | 274 | | |||
270 | qulonglong mDiscoverId = 1; | | |||
271 | | ||||
272 | QAtomicInt mStopRequest = 0; | 275 | QAtomicInt mStopRequest = 0; | ||
273 | 276 | | |||
274 | bool mInitFinished = false; | 277 | bool mInitFinished = false; | ||
275 | 278 | | |||
276 | }; | 279 | }; | ||
277 | 280 | | |||
278 | DatabaseInterface::DatabaseInterface(QObject *parent) : QObject(parent), d(nullptr) | 281 | DatabaseInterface::DatabaseInterface(QObject *parent) : QObject(parent), d(nullptr) | ||
279 | { | 282 | { | ||
280 | } | 283 | } | ||
281 | 284 | | |||
282 | DatabaseInterface::~DatabaseInterface() | 285 | DatabaseInterface::~DatabaseInterface() | ||
283 | { | 286 | { | ||
284 | if (d) { | 287 | if (d) { | ||
285 | d->mTracksDatabase.close(); | 288 | d->mTracksDatabase.close(); | ||
286 | } | 289 | } | ||
287 | } | 290 | } | ||
288 | 291 | | |||
289 | void DatabaseInterface::init(const QString &dbName, const QString &databaseFileName) | 292 | void DatabaseInterface::init(const QString &dbName, const QString &databaseFileName) | ||
290 | { | 293 | { | ||
291 | qInfo() << QCoreApplication::libraryPaths(); | | |||
292 | QSqlDatabase tracksDatabase = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), dbName); | 294 | QSqlDatabase tracksDatabase = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"), dbName); | ||
293 | 295 | | |||
294 | if (!databaseFileName.isEmpty()) { | 296 | if (!databaseFileName.isEmpty()) { | ||
295 | tracksDatabase.setDatabaseName(QStringLiteral("file:") + databaseFileName); | 297 | tracksDatabase.setDatabaseName(QStringLiteral("file:") + databaseFileName); | ||
296 | } else { | 298 | } else { | ||
297 | tracksDatabase.setDatabaseName(QStringLiteral("file:memdb1?mode=memory")); | 299 | tracksDatabase.setDatabaseName(QStringLiteral("file:memdb1?mode=memory")); | ||
298 | } | 300 | } | ||
299 | tracksDatabase.setConnectOptions(QStringLiteral("foreign_keys = ON;locking_mode = EXCLUSIVE;QSQLITE_OPEN_URI;QSQLITE_BUSY_TIMEOUT=500000")); | 301 | tracksDatabase.setConnectOptions(QStringLiteral("foreign_keys = ON;locking_mode = EXCLUSIVE;QSQLITE_OPEN_URI;QSQLITE_BUSY_TIMEOUT=500000")); | ||
300 | 302 | | |||
301 | auto result = tracksDatabase.open(); | 303 | auto result = tracksDatabase.open(); | ||
302 | if (result) { | 304 | if (result) { | ||
303 | qDebug() << "database open"; | 305 | qCDebug(orgKdeElisaDatabase) << "database open"; | ||
304 | } else { | 306 | } else { | ||
305 | qDebug() << "database not open"; | 307 | qCDebug(orgKdeElisaDatabase) << "database not open"; | ||
306 | } | 308 | } | ||
307 | qDebug() << "DatabaseInterface::init" << (tracksDatabase.driver()->hasFeature(QSqlDriver::Transactions) ? "yes" : "no"); | 309 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::init" << (tracksDatabase.driver()->hasFeature(QSqlDriver::Transactions) ? "yes" : "no"); | ||
308 | 310 | | |||
309 | tracksDatabase.exec(QStringLiteral("PRAGMA foreign_keys = ON;")); | 311 | tracksDatabase.exec(QStringLiteral("PRAGMA foreign_keys = ON;")); | ||
310 | 312 | | |||
311 | d = std::make_unique<DatabaseInterfacePrivate>(tracksDatabase); | 313 | d = std::make_unique<DatabaseInterfacePrivate>(tracksDatabase); | ||
312 | 314 | | |||
313 | initDatabase(); | 315 | initDatabase(); | ||
314 | initRequest(); | 316 | initRequest(); | ||
315 | 317 | | |||
▲ Show 20 Lines • Show All 197 Lines • ▼ Show 20 Line(s) | 509 | { | |||
513 | 515 | | |||
514 | auto transactionResult = startTransaction(); | 516 | auto transactionResult = startTransaction(); | ||
515 | if (!transactionResult) { | 517 | if (!transactionResult) { | ||
516 | return result; | 518 | return result; | ||
517 | } | 519 | } | ||
518 | 520 | | |||
519 | d->mSelectTrackQuery.bindValue(QStringLiteral(":albumId"), databaseId); | 521 | d->mSelectTrackQuery.bindValue(QStringLiteral(":albumId"), databaseId); | ||
520 | 522 | | |||
521 | auto queryResult = d->mSelectTrackQuery.exec(); | 523 | auto queryResult = execQuery(d->mSelectTrackQuery); | ||
522 | 524 | | |||
523 | if (!queryResult || !d->mSelectTrackQuery.isSelect() || !d->mSelectTrackQuery.isActive()) { | 525 | if (!queryResult || !d->mSelectTrackQuery.isSelect() || !d->mSelectTrackQuery.isActive()) { | ||
524 | Q_EMIT databaseError(); | 526 | Q_EMIT databaseError(); | ||
525 | 527 | | |||
526 | qDebug() << "DatabaseInterface::albumData" << d->mSelectTrackQuery.lastQuery(); | 528 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::albumData" << d->mSelectTrackQuery.lastQuery(); | ||
527 | qDebug() << "DatabaseInterface::albumData" << d->mSelectTrackQuery.boundValues(); | 529 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::albumData" << d->mSelectTrackQuery.boundValues(); | ||
528 | qDebug() << "DatabaseInterface::albumData" << d->mSelectTrackQuery.lastError(); | 530 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::albumData" << d->mSelectTrackQuery.lastError(); | ||
529 | } | 531 | } | ||
530 | 532 | | |||
531 | while (d->mSelectTrackQuery.next()) { | 533 | while (d->mSelectTrackQuery.next()) { | ||
532 | const auto ¤tRecord = d->mSelectTrackQuery.record(); | 534 | const auto ¤tRecord = d->mSelectTrackQuery.record(); | ||
533 | 535 | | |||
534 | result.push_back(buildTrackDataFromDatabaseRecord(currentRecord)); | 536 | result.push_back(buildTrackDataFromDatabaseRecord(currentRecord)); | ||
535 | } | 537 | } | ||
536 | 538 | | |||
Show All 27 Lines | 565 | if (!transactionResult) { | |||
564 | return result; | 566 | return result; | ||
565 | } | 567 | } | ||
566 | 568 | | |||
567 | return result; | 569 | return result; | ||
568 | } | 570 | } | ||
569 | 571 | | |||
570 | DatabaseInterface::ListArtistDataType DatabaseInterface::allArtistsDataByGenre(const QString &genre) | 572 | DatabaseInterface::ListArtistDataType DatabaseInterface::allArtistsDataByGenre(const QString &genre) | ||
571 | { | 573 | { | ||
572 | qDebug() << "DatabaseInterface::allArtistsDataByGenre" << genre; | 574 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::allArtistsDataByGenre" << genre; | ||
573 | 575 | | |||
574 | auto result = ListArtistDataType{}; | 576 | auto result = ListArtistDataType{}; | ||
575 | 577 | | |||
576 | if (!d) { | 578 | if (!d) { | ||
577 | return result; | 579 | return result; | ||
578 | } | 580 | } | ||
579 | 581 | | |||
580 | auto transactionResult = startTransaction(); | 582 | auto transactionResult = startTransaction(); | ||
▲ Show 20 Lines • Show All 42 Lines • ▼ Show 20 Line(s) | 623 | { | |||
623 | 625 | | |||
624 | if (!d) { | 626 | if (!d) { | ||
625 | return result; | 627 | return result; | ||
626 | } | 628 | } | ||
627 | 629 | | |||
628 | d->mArtistMatchGenreQuery.bindValue(QStringLiteral(":databaseId"), databaseId); | 630 | d->mArtistMatchGenreQuery.bindValue(QStringLiteral(":databaseId"), databaseId); | ||
629 | d->mArtistMatchGenreQuery.bindValue(QStringLiteral(":genreFilter"), genre); | 631 | d->mArtistMatchGenreQuery.bindValue(QStringLiteral(":genreFilter"), genre); | ||
630 | 632 | | |||
631 | auto queryResult = d->mArtistMatchGenreQuery.exec(); | 633 | auto queryResult = execQuery(d->mArtistMatchGenreQuery); | ||
632 | 634 | | |||
633 | if (!queryResult || !d->mArtistMatchGenreQuery.isSelect() || !d->mArtistMatchGenreQuery.isActive()) { | 635 | if (!queryResult || !d->mArtistMatchGenreQuery.isSelect() || !d->mArtistMatchGenreQuery.isActive()) { | ||
634 | Q_EMIT databaseError(); | 636 | Q_EMIT databaseError(); | ||
635 | 637 | | |||
636 | qDebug() << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.lastQuery(); | 638 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.lastQuery(); | ||
637 | qDebug() << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.boundValues(); | 639 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.boundValues(); | ||
638 | qDebug() << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.lastError(); | 640 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::artistMatchGenre" << d->mArtistMatchGenreQuery.lastError(); | ||
639 | 641 | | |||
640 | d->mArtistMatchGenreQuery.finish(); | 642 | d->mArtistMatchGenreQuery.finish(); | ||
641 | 643 | | |||
642 | auto transactionResult = finishTransaction(); | 644 | auto transactionResult = finishTransaction(); | ||
643 | if (!transactionResult) { | 645 | if (!transactionResult) { | ||
644 | return result; | 646 | return result; | ||
645 | } | 647 | } | ||
646 | 648 | | |||
647 | return result; | 649 | return result; | ||
648 | } | 650 | } | ||
649 | 651 | | |||
650 | result = d->mArtistMatchGenreQuery.next(); | 652 | result = d->mArtistMatchGenreQuery.next(); | ||
651 | 653 | | |||
652 | d->mArtistMatchGenreQuery.finish(); | 654 | d->mArtistMatchGenreQuery.finish(); | ||
653 | 655 | | |||
654 | qDebug() << "DatabaseInterface::internalArtistMatchGenre" << databaseId << (result ? "match" : "does not match"); | 656 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalArtistMatchGenre" << databaseId << (result ? "match" : "does not match"); | ||
655 | 657 | | |||
656 | return result; | 658 | return result; | ||
657 | } | 659 | } | ||
658 | 660 | | |||
659 | DatabaseInterface::DataType DatabaseInterface::oneData(ElisaUtils::PlayListEntryType aType, qulonglong databaseId) | 661 | DatabaseInterface::DataType DatabaseInterface::oneData(ElisaUtils::PlayListEntryType aType, qulonglong databaseId) | ||
660 | { | 662 | { | ||
661 | auto result = DataType{}; | 663 | auto result = DataType{}; | ||
662 | 664 | | |||
▲ Show 20 Lines • Show All 128 Lines • ▼ Show 20 Line(s) | 774 | { | |||
791 | return result; | 793 | return result; | ||
792 | } | 794 | } | ||
793 | 795 | | |||
794 | void DatabaseInterface::applicationAboutToQuit() | 796 | void DatabaseInterface::applicationAboutToQuit() | ||
795 | { | 797 | { | ||
796 | d->mStopRequest = 1; | 798 | d->mStopRequest = 1; | ||
797 | } | 799 | } | ||
798 | 800 | | |||
799 | void DatabaseInterface::removeAllTracksFromSource(const QString &sourceName) | 801 | void DatabaseInterface::askRestoredTracks() | ||
800 | { | | |||
801 | auto transactionResult = startTransaction(); | | |||
802 | if (!transactionResult) { | | |||
803 | return; | | |||
804 | } | | |||
805 | | ||||
806 | initChangesTrackers(); | | |||
807 | | ||||
808 | auto allFileNames = internalAllFileNameFromSource(sourceName); | | |||
809 | | ||||
810 | auto allFileUrls = QList<QUrl>{}; | | |||
811 | | ||||
812 | for (auto oneUrlIt = allFileNames.begin(); oneUrlIt != allFileNames.end(); ++oneUrlIt) { | | |||
813 | allFileUrls.push_back(oneUrlIt.key()); | | |||
814 | } | | |||
815 | | ||||
816 | internalRemoveTracksList(allFileUrls); | | |||
817 | | ||||
818 | if (!d->mInsertedArtists.isEmpty()) { | | |||
819 | ListArtistDataType newArtists; | | |||
820 | for (auto artistId : qAsConst(d->mInsertedArtists)) { | | |||
821 | newArtists.push_back({{DatabaseIdRole, artistId}}); | | |||
822 | } | | |||
823 | Q_EMIT artistsAdded(newArtists); | | |||
824 | } | | |||
825 | | ||||
826 | transactionResult = finishTransaction(); | | |||
827 | if (!transactionResult) { | | |||
828 | return; | | |||
829 | } | | |||
830 | } | | |||
831 | | ||||
832 | void DatabaseInterface::askRestoredTracks(const QString &musicSource) | | |||
833 | { | 802 | { | ||
834 | auto transactionResult = startTransaction(); | 803 | auto transactionResult = startTransaction(); | ||
835 | if (!transactionResult) { | 804 | if (!transactionResult) { | ||
836 | return; | 805 | return; | ||
837 | } | 806 | } | ||
838 | 807 | | |||
839 | auto result = internalAllFileNameFromSource(musicSource); | 808 | auto result = internalAllFileName(); | ||
840 | 809 | | |||
841 | Q_EMIT restoredTracks(musicSource, result); | 810 | Q_EMIT restoredTracks(result); | ||
842 | 811 | | |||
843 | transactionResult = finishTransaction(); | 812 | transactionResult = finishTransaction(); | ||
844 | if (!transactionResult) { | 813 | if (!transactionResult) { | ||
845 | return; | 814 | return; | ||
846 | } | 815 | } | ||
847 | } | 816 | } | ||
848 | 817 | | |||
849 | void DatabaseInterface::trackHasStartedPlaying(const QUrl &fileName, const QDateTime &time) | 818 | void DatabaseInterface::trackHasStartedPlaying(const QUrl &fileName, const QDateTime &time) | ||
Show All 13 Lines | |||||
863 | 832 | | |||
864 | void DatabaseInterface::clearData() | 833 | void DatabaseInterface::clearData() | ||
865 | { | 834 | { | ||
866 | auto transactionResult = startTransaction(); | 835 | auto transactionResult = startTransaction(); | ||
867 | if (!transactionResult) { | 836 | if (!transactionResult) { | ||
868 | return; | 837 | return; | ||
869 | } | 838 | } | ||
870 | 839 | | |||
871 | auto queryResult = d->mClearTracksTable.exec(); | 840 | auto queryResult = execQuery(d->mClearTracksTable); | ||
872 | 841 | | |||
873 | if (!queryResult || !d->mClearTracksTable.isActive()) { | 842 | if (!queryResult || !d->mClearTracksTable.isActive()) { | ||
874 | Q_EMIT databaseError(); | 843 | Q_EMIT databaseError(); | ||
875 | 844 | | |||
876 | qDebug() << "DatabaseInterface::clearData" << d->mClearTracksTable.lastQuery(); | 845 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearTracksTable.lastQuery(); | ||
877 | qDebug() << "DatabaseInterface::clearData" << d->mClearTracksTable.boundValues(); | 846 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearTracksTable.boundValues(); | ||
878 | qDebug() << "DatabaseInterface::clearData" << d->mClearTracksTable.lastError(); | 847 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearTracksTable.lastError(); | ||
879 | } | 848 | } | ||
880 | 849 | | |||
881 | d->mClearTracksTable.finish(); | 850 | d->mClearTracksTable.finish(); | ||
882 | 851 | | |||
883 | queryResult = d->mClearAlbumsTable.exec(); | 852 | queryResult = execQuery(d->mClearAlbumsTable); | ||
884 | 853 | | |||
885 | if (!queryResult || !d->mClearAlbumsTable.isActive()) { | 854 | if (!queryResult || !d->mClearAlbumsTable.isActive()) { | ||
886 | Q_EMIT databaseError(); | 855 | Q_EMIT databaseError(); | ||
887 | 856 | | |||
888 | qDebug() << "DatabaseInterface::clearData" << d->mClearAlbumsTable.lastQuery(); | 857 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearAlbumsTable.lastQuery(); | ||
889 | qDebug() << "DatabaseInterface::clearData" << d->mClearAlbumsTable.boundValues(); | 858 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearAlbumsTable.boundValues(); | ||
890 | qDebug() << "DatabaseInterface::clearData" << d->mClearAlbumsTable.lastError(); | 859 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearAlbumsTable.lastError(); | ||
891 | } | 860 | } | ||
892 | 861 | | |||
893 | d->mClearAlbumsTable.finish(); | 862 | d->mClearAlbumsTable.finish(); | ||
894 | 863 | | |||
895 | queryResult = d->mClearComposerTable.exec(); | 864 | queryResult = execQuery(d->mClearComposerTable); | ||
896 | 865 | | |||
897 | if (!queryResult || !d->mClearComposerTable.isActive()) { | 866 | if (!queryResult || !d->mClearComposerTable.isActive()) { | ||
898 | Q_EMIT databaseError(); | 867 | Q_EMIT databaseError(); | ||
899 | 868 | | |||
900 | qDebug() << "DatabaseInterface::clearData" << d->mClearComposerTable.lastQuery(); | 869 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearComposerTable.lastQuery(); | ||
901 | qDebug() << "DatabaseInterface::clearData" << d->mClearComposerTable.boundValues(); | 870 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearComposerTable.boundValues(); | ||
902 | qDebug() << "DatabaseInterface::clearData" << d->mClearComposerTable.lastError(); | 871 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearComposerTable.lastError(); | ||
903 | } | 872 | } | ||
904 | 873 | | |||
905 | d->mClearComposerTable.finish(); | 874 | d->mClearComposerTable.finish(); | ||
906 | 875 | | |||
907 | queryResult = d->mClearLyricistTable.exec(); | 876 | queryResult = execQuery(d->mClearLyricistTable); | ||
908 | 877 | | |||
909 | if (!queryResult || !d->mClearLyricistTable.isActive()) { | 878 | if (!queryResult || !d->mClearLyricistTable.isActive()) { | ||
910 | Q_EMIT databaseError(); | 879 | Q_EMIT databaseError(); | ||
911 | 880 | | |||
912 | qDebug() << "DatabaseInterface::clearData" << d->mClearLyricistTable.lastQuery(); | 881 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearLyricistTable.lastQuery(); | ||
913 | qDebug() << "DatabaseInterface::clearData" << d->mClearLyricistTable.boundValues(); | 882 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearLyricistTable.boundValues(); | ||
914 | qDebug() << "DatabaseInterface::clearData" << d->mClearLyricistTable.lastError(); | 883 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearLyricistTable.lastError(); | ||
915 | } | 884 | } | ||
916 | 885 | | |||
917 | d->mClearLyricistTable.finish(); | 886 | d->mClearLyricistTable.finish(); | ||
918 | 887 | | |||
919 | queryResult = d->mClearGenreTable.exec(); | 888 | queryResult = execQuery(d->mClearGenreTable); | ||
920 | 889 | | |||
921 | if (!queryResult || !d->mClearGenreTable.isActive()) { | 890 | if (!queryResult || !d->mClearGenreTable.isActive()) { | ||
922 | Q_EMIT databaseError(); | 891 | Q_EMIT databaseError(); | ||
923 | 892 | | |||
924 | qDebug() << "DatabaseInterface::clearData" << d->mClearGenreTable.lastQuery(); | 893 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearGenreTable.lastQuery(); | ||
925 | qDebug() << "DatabaseInterface::clearData" << d->mClearGenreTable.boundValues(); | 894 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearGenreTable.boundValues(); | ||
926 | qDebug() << "DatabaseInterface::clearData" << d->mClearGenreTable.lastError(); | 895 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearGenreTable.lastError(); | ||
927 | } | 896 | } | ||
928 | 897 | | |||
929 | d->mClearGenreTable.finish(); | 898 | d->mClearGenreTable.finish(); | ||
930 | 899 | | |||
931 | queryResult = d->mClearArtistsTable.exec(); | 900 | queryResult = execQuery(d->mClearArtistsTable); | ||
932 | 901 | | |||
933 | if (!queryResult || !d->mClearArtistsTable.isActive()) { | 902 | if (!queryResult || !d->mClearArtistsTable.isActive()) { | ||
934 | Q_EMIT databaseError(); | 903 | Q_EMIT databaseError(); | ||
935 | 904 | | |||
936 | qDebug() << "DatabaseInterface::clearData" << d->mClearArtistsTable.lastQuery(); | 905 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearArtistsTable.lastQuery(); | ||
937 | qDebug() << "DatabaseInterface::clearData" << d->mClearArtistsTable.boundValues(); | 906 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearArtistsTable.boundValues(); | ||
938 | qDebug() << "DatabaseInterface::clearData" << d->mClearArtistsTable.lastError(); | 907 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::clearData" << d->mClearArtistsTable.lastError(); | ||
939 | } | 908 | } | ||
940 | 909 | | |||
941 | d->mClearArtistsTable.finish(); | 910 | d->mClearArtistsTable.finish(); | ||
942 | 911 | | |||
943 | transactionResult = finishTransaction(); | 912 | transactionResult = finishTransaction(); | ||
944 | if (!transactionResult) { | 913 | if (!transactionResult) { | ||
945 | return; | 914 | return; | ||
946 | } | 915 | } | ||
Show All 16 Lines | 931 | { | |||
963 | d->mModifiedTrackIds.insert(trackId); | 932 | d->mModifiedTrackIds.insert(trackId); | ||
964 | } | 933 | } | ||
965 | 934 | | |||
966 | void DatabaseInterface::recordModifiedAlbum(qulonglong albumId) | 935 | void DatabaseInterface::recordModifiedAlbum(qulonglong albumId) | ||
967 | { | 936 | { | ||
968 | d->mModifiedAlbumIds.insert(albumId); | 937 | d->mModifiedAlbumIds.insert(albumId); | ||
969 | } | 938 | } | ||
970 | 939 | | |||
971 | void DatabaseInterface::insertTracksList(const QList<MusicAudioTrack> &tracks, const QHash<QString, QUrl> &covers, const QString &musicSource) | 940 | void DatabaseInterface::insertTracksList(const QList<MusicAudioTrack> &tracks, const QHash<QString, QUrl> &covers) | ||
972 | { | 941 | { | ||
942 | qCDebug(orgKdeElisaDatabase()) << "DatabaseInterface::insertTracksList" << tracks.count(); | ||||
973 | if (d->mStopRequest == 1) { | 943 | if (d->mStopRequest == 1) { | ||
944 | Q_EMIT finishInsertingTracksList(); | ||||
974 | return; | 945 | return; | ||
975 | } | 946 | } | ||
976 | 947 | | |||
977 | auto transactionResult = startTransaction(); | 948 | auto transactionResult = startTransaction(); | ||
978 | if (!transactionResult) { | 949 | if (!transactionResult) { | ||
950 | Q_EMIT finishInsertingTracksList(); | ||||
979 | return; | 951 | return; | ||
980 | } | 952 | } | ||
981 | 953 | | |||
982 | initChangesTrackers(); | 954 | initChangesTrackers(); | ||
983 | 955 | | |||
984 | for(const auto &oneTrack : tracks) { | 956 | for(const auto &oneTrack : tracks) { | ||
985 | d->mSelectTracksMapping.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | 957 | d->mSelectTracksMapping.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | ||
986 | 958 | | |||
987 | auto result = d->mSelectTracksMapping.exec(); | 959 | auto result = execQuery(d->mSelectTracksMapping); | ||
988 | 960 | | |||
989 | if (!result || !d->mSelectTracksMapping.isSelect() || !d->mSelectTracksMapping.isActive()) { | 961 | if (!result || !d->mSelectTracksMapping.isSelect() || !d->mSelectTracksMapping.isActive()) { | ||
990 | Q_EMIT databaseError(); | 962 | Q_EMIT databaseError(); | ||
991 | 963 | | |||
992 | qDebug() << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.lastQuery(); | 964 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.lastQuery(); | ||
993 | qDebug() << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.boundValues(); | 965 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.boundValues(); | ||
994 | qDebug() << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.lastError(); | 966 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertTracksList" << d->mSelectTracksMapping.lastError(); | ||
995 | 967 | | |||
996 | d->mSelectTracksMapping.finish(); | 968 | d->mSelectTracksMapping.finish(); | ||
997 | 969 | | |||
998 | rollBackTransaction(); | 970 | rollBackTransaction(); | ||
971 | Q_EMIT finishInsertingTracksList(); | ||||
999 | return; | 972 | return; | ||
1000 | } | 973 | } | ||
1001 | 974 | | |||
1002 | bool isNewTrack = !d->mSelectTracksMapping.next(); | 975 | bool isNewTrack = !d->mSelectTracksMapping.next(); | ||
1003 | 976 | | |||
1004 | auto discoverId = insertMusicSource(musicSource); | | |||
1005 | | ||||
1006 | if (isNewTrack) { | 977 | if (isNewTrack) { | ||
1007 | insertTrackOrigin(oneTrack.resourceURI(), oneTrack.fileModificationTime(), | 978 | insertTrackOrigin(oneTrack.resourceURI(), oneTrack.fileModificationTime(), | ||
1008 | QDateTime::currentDateTime(), discoverId); | 979 | QDateTime::currentDateTime()); | ||
1009 | } else if (!d->mSelectTracksMapping.record().value(0).isNull() && d->mSelectTracksMapping.record().value(0).toULongLong() != 0) { | 980 | } else if (!d->mSelectTracksMapping.record().value(0).isNull() && d->mSelectTracksMapping.record().value(0).toULongLong() != 0) { | ||
1010 | updateTrackOrigin(oneTrack.resourceURI(), oneTrack.fileModificationTime()); | 981 | updateTrackOrigin(oneTrack.resourceURI(), oneTrack.fileModificationTime()); | ||
1011 | } | 982 | } | ||
1012 | 983 | | |||
1013 | d->mSelectTracksMapping.finish(); | 984 | d->mSelectTracksMapping.finish(); | ||
1014 | 985 | | |||
1015 | bool isInserted = false; | 986 | bool isInserted = false; | ||
1016 | 987 | | |||
1017 | const auto insertedTrackId = internalInsertTrack(discoverId, oneTrack, covers, isInserted); | 988 | const auto insertedTrackId = internalInsertTrack(oneTrack, covers, isInserted); | ||
1018 | 989 | | |||
1019 | if (isInserted && insertedTrackId != 0) { | 990 | if (isInserted && insertedTrackId != 0) { | ||
1020 | d->mInsertedTracks.insert(insertedTrackId); | 991 | d->mInsertedTracks.insert(insertedTrackId); | ||
1021 | } | 992 | } | ||
1022 | 993 | | |||
1023 | if (d->mStopRequest == 1) { | 994 | if (d->mStopRequest == 1) { | ||
1024 | transactionResult = finishTransaction(); | 995 | transactionResult = finishTransaction(); | ||
1025 | if (!transactionResult) { | 996 | if (!transactionResult) { | ||
997 | Q_EMIT finishInsertingTracksList(); | ||||
1026 | return; | 998 | return; | ||
1027 | } | 999 | } | ||
1000 | Q_EMIT finishInsertingTracksList(); | ||||
1028 | return; | 1001 | return; | ||
1029 | } | 1002 | } | ||
1030 | } | 1003 | } | ||
1031 | 1004 | | |||
1032 | if (!d->mInsertedArtists.isEmpty()) { | 1005 | if (!d->mInsertedArtists.isEmpty()) { | ||
1033 | ListArtistDataType newArtists; | 1006 | ListArtistDataType newArtists; | ||
1034 | 1007 | | |||
1035 | for (auto artistId : qAsConst(d->mInsertedArtists)) { | 1008 | for (auto artistId : qAsConst(d->mInsertedArtists)) { | ||
1036 | newArtists.push_back({{DatabaseIdRole, artistId}}); | 1009 | newArtists.push_back({{DatabaseIdRole, artistId}}); | ||
1037 | } | 1010 | } | ||
1038 | qInfo() << "artistsAdded" << newArtists.size(); | 1011 | qCInfo(orgKdeElisaDatabase) << "artistsAdded" << newArtists.size(); | ||
1039 | Q_EMIT artistsAdded(newArtists); | 1012 | Q_EMIT artistsAdded(newArtists); | ||
1040 | } | 1013 | } | ||
1041 | 1014 | | |||
1042 | if (!d->mInsertedAlbums.isEmpty()) { | 1015 | if (!d->mInsertedAlbums.isEmpty()) { | ||
1043 | ListAlbumDataType newAlbums; | 1016 | ListAlbumDataType newAlbums; | ||
1044 | 1017 | | |||
1045 | for (auto albumId : qAsConst(d->mInsertedAlbums)) { | 1018 | for (auto albumId : qAsConst(d->mInsertedAlbums)) { | ||
1046 | d->mModifiedAlbumIds.remove(albumId); | 1019 | d->mModifiedAlbumIds.remove(albumId); | ||
1047 | newAlbums.push_back(internalOneAlbumPartialData(albumId)); | 1020 | newAlbums.push_back(internalOneAlbumPartialData(albumId)); | ||
1048 | } | 1021 | } | ||
1049 | 1022 | | |||
1050 | qInfo() << "albumsAdded" << newAlbums.size(); | 1023 | qCInfo(orgKdeElisaDatabase) << "albumsAdded" << newAlbums.size(); | ||
1051 | Q_EMIT albumsAdded(newAlbums); | 1024 | Q_EMIT albumsAdded(newAlbums); | ||
1052 | } | 1025 | } | ||
1053 | 1026 | | |||
1054 | for (auto albumId : qAsConst(d->mModifiedAlbumIds)) { | 1027 | for (auto albumId : qAsConst(d->mModifiedAlbumIds)) { | ||
1055 | Q_EMIT albumModified({{DatabaseIdRole, albumId}}, albumId); | 1028 | Q_EMIT albumModified({{DatabaseIdRole, albumId}}, albumId); | ||
1056 | } | 1029 | } | ||
1057 | 1030 | | |||
1058 | if (!d->mInsertedTracks.isEmpty()) { | 1031 | if (!d->mInsertedTracks.isEmpty()) { | ||
1059 | ListTrackDataType newTracks; | 1032 | ListTrackDataType newTracks; | ||
1060 | 1033 | | |||
1061 | for (auto trackId : qAsConst(d->mInsertedTracks)) { | 1034 | for (auto trackId : qAsConst(d->mInsertedTracks)) { | ||
1062 | newTracks.push_back(internalOneTrackPartialData(trackId)); | 1035 | newTracks.push_back(internalOneTrackPartialData(trackId)); | ||
1063 | d->mModifiedTrackIds.remove(trackId); | 1036 | d->mModifiedTrackIds.remove(trackId); | ||
1064 | } | 1037 | } | ||
1065 | 1038 | | |||
1066 | qInfo() << "tracksAdded" << newTracks.size(); | 1039 | qCInfo(orgKdeElisaDatabase) << "tracksAdded" << newTracks.size(); | ||
1067 | Q_EMIT tracksAdded(newTracks); | 1040 | Q_EMIT tracksAdded(newTracks); | ||
1068 | } | 1041 | } | ||
1069 | 1042 | | |||
1070 | for (auto trackId : qAsConst(d->mModifiedTrackIds)) { | 1043 | for (auto trackId : qAsConst(d->mModifiedTrackIds)) { | ||
1071 | Q_EMIT trackModified(internalOneTrackPartialData(trackId)); | 1044 | Q_EMIT trackModified(internalOneTrackPartialData(trackId)); | ||
1072 | } | 1045 | } | ||
1073 | 1046 | | |||
1074 | transactionResult = finishTransaction(); | 1047 | transactionResult = finishTransaction(); | ||
1075 | if (!transactionResult) { | 1048 | if (!transactionResult) { | ||
1049 | Q_EMIT finishInsertingTracksList(); | ||||
1076 | return; | 1050 | return; | ||
1077 | } | 1051 | } | ||
1052 | Q_EMIT finishInsertingTracksList(); | ||||
1078 | } | 1053 | } | ||
1079 | 1054 | | |||
1080 | void DatabaseInterface::removeTracksList(const QList<QUrl> &removedTracks) | 1055 | void DatabaseInterface::removeTracksList(const QList<QUrl> &removedTracks) | ||
1081 | { | 1056 | { | ||
1082 | auto transactionResult = startTransaction(); | 1057 | auto transactionResult = startTransaction(); | ||
1083 | if (!transactionResult) { | 1058 | if (!transactionResult) { | ||
1059 | Q_EMIT finishRemovingTracksList(); | ||||
1084 | return; | 1060 | return; | ||
1085 | } | 1061 | } | ||
1086 | 1062 | | |||
1087 | initChangesTrackers(); | 1063 | initChangesTrackers(); | ||
1088 | 1064 | | |||
1089 | internalRemoveTracksList(removedTracks); | 1065 | internalRemoveTracksList(removedTracks); | ||
1090 | 1066 | | |||
1091 | if (!d->mInsertedArtists.isEmpty()) { | 1067 | if (!d->mInsertedArtists.isEmpty()) { | ||
1092 | ListArtistDataType newArtists; | 1068 | ListArtistDataType newArtists; | ||
1093 | for (auto artistId : qAsConst(d->mInsertedArtists)) { | 1069 | for (auto artistId : qAsConst(d->mInsertedArtists)) { | ||
1094 | newArtists.push_back({{DatabaseIdRole, artistId}}); | 1070 | newArtists.push_back({{DatabaseIdRole, artistId}}); | ||
1095 | } | 1071 | } | ||
1096 | Q_EMIT artistsAdded(newArtists); | 1072 | Q_EMIT artistsAdded(newArtists); | ||
1097 | } | 1073 | } | ||
1098 | 1074 | | |||
1099 | transactionResult = finishTransaction(); | 1075 | transactionResult = finishTransaction(); | ||
1100 | if (!transactionResult) { | 1076 | if (!transactionResult) { | ||
1077 | Q_EMIT finishRemovingTracksList(); | ||||
1101 | return; | 1078 | return; | ||
1102 | } | 1079 | } | ||
1080 | | ||||
1081 | Q_EMIT finishRemovingTracksList(); | ||||
1103 | } | 1082 | } | ||
1104 | 1083 | | |||
1105 | bool DatabaseInterface::startTransaction() const | 1084 | bool DatabaseInterface::startTransaction() const | ||
1106 | { | 1085 | { | ||
1107 | auto result = false; | 1086 | auto result = false; | ||
1108 | 1087 | | |||
1109 | auto transactionResult = d->mTracksDatabase.transaction(); | 1088 | auto transactionResult = d->mTracksDatabase.transaction(); | ||
1110 | if (!transactionResult) { | 1089 | if (!transactionResult) { | ||
1111 | qDebug() << "transaction failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().driverText(); | 1090 | qCDebug(orgKdeElisaDatabase) << "transaction failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().driverText(); | ||
1112 | 1091 | | |||
1113 | return result; | 1092 | return result; | ||
1114 | } | 1093 | } | ||
1115 | 1094 | | |||
1116 | result = true; | 1095 | result = true; | ||
1117 | 1096 | | |||
1118 | return result; | 1097 | return result; | ||
1119 | } | 1098 | } | ||
1120 | 1099 | | |||
1121 | bool DatabaseInterface::finishTransaction() const | 1100 | bool DatabaseInterface::finishTransaction() const | ||
1122 | { | 1101 | { | ||
1123 | auto result = false; | 1102 | auto result = false; | ||
1124 | 1103 | | |||
1125 | auto transactionResult = d->mTracksDatabase.commit(); | 1104 | auto transactionResult = d->mTracksDatabase.commit(); | ||
1126 | 1105 | | |||
1127 | if (!transactionResult) { | 1106 | if (!transactionResult) { | ||
1128 | qDebug() << "commit failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().nativeErrorCode(); | 1107 | qCDebug(orgKdeElisaDatabase) << "commit failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().nativeErrorCode(); | ||
1129 | 1108 | | |||
1130 | return result; | 1109 | return result; | ||
1131 | } | 1110 | } | ||
1132 | 1111 | | |||
1133 | result = true; | 1112 | result = true; | ||
1134 | 1113 | | |||
1135 | return result; | 1114 | return result; | ||
1136 | } | 1115 | } | ||
1137 | 1116 | | |||
1138 | bool DatabaseInterface::rollBackTransaction() const | 1117 | bool DatabaseInterface::rollBackTransaction() const | ||
1139 | { | 1118 | { | ||
1140 | auto result = false; | 1119 | auto result = false; | ||
1141 | 1120 | | |||
1142 | auto transactionResult = d->mTracksDatabase.rollback(); | 1121 | auto transactionResult = d->mTracksDatabase.rollback(); | ||
1143 | 1122 | | |||
1144 | if (!transactionResult) { | 1123 | if (!transactionResult) { | ||
1145 | qDebug() << "commit failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().nativeErrorCode(); | 1124 | qCDebug(orgKdeElisaDatabase) << "commit failed" << d->mTracksDatabase.lastError() << d->mTracksDatabase.lastError().nativeErrorCode(); | ||
1146 | 1125 | | |||
1147 | return result; | 1126 | return result; | ||
1148 | } | 1127 | } | ||
1149 | 1128 | | |||
1150 | result = true; | 1129 | result = true; | ||
1151 | 1130 | | |||
1152 | return result; | 1131 | return result; | ||
1153 | } | 1132 | } | ||
Show All 26 Lines | 1158 | if (listTables.indexOf(oneTable) == -1) { | |||
1180 | continue; | 1159 | continue; | ||
1181 | } | 1160 | } | ||
1182 | 1161 | | |||
1183 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1162 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1184 | 1163 | | |||
1185 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE ") + oneTable); | 1164 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE ") + oneTable); | ||
1186 | 1165 | | |||
1187 | if (!result) { | 1166 | if (!result) { | ||
1188 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1167 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1189 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1168 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1190 | 1169 | | |||
1191 | Q_EMIT databaseError(); | 1170 | Q_EMIT databaseError(); | ||
1192 | } | 1171 | } | ||
1193 | } | 1172 | } | ||
1194 | 1173 | | |||
1195 | listTables = d->mTracksDatabase.tables(); | 1174 | listTables = d->mTracksDatabase.tables(); | ||
1196 | } | 1175 | } | ||
1197 | 1176 | | |||
1198 | if (listTables.contains(QStringLiteral("DatabaseVersionV9"))) { | 1177 | if (listTables.contains(QStringLiteral("DatabaseVersionV9"))) { | ||
1199 | if (!listTables.contains(QStringLiteral("DatabaseVersionV11"))) { | 1178 | if (!listTables.contains(QStringLiteral("DatabaseVersionV11"))) { | ||
1200 | upgradeDatabaseV11(); | 1179 | upgradeDatabaseV11(); | ||
1201 | } | 1180 | } | ||
1181 | if (!listTables.contains(QStringLiteral("DatabaseVersionV12"))) { | ||||
1182 | upgradeDatabaseV12(); | ||||
1183 | } | ||||
1202 | } else { | 1184 | } else { | ||
1203 | createDatabaseV9(); | 1185 | createDatabaseV9(); | ||
1204 | upgradeDatabaseV11(); | 1186 | upgradeDatabaseV11(); | ||
1187 | upgradeDatabaseV12(); | ||||
1205 | } | 1188 | } | ||
1206 | } | 1189 | } | ||
1207 | 1190 | | |||
1208 | void DatabaseInterface::createDatabaseV9() | 1191 | void DatabaseInterface::createDatabaseV9() | ||
1209 | { | 1192 | { | ||
1210 | { | 1193 | { | ||
1211 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1194 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1212 | 1195 | | |||
1213 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV9` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | 1196 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV9` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | ||
1214 | 1197 | | |||
1215 | if (!result) { | 1198 | if (!result) { | ||
1216 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1199 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1217 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1200 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1218 | 1201 | | |||
1219 | Q_EMIT databaseError(); | 1202 | Q_EMIT databaseError(); | ||
1220 | } | 1203 | } | ||
1221 | } | 1204 | } | ||
1222 | 1205 | | |||
1223 | { | 1206 | { | ||
1224 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1207 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1225 | 1208 | | |||
1226 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DiscoverSource` (`ID` INTEGER PRIMARY KEY NOT NULL, " | 1209 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DiscoverSource` (`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1227 | "`Name` VARCHAR(55) NOT NULL, " | 1210 | "`Name` VARCHAR(55) NOT NULL, " | ||
1228 | "UNIQUE (`Name`))")); | 1211 | "UNIQUE (`Name`))")); | ||
1229 | 1212 | | |||
1230 | if (!result) { | 1213 | if (!result) { | ||
1231 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1214 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1232 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1215 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1233 | 1216 | | |||
1234 | Q_EMIT databaseError(); | 1217 | Q_EMIT databaseError(); | ||
1235 | } | 1218 | } | ||
1236 | } | 1219 | } | ||
1237 | 1220 | | |||
1238 | { | 1221 | { | ||
1239 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1222 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1240 | 1223 | | |||
1241 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Artists` (`ID` INTEGER PRIMARY KEY NOT NULL, " | 1224 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Artists` (`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1242 | "`Name` VARCHAR(55) NOT NULL, " | 1225 | "`Name` VARCHAR(55) NOT NULL, " | ||
1243 | "UNIQUE (`Name`))")); | 1226 | "UNIQUE (`Name`))")); | ||
1244 | 1227 | | |||
1245 | if (!result) { | 1228 | if (!result) { | ||
1246 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1229 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1247 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1230 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1248 | 1231 | | |||
1249 | Q_EMIT databaseError(); | 1232 | Q_EMIT databaseError(); | ||
1250 | } | 1233 | } | ||
1251 | } | 1234 | } | ||
1252 | 1235 | | |||
1253 | { | 1236 | { | ||
1254 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1237 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1255 | 1238 | | |||
1256 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Composer` (`ID` INTEGER PRIMARY KEY NOT NULL, " | 1239 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Composer` (`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1257 | "`Name` VARCHAR(55) NOT NULL, " | 1240 | "`Name` VARCHAR(55) NOT NULL, " | ||
1258 | "UNIQUE (`Name`))")); | 1241 | "UNIQUE (`Name`))")); | ||
1259 | 1242 | | |||
1260 | if (!result) { | 1243 | if (!result) { | ||
1261 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1244 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1262 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1245 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1263 | 1246 | | |||
1264 | Q_EMIT databaseError(); | 1247 | Q_EMIT databaseError(); | ||
1265 | } | 1248 | } | ||
1266 | } | 1249 | } | ||
1267 | 1250 | | |||
1268 | { | 1251 | { | ||
1269 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1252 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1270 | 1253 | | |||
1271 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Genre` (`ID` INTEGER PRIMARY KEY NOT NULL, " | 1254 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Genre` (`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1272 | "`Name` VARCHAR(85) NOT NULL, " | 1255 | "`Name` VARCHAR(85) NOT NULL, " | ||
1273 | "UNIQUE (`Name`))")); | 1256 | "UNIQUE (`Name`))")); | ||
1274 | 1257 | | |||
1275 | if (!result) { | 1258 | if (!result) { | ||
1276 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1259 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1277 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1260 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1278 | 1261 | | |||
1279 | Q_EMIT databaseError(); | 1262 | Q_EMIT databaseError(); | ||
1280 | } | 1263 | } | ||
1281 | } | 1264 | } | ||
1282 | 1265 | | |||
1283 | { | 1266 | { | ||
1284 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1267 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1285 | 1268 | | |||
1286 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Lyricist` (`ID` INTEGER PRIMARY KEY NOT NULL, " | 1269 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Lyricist` (`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1287 | "`Name` VARCHAR(55) NOT NULL, " | 1270 | "`Name` VARCHAR(55) NOT NULL, " | ||
1288 | "UNIQUE (`Name`))")); | 1271 | "UNIQUE (`Name`))")); | ||
1289 | 1272 | | |||
1290 | if (!result) { | 1273 | if (!result) { | ||
1291 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1274 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1292 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1275 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1293 | 1276 | | |||
1294 | Q_EMIT databaseError(); | 1277 | Q_EMIT databaseError(); | ||
1295 | } | 1278 | } | ||
1296 | } | 1279 | } | ||
1297 | 1280 | | |||
1298 | { | 1281 | { | ||
1299 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1282 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1300 | 1283 | | |||
1301 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Albums` (" | 1284 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Albums` (" | ||
1302 | "`ID` INTEGER PRIMARY KEY NOT NULL, " | 1285 | "`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
1303 | "`Title` VARCHAR(55) NOT NULL, " | 1286 | "`Title` VARCHAR(55) NOT NULL, " | ||
1304 | "`ArtistName` VARCHAR(55), " | 1287 | "`ArtistName` VARCHAR(55), " | ||
1305 | "`AlbumPath` VARCHAR(255) NOT NULL, " | 1288 | "`AlbumPath` VARCHAR(255) NOT NULL, " | ||
1306 | "`CoverFileName` VARCHAR(255) NOT NULL, " | 1289 | "`CoverFileName` VARCHAR(255) NOT NULL, " | ||
1307 | "UNIQUE (`Title`, `ArtistName`, `AlbumPath`), " | 1290 | "UNIQUE (`Title`, `ArtistName`, `AlbumPath`), " | ||
1308 | "CONSTRAINT fk_artists FOREIGN KEY (`ArtistName`) REFERENCES `Artists`(`Name`) " | 1291 | "CONSTRAINT fk_artists FOREIGN KEY (`ArtistName`) REFERENCES `Artists`(`Name`) " | ||
1309 | "ON DELETE CASCADE)")); | 1292 | "ON DELETE CASCADE)")); | ||
1310 | 1293 | | |||
1311 | if (!result) { | 1294 | if (!result) { | ||
1312 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1295 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1313 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1296 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1314 | } | 1297 | } | ||
1315 | } | 1298 | } | ||
1316 | 1299 | | |||
1317 | { | 1300 | { | ||
1318 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1301 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1319 | 1302 | | |||
1320 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Tracks` (" | 1303 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `Tracks` (" | ||
1321 | "`ID` INTEGER PRIMARY KEY NOT NULL, " | 1304 | "`ID` INTEGER PRIMARY KEY NOT NULL, " | ||
Show All 27 Lines | |||||
1349 | "CONSTRAINT fk_tracks_composer FOREIGN KEY (`Composer`) REFERENCES `Composer`(`Name`), " | 1332 | "CONSTRAINT fk_tracks_composer FOREIGN KEY (`Composer`) REFERENCES `Composer`(`Name`), " | ||
1350 | "CONSTRAINT fk_tracks_lyricist FOREIGN KEY (`Lyricist`) REFERENCES `Lyricist`(`Name`), " | 1333 | "CONSTRAINT fk_tracks_lyricist FOREIGN KEY (`Lyricist`) REFERENCES `Lyricist`(`Name`), " | ||
1351 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`), " | 1334 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`), " | ||
1352 | "CONSTRAINT fk_tracks_album FOREIGN KEY (" | 1335 | "CONSTRAINT fk_tracks_album FOREIGN KEY (" | ||
1353 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)" | 1336 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)" | ||
1354 | "REFERENCES `Albums`(`Title`, `ArtistName`, `AlbumPath`))")); | 1337 | "REFERENCES `Albums`(`Title`, `ArtistName`, `AlbumPath`))")); | ||
1355 | 1338 | | |||
1356 | if (!result) { | 1339 | if (!result) { | ||
1357 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1340 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1358 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1341 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1359 | 1342 | | |||
1360 | Q_EMIT databaseError(); | 1343 | Q_EMIT databaseError(); | ||
1361 | } | 1344 | } | ||
1362 | } | 1345 | } | ||
1363 | 1346 | | |||
1364 | { | 1347 | { | ||
1365 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1348 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1366 | 1349 | | |||
1367 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `TracksMapping` (" | 1350 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `TracksMapping` (" | ||
1368 | "`TrackID` INTEGER NULL, " | 1351 | "`TrackID` INTEGER NULL, " | ||
1369 | "`DiscoverID` INTEGER NOT NULL, " | 1352 | "`DiscoverID` INTEGER NOT NULL, " | ||
1370 | "`FileName` VARCHAR(255) NOT NULL, " | 1353 | "`FileName` VARCHAR(255) NOT NULL, " | ||
1371 | "`Priority` INTEGER NOT NULL, " | 1354 | "`Priority` INTEGER NOT NULL, " | ||
1372 | "`FileModifiedTime` DATETIME NOT NULL, " | 1355 | "`FileModifiedTime` DATETIME NOT NULL, " | ||
1373 | "PRIMARY KEY (`FileName`), " | 1356 | "PRIMARY KEY (`FileName`), " | ||
1374 | "CONSTRAINT TracksUnique UNIQUE (`TrackID`, `Priority`), " | 1357 | "CONSTRAINT TracksUnique UNIQUE (`TrackID`, `Priority`), " | ||
1375 | "CONSTRAINT fk_tracksmapping_trackID FOREIGN KEY (`TrackID`) REFERENCES `Tracks`(`ID`) ON DELETE CASCADE, " | 1358 | "CONSTRAINT fk_tracksmapping_trackID FOREIGN KEY (`TrackID`) REFERENCES `Tracks`(`ID`) ON DELETE CASCADE, " | ||
1376 | "CONSTRAINT fk_tracksmapping_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`))")); | 1359 | "CONSTRAINT fk_tracksmapping_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`))")); | ||
1377 | 1360 | | |||
1378 | if (!result) { | 1361 | if (!result) { | ||
1379 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1362 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1380 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1363 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1381 | } | 1364 | } | ||
1382 | } | 1365 | } | ||
1383 | 1366 | | |||
1384 | { | 1367 | { | ||
1385 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1368 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1386 | 1369 | | |||
1387 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1370 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1388 | "IF NOT EXISTS " | 1371 | "IF NOT EXISTS " | ||
1389 | "`TitleAlbumsIndex` ON `Albums` " | 1372 | "`TitleAlbumsIndex` ON `Albums` " | ||
1390 | "(`Title`)")); | 1373 | "(`Title`)")); | ||
1391 | 1374 | | |||
1392 | if (!result) { | 1375 | if (!result) { | ||
1393 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1376 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1394 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1377 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1395 | 1378 | | |||
1396 | Q_EMIT databaseError(); | 1379 | Q_EMIT databaseError(); | ||
1397 | } | 1380 | } | ||
1398 | } | 1381 | } | ||
1399 | 1382 | | |||
1400 | { | 1383 | { | ||
1401 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1384 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1402 | 1385 | | |||
1403 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1386 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1404 | "IF NOT EXISTS " | 1387 | "IF NOT EXISTS " | ||
1405 | "`ArtistNameAlbumsIndex` ON `Albums` " | 1388 | "`ArtistNameAlbumsIndex` ON `Albums` " | ||
1406 | "(`ArtistName`)")); | 1389 | "(`ArtistName`)")); | ||
1407 | 1390 | | |||
1408 | if (!result) { | 1391 | if (!result) { | ||
1409 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1392 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1410 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1393 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1411 | 1394 | | |||
1412 | Q_EMIT databaseError(); | 1395 | Q_EMIT databaseError(); | ||
1413 | } | 1396 | } | ||
1414 | } | 1397 | } | ||
1415 | 1398 | | |||
1416 | { | 1399 | { | ||
1417 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1400 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1418 | 1401 | | |||
1419 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1402 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1420 | "IF NOT EXISTS " | 1403 | "IF NOT EXISTS " | ||
1421 | "`TracksAlbumIndex` ON `Tracks` " | 1404 | "`TracksAlbumIndex` ON `Tracks` " | ||
1422 | "(`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | 1405 | "(`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||
1423 | 1406 | | |||
1424 | if (!result) { | 1407 | if (!result) { | ||
1425 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1408 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1426 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1409 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1427 | 1410 | | |||
1428 | Q_EMIT databaseError(); | 1411 | Q_EMIT databaseError(); | ||
1429 | } | 1412 | } | ||
1430 | } | 1413 | } | ||
1431 | 1414 | | |||
1432 | { | 1415 | { | ||
1433 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1416 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1434 | 1417 | | |||
1435 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1418 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1436 | "IF NOT EXISTS " | 1419 | "IF NOT EXISTS " | ||
1437 | "`ArtistNameIndex` ON `Tracks` " | 1420 | "`ArtistNameIndex` ON `Tracks` " | ||
1438 | "(`ArtistName`)")); | 1421 | "(`ArtistName`)")); | ||
1439 | 1422 | | |||
1440 | if (!result) { | 1423 | if (!result) { | ||
1441 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1424 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1442 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1425 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1443 | 1426 | | |||
1444 | Q_EMIT databaseError(); | 1427 | Q_EMIT databaseError(); | ||
1445 | } | 1428 | } | ||
1446 | } | 1429 | } | ||
1447 | 1430 | | |||
1448 | { | 1431 | { | ||
1449 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1432 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1450 | 1433 | | |||
1451 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1434 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1452 | "IF NOT EXISTS " | 1435 | "IF NOT EXISTS " | ||
1453 | "`AlbumArtistNameIndex` ON `Tracks` " | 1436 | "`AlbumArtistNameIndex` ON `Tracks` " | ||
1454 | "(`AlbumArtistName`)")); | 1437 | "(`AlbumArtistName`)")); | ||
1455 | 1438 | | |||
1456 | if (!result) { | 1439 | if (!result) { | ||
1457 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1440 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1458 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1441 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1459 | 1442 | | |||
1460 | Q_EMIT databaseError(); | 1443 | Q_EMIT databaseError(); | ||
1461 | } | 1444 | } | ||
1462 | } | 1445 | } | ||
1463 | 1446 | | |||
1464 | { | 1447 | { | ||
1465 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 1448 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1466 | 1449 | | |||
1467 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 1450 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1468 | "IF NOT EXISTS " | 1451 | "IF NOT EXISTS " | ||
1469 | "`TracksFileNameIndex` ON `TracksMapping` " | 1452 | "`TracksFileNameIndex` ON `TracksMapping` " | ||
1470 | "(`FileName`)")); | 1453 | "(`FileName`)")); | ||
1471 | 1454 | | |||
1472 | if (!result) { | 1455 | if (!result) { | ||
1473 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 1456 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1474 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 1457 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1475 | 1458 | | |||
1476 | Q_EMIT databaseError(); | 1459 | Q_EMIT databaseError(); | ||
1477 | } | 1460 | } | ||
1478 | } | 1461 | } | ||
1479 | } | 1462 | } | ||
1480 | 1463 | | |||
1481 | void DatabaseInterface::upgradeDatabaseV11() | 1464 | void DatabaseInterface::upgradeDatabaseV11() | ||
1482 | { | 1465 | { | ||
1483 | qDebug() << "begin update to v11 of database schema"; | 1466 | qCDebug(orgKdeElisaDatabase) << "begin update to v11 of database schema"; | ||
1484 | 1467 | | |||
1485 | { | 1468 | { | ||
1486 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1469 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1487 | 1470 | | |||
1488 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV11` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | 1471 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV11` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | ||
1489 | 1472 | | |||
1490 | if (!result) { | 1473 | if (!result) { | ||
1491 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1474 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1492 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1475 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1493 | 1476 | | |||
1494 | Q_EMIT databaseError(); | 1477 | Q_EMIT databaseError(); | ||
1495 | } | 1478 | } | ||
1496 | } | 1479 | } | ||
1497 | 1480 | | |||
1498 | { | 1481 | { | ||
1499 | QSqlQuery disableForeignKeys(d->mTracksDatabase); | 1482 | QSqlQuery disableForeignKeys(d->mTracksDatabase); | ||
1500 | 1483 | | |||
1501 | auto result = disableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=OFF")); | 1484 | auto result = disableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=OFF")); | ||
1502 | 1485 | | |||
1503 | if (!result) { | 1486 | if (!result) { | ||
1504 | qDebug() << "DatabaseInterface::initDatabase" << disableForeignKeys.lastQuery(); | 1487 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << disableForeignKeys.lastQuery(); | ||
1505 | qDebug() << "DatabaseInterface::initDatabase" << disableForeignKeys.lastError(); | 1488 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << disableForeignKeys.lastError(); | ||
1506 | 1489 | | |||
1507 | Q_EMIT databaseError(); | 1490 | Q_EMIT databaseError(); | ||
1508 | } | 1491 | } | ||
1509 | } | 1492 | } | ||
1510 | 1493 | | |||
1511 | d->mTracksDatabase.transaction(); | 1494 | d->mTracksDatabase.transaction(); | ||
1512 | 1495 | | |||
1513 | { | 1496 | { | ||
1514 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1497 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1515 | 1498 | | |||
1516 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `TracksData` (" | 1499 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `TracksData` (" | ||
1517 | "`DiscoverID` INTEGER NOT NULL, " | 1500 | "`DiscoverID` INTEGER NOT NULL, " | ||
1518 | "`FileName` VARCHAR(255) NOT NULL, " | 1501 | "`FileName` VARCHAR(255) NOT NULL, " | ||
1519 | "`FileModifiedTime` DATETIME NOT NULL, " | 1502 | "`FileModifiedTime` DATETIME NOT NULL, " | ||
1520 | "`ImportDate` INTEGER NOT NULL, " | 1503 | "`ImportDate` INTEGER NOT NULL, " | ||
1521 | "`FirstPlayDate` INTEGER, " | 1504 | "`FirstPlayDate` INTEGER, " | ||
1522 | "`LastPlayDate` INTEGER, " | 1505 | "`LastPlayDate` INTEGER, " | ||
1523 | "`PlayCounter` INTEGER NOT NULL, " | 1506 | "`PlayCounter` INTEGER NOT NULL, " | ||
1524 | "PRIMARY KEY (`FileName`, `DiscoverID`), " | 1507 | "PRIMARY KEY (`FileName`, `DiscoverID`), " | ||
1525 | "CONSTRAINT fk_tracksmapping_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`))")); | 1508 | "CONSTRAINT fk_tracksmapping_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`))")); | ||
1526 | 1509 | | |||
1527 | if (!result) { | 1510 | if (!result) { | ||
1528 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1511 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1529 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1512 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1530 | } | 1513 | } | ||
1531 | } | 1514 | } | ||
1532 | 1515 | | |||
1533 | { | 1516 | { | ||
1534 | QSqlQuery copyDataQuery(d->mTracksDatabase); | 1517 | QSqlQuery copyDataQuery(d->mTracksDatabase); | ||
1535 | 1518 | | |||
1536 | auto result = copyDataQuery.exec(QStringLiteral("INSERT INTO `TracksData` " | 1519 | auto result = copyDataQuery.exec(QStringLiteral("INSERT INTO `TracksData` " | ||
1537 | "SELECT " | 1520 | "SELECT " | ||
1538 | "m.`DiscoverID`, " | 1521 | "m.`DiscoverID`, " | ||
1539 | "m.`FileName`, " | 1522 | "m.`FileName`, " | ||
1540 | "m.`FileModifiedTime`, " | 1523 | "m.`FileModifiedTime`, " | ||
1541 | "t.`ImportDate`, " | 1524 | "t.`ImportDate`, " | ||
1542 | "t.`FirstPlayDate`, " | 1525 | "t.`FirstPlayDate`, " | ||
1543 | "t.`LastPlayDate`, " | 1526 | "t.`LastPlayDate`, " | ||
1544 | "t.`PlayCounter` " | 1527 | "t.`PlayCounter` " | ||
1545 | "FROM " | 1528 | "FROM " | ||
1546 | "`Tracks` t, " | 1529 | "`Tracks` t, " | ||
1547 | "`TracksMapping` m " | 1530 | "`TracksMapping` m " | ||
1548 | "WHERE " | 1531 | "WHERE " | ||
1549 | "t.`ID` = m.`TrackID`")); | 1532 | "t.`ID` = m.`TrackID`")); | ||
1550 | 1533 | | |||
1551 | if (!result) { | 1534 | if (!result) { | ||
1552 | qDebug() << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | 1535 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | ||
1553 | qDebug() << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | 1536 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | ||
1554 | 1537 | | |||
1555 | Q_EMIT databaseError(); | 1538 | Q_EMIT databaseError(); | ||
1556 | } | 1539 | } | ||
1557 | } | 1540 | } | ||
1558 | 1541 | | |||
1559 | { | 1542 | { | ||
1560 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1543 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1561 | 1544 | | |||
Show All 34 Lines | 1545 | auto result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `NewTracks` (" | |||
1596 | "CONSTRAINT fk_tracks_lyricist FOREIGN KEY (`Lyricist`) REFERENCES `Lyricist`(`Name`), " | 1579 | "CONSTRAINT fk_tracks_lyricist FOREIGN KEY (`Lyricist`) REFERENCES `Lyricist`(`Name`), " | ||
1597 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`), " | 1580 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`), " | ||
1598 | "CONSTRAINT fk_tracks_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`)" | 1581 | "CONSTRAINT fk_tracks_discoverID FOREIGN KEY (`DiscoverID`) REFERENCES `DiscoverSource`(`ID`)" | ||
1599 | "CONSTRAINT fk_tracks_album FOREIGN KEY (" | 1582 | "CONSTRAINT fk_tracks_album FOREIGN KEY (" | ||
1600 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)" | 1583 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)" | ||
1601 | "REFERENCES `Albums`(`Title`, `ArtistName`, `AlbumPath`))")); | 1584 | "REFERENCES `Albums`(`Title`, `ArtistName`, `AlbumPath`))")); | ||
1602 | 1585 | | |||
1603 | if (!result) { | 1586 | if (!result) { | ||
1604 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1587 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1605 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1588 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1606 | 1589 | | |||
1607 | Q_EMIT databaseError(); | 1590 | Q_EMIT databaseError(); | ||
1608 | } | 1591 | } | ||
1609 | } | 1592 | } | ||
1610 | 1593 | | |||
1611 | { | 1594 | { | ||
1612 | QSqlQuery copyDataQuery(d->mTracksDatabase); | 1595 | QSqlQuery copyDataQuery(d->mTracksDatabase); | ||
1613 | 1596 | | |||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 1597 | auto result = copyDataQuery.exec(QStringLiteral("INSERT OR IGNORE INTO `NewTracks` " | |||
1659 | "t.`HasEmbeddedCover` " | 1642 | "t.`HasEmbeddedCover` " | ||
1660 | "FROM " | 1643 | "FROM " | ||
1661 | "`Tracks` t, " | 1644 | "`Tracks` t, " | ||
1662 | "`TracksMapping` m " | 1645 | "`TracksMapping` m " | ||
1663 | "WHERE " | 1646 | "WHERE " | ||
1664 | "t.`ID` = m.`TrackID`")); | 1647 | "t.`ID` = m.`TrackID`")); | ||
1665 | 1648 | | |||
1666 | if (!result) { | 1649 | if (!result) { | ||
1667 | qDebug() << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | 1650 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | ||
1668 | qDebug() << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | 1651 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | ||
1669 | 1652 | | |||
1670 | Q_EMIT databaseError(); | 1653 | Q_EMIT databaseError(); | ||
1671 | } | 1654 | } | ||
1672 | } | 1655 | } | ||
1673 | 1656 | | |||
1674 | { | 1657 | { | ||
1675 | QSqlQuery updateDataQuery(d->mTracksDatabase); | 1658 | QSqlQuery updateDataQuery(d->mTracksDatabase); | ||
1676 | 1659 | | |||
1677 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | 1660 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | ||
1678 | "SET " | 1661 | "SET " | ||
1679 | "`TrackNumber` = NULL " | 1662 | "`TrackNumber` = NULL " | ||
1680 | "WHERE " | 1663 | "WHERE " | ||
1681 | "`TrackNumber` = -1")); | 1664 | "`TrackNumber` = -1")); | ||
1682 | 1665 | | |||
1683 | if (!result) { | 1666 | if (!result) { | ||
1684 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | 1667 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | ||
1685 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | 1668 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | ||
1686 | 1669 | | |||
1687 | Q_EMIT databaseError(); | 1670 | Q_EMIT databaseError(); | ||
1688 | } | 1671 | } | ||
1689 | } | 1672 | } | ||
1690 | 1673 | | |||
1691 | { | 1674 | { | ||
1692 | QSqlQuery updateDataQuery(d->mTracksDatabase); | 1675 | QSqlQuery updateDataQuery(d->mTracksDatabase); | ||
1693 | 1676 | | |||
1694 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | 1677 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | ||
1695 | "SET " | 1678 | "SET " | ||
1696 | "`Channels` = NULL " | 1679 | "`Channels` = NULL " | ||
1697 | "WHERE " | 1680 | "WHERE " | ||
1698 | "`Channels` = -1")); | 1681 | "`Channels` = -1")); | ||
1699 | 1682 | | |||
1700 | if (!result) { | 1683 | if (!result) { | ||
1701 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | 1684 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | ||
1702 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | 1685 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | ||
1703 | 1686 | | |||
1704 | Q_EMIT databaseError(); | 1687 | Q_EMIT databaseError(); | ||
1705 | } | 1688 | } | ||
1706 | } | 1689 | } | ||
1707 | 1690 | | |||
1708 | { | 1691 | { | ||
1709 | QSqlQuery updateDataQuery(d->mTracksDatabase); | 1692 | QSqlQuery updateDataQuery(d->mTracksDatabase); | ||
1710 | 1693 | | |||
1711 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | 1694 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | ||
1712 | "SET " | 1695 | "SET " | ||
1713 | "`BitRate` = NULL " | 1696 | "`BitRate` = NULL " | ||
1714 | "WHERE " | 1697 | "WHERE " | ||
1715 | "`BitRate` = -1")); | 1698 | "`BitRate` = -1")); | ||
1716 | 1699 | | |||
1717 | if (!result) { | 1700 | if (!result) { | ||
1718 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | 1701 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | ||
1719 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | 1702 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | ||
1720 | 1703 | | |||
1721 | Q_EMIT databaseError(); | 1704 | Q_EMIT databaseError(); | ||
1722 | } | 1705 | } | ||
1723 | } | 1706 | } | ||
1724 | 1707 | | |||
1725 | { | 1708 | { | ||
1726 | QSqlQuery updateDataQuery(d->mTracksDatabase); | 1709 | QSqlQuery updateDataQuery(d->mTracksDatabase); | ||
1727 | 1710 | | |||
1728 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | 1711 | auto result = updateDataQuery.exec(QStringLiteral("UPDATE `NewTracks` " | ||
1729 | "SET " | 1712 | "SET " | ||
1730 | "`SampleRate` = NULL " | 1713 | "`SampleRate` = NULL " | ||
1731 | "WHERE " | 1714 | "WHERE " | ||
1732 | "`SampleRate` = -1")); | 1715 | "`SampleRate` = -1")); | ||
1733 | 1716 | | |||
1734 | if (!result) { | 1717 | if (!result) { | ||
1735 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | 1718 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastQuery(); | ||
1736 | qDebug() << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | 1719 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << updateDataQuery.lastError(); | ||
1737 | 1720 | | |||
1738 | Q_EMIT databaseError(); | 1721 | Q_EMIT databaseError(); | ||
1739 | } | 1722 | } | ||
1740 | } | 1723 | } | ||
1741 | 1724 | | |||
1742 | { | 1725 | { | ||
1743 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1726 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1744 | 1727 | | |||
1745 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `Tracks`")); | 1728 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `Tracks`")); | ||
1746 | 1729 | | |||
1747 | if (!result) { | 1730 | if (!result) { | ||
1748 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1731 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1749 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1732 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1750 | 1733 | | |||
1751 | Q_EMIT databaseError(); | 1734 | Q_EMIT databaseError(); | ||
1752 | } | 1735 | } | ||
1753 | } | 1736 | } | ||
1754 | 1737 | | |||
1755 | { | 1738 | { | ||
1756 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 1739 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1757 | 1740 | | |||
1758 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `TracksMapping`")); | 1741 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `TracksMapping`")); | ||
1759 | 1742 | | |||
1760 | if (!result) { | 1743 | if (!result) { | ||
1761 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 1744 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1762 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 1745 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1746 | | ||||
1747 | Q_EMIT databaseError(); | ||||
1748 | } | ||||
1749 | } | ||||
1750 | | ||||
1751 | { | ||||
1752 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
1753 | | ||||
1754 | auto result = createSchemaQuery.exec(QStringLiteral("ALTER TABLE `NewTracks` RENAME TO `Tracks`")); | ||||
1755 | | ||||
1756 | if (!result) { | ||||
1757 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
1758 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
1759 | | ||||
1760 | Q_EMIT databaseError(); | ||||
1761 | } | ||||
1762 | } | ||||
1763 | | ||||
1764 | d->mTracksDatabase.commit(); | ||||
1765 | | ||||
1766 | { | ||||
1767 | QSqlQuery enableForeignKeys(d->mTracksDatabase); | ||||
1768 | | ||||
1769 | auto result = enableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=ON")); | ||||
1770 | | ||||
1771 | if (!result) { | ||||
1772 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << enableForeignKeys.lastQuery(); | ||||
1773 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << enableForeignKeys.lastError(); | ||||
1774 | | ||||
1775 | Q_EMIT databaseError(); | ||||
1776 | } | ||||
1777 | } | ||||
1778 | | ||||
1779 | { | ||||
1780 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1781 | | ||||
1782 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1783 | "IF NOT EXISTS " | ||||
1784 | "`TracksAlbumIndex` ON `Tracks` " | ||||
1785 | "(`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||||
1786 | | ||||
1787 | if (!result) { | ||||
1788 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1789 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1790 | | ||||
1791 | Q_EMIT databaseError(); | ||||
1792 | } | ||||
1793 | } | ||||
1794 | | ||||
1795 | { | ||||
1796 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1797 | | ||||
1798 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1799 | "IF NOT EXISTS " | ||||
1800 | "`ArtistNameIndex` ON `Tracks` " | ||||
1801 | "(`ArtistName`)")); | ||||
1802 | | ||||
1803 | if (!result) { | ||||
1804 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1805 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1806 | | ||||
1807 | Q_EMIT databaseError(); | ||||
1808 | } | ||||
1809 | } | ||||
1810 | | ||||
1811 | { | ||||
1812 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1813 | | ||||
1814 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1815 | "IF NOT EXISTS " | ||||
1816 | "`AlbumArtistNameIndex` ON `Tracks` " | ||||
1817 | "(`AlbumArtistName`)")); | ||||
1818 | | ||||
1819 | if (!result) { | ||||
1820 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1821 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1822 | | ||||
1823 | Q_EMIT databaseError(); | ||||
1824 | } | ||||
1825 | } | ||||
1826 | | ||||
1827 | { | ||||
1828 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1829 | | ||||
1830 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1831 | "IF NOT EXISTS " | ||||
1832 | "`TracksUniqueData` ON `Tracks` " | ||||
1833 | "(`Title`, `ArtistName`, " | ||||
1834 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||||
1835 | | ||||
1836 | if (!result) { | ||||
1837 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1838 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1839 | | ||||
1840 | Q_EMIT databaseError(); | ||||
1841 | } | ||||
1842 | } | ||||
1843 | | ||||
1844 | { | ||||
1845 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1846 | | ||||
1847 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1848 | "IF NOT EXISTS " | ||||
1849 | "`TracksUniqueDataPriority` ON `Tracks` " | ||||
1850 | "(`Priority`, `Title`, `ArtistName`, " | ||||
1851 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||||
1852 | | ||||
1853 | if (!result) { | ||||
1854 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1855 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1856 | | ||||
1857 | Q_EMIT databaseError(); | ||||
1858 | } | ||||
1859 | } | ||||
1860 | | ||||
1861 | { | ||||
1862 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||||
1863 | | ||||
1864 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||||
1865 | "IF NOT EXISTS " | ||||
1866 | "`TracksFileNameIndex` ON `Tracks` " | ||||
1867 | "(`FileName`)")); | ||||
1868 | | ||||
1869 | if (!result) { | ||||
1870 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||||
1871 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||||
1872 | | ||||
1873 | Q_EMIT databaseError(); | ||||
1874 | } | ||||
1875 | } | ||||
1876 | | ||||
1877 | qCDebug(orgKdeElisaDatabase) << "finished update to v11 of database schema"; | ||||
1878 | } | ||||
1879 | | ||||
1880 | void DatabaseInterface::upgradeDatabaseV12() | ||||
1881 | { | ||||
1882 | qCDebug(orgKdeElisaDatabase) << "begin update to v12 of database schema"; | ||||
1883 | | ||||
1884 | { | ||||
1885 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
1886 | | ||||
1887 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `DatabaseVersionV12` (`Version` INTEGER PRIMARY KEY NOT NULL)")); | ||||
1888 | | ||||
1889 | if (!result) { | ||||
1890 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
1891 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
1892 | | ||||
1893 | Q_EMIT databaseError(); | ||||
1894 | } | ||||
1895 | } | ||||
1896 | | ||||
1897 | { | ||||
1898 | QSqlQuery disableForeignKeys(d->mTracksDatabase); | ||||
1899 | | ||||
1900 | auto result = disableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=OFF")); | ||||
1901 | | ||||
1902 | if (!result) { | ||||
1903 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << disableForeignKeys.lastQuery(); | ||||
1904 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << disableForeignKeys.lastError(); | ||||
1905 | | ||||
1906 | Q_EMIT databaseError(); | ||||
1907 | } | ||||
1908 | } | ||||
1909 | | ||||
1910 | d->mTracksDatabase.transaction(); | ||||
1911 | | ||||
1912 | { | ||||
1913 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
1914 | | ||||
1915 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `NewTracks` (" | ||||
1916 | "`ID` INTEGER PRIMARY KEY AUTOINCREMENT, " | ||||
1917 | "`FileName` VARCHAR(255) NOT NULL, " | ||||
1918 | "`Priority` INTEGER NOT NULL, " | ||||
1919 | "`Title` VARCHAR(85) NOT NULL, " | ||||
1920 | "`ArtistName` VARCHAR(55), " | ||||
1921 | "`AlbumTitle` VARCHAR(55), " | ||||
1922 | "`AlbumArtistName` VARCHAR(55), " | ||||
1923 | "`AlbumPath` VARCHAR(255), " | ||||
1924 | "`TrackNumber` INTEGER, " | ||||
1925 | "`DiscNumber` INTEGER, " | ||||
1926 | "`Duration` INTEGER NOT NULL, " | ||||
1927 | "`Rating` INTEGER NOT NULL DEFAULT 0, " | ||||
1928 | "`Genre` VARCHAR(55), " | ||||
1929 | "`Composer` VARCHAR(55), " | ||||
1930 | "`Lyricist` VARCHAR(55), " | ||||
1931 | "`Comment` VARCHAR(255), " | ||||
1932 | "`Year` INTEGER, " | ||||
1933 | "`Channels` INTEGER, " | ||||
1934 | "`BitRate` INTEGER, " | ||||
1935 | "`SampleRate` INTEGER, " | ||||
1936 | "`HasEmbeddedCover` BOOLEAN NOT NULL, " | ||||
1937 | "UNIQUE (" | ||||
1938 | "`FileName`" | ||||
1939 | "), " | ||||
1940 | "UNIQUE (" | ||||
1941 | "`Priority`, `Title`, `ArtistName`, " | ||||
1942 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`" | ||||
1943 | "), " | ||||
1944 | "CONSTRAINT fk_fileName FOREIGN KEY (`FileName`) " | ||||
1945 | "REFERENCES `TracksData`(`FileName`) ON DELETE CASCADE, " | ||||
1946 | "CONSTRAINT fk_artist FOREIGN KEY (`ArtistName`) REFERENCES `Artists`(`Name`), " | ||||
1947 | "CONSTRAINT fk_tracks_composer FOREIGN KEY (`Composer`) REFERENCES `Composer`(`Name`), " | ||||
1948 | "CONSTRAINT fk_tracks_lyricist FOREIGN KEY (`Lyricist`) REFERENCES `Lyricist`(`Name`), " | ||||
1949 | "CONSTRAINT fk_tracks_genre FOREIGN KEY (`Genre`) REFERENCES `Genre`(`Name`), " | ||||
1950 | "CONSTRAINT fk_tracks_album FOREIGN KEY (" | ||||
1951 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)" | ||||
1952 | "REFERENCES `Albums`(`Title`, `ArtistName`, `AlbumPath`))")); | ||||
1953 | | ||||
1954 | if (!result) { | ||||
1955 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
1956 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
1957 | } | ||||
1958 | } | ||||
1959 | | ||||
1960 | { | ||||
1961 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
1962 | | ||||
1963 | const auto &result = createSchemaQuery.exec(QStringLiteral("CREATE TABLE `NewTracksData` (" | ||||
1964 | "`FileName` VARCHAR(255) NOT NULL, " | ||||
1965 | "`FileModifiedTime` DATETIME NOT NULL, " | ||||
1966 | "`ImportDate` INTEGER NOT NULL, " | ||||
1967 | "`FirstPlayDate` INTEGER, " | ||||
1968 | "`LastPlayDate` INTEGER, " | ||||
1969 | "`PlayCounter` INTEGER NOT NULL, " | ||||
1970 | "PRIMARY KEY (`FileName`))")); | ||||
1971 | | ||||
1972 | if (!result) { | ||||
1973 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
1974 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
1975 | } | ||||
1976 | } | ||||
1977 | | ||||
1978 | { | ||||
1979 | QSqlQuery copyDataQuery(d->mTracksDatabase); | ||||
1980 | | ||||
1981 | auto result = copyDataQuery.exec(QStringLiteral("INSERT INTO `NewTracksData` " | ||||
1982 | "SELECT " | ||||
1983 | "td.`FileName`, " | ||||
1984 | "td.`FileModifiedTime`, " | ||||
1985 | "td.`ImportDate`, " | ||||
1986 | "td.`FirstPlayDate`, " | ||||
1987 | "td.`LastPlayDate`, " | ||||
1988 | "td.`PlayCounter` " | ||||
1989 | "FROM " | ||||
1990 | "`TracksData` td")); | ||||
1991 | | ||||
1992 | if (!result) { | ||||
1993 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | ||||
1994 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | ||||
1995 | | ||||
1996 | Q_EMIT databaseError(); | ||||
1997 | } | ||||
1998 | } | ||||
1999 | | ||||
2000 | { | ||||
2001 | QSqlQuery copyDataQuery(d->mTracksDatabase); | ||||
2002 | | ||||
2003 | auto result = copyDataQuery.exec(QStringLiteral("INSERT INTO `NewTracks` " | ||||
2004 | "SELECT " | ||||
2005 | "t.`ID`, " | ||||
2006 | "t.`FileName`, " | ||||
2007 | "t.`Priority`, " | ||||
2008 | "t.`Title`, " | ||||
2009 | "t.`ArtistName`, " | ||||
2010 | "t.`AlbumTitle`, " | ||||
2011 | "t.`AlbumArtistName`, " | ||||
2012 | "t.`AlbumPath`, " | ||||
2013 | "t.`TrackNumber`, " | ||||
2014 | "t.`DiscNumber`, " | ||||
2015 | "t.`Duration`, " | ||||
2016 | "t.`Rating`, " | ||||
2017 | "t.`Genre`, " | ||||
2018 | "t.`Composer`, " | ||||
2019 | "t.`Lyricist`, " | ||||
2020 | "t.`Comment`, " | ||||
2021 | "t.`Year`, " | ||||
2022 | "t.`Channels`, " | ||||
2023 | "t.`BitRate`, " | ||||
2024 | "t.`SampleRate`, " | ||||
2025 | "t.`HasEmbeddedCover` " | ||||
2026 | "FROM " | ||||
2027 | "`Tracks` t")); | ||||
2028 | | ||||
2029 | if (!result) { | ||||
2030 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastQuery(); | ||||
2031 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << copyDataQuery.lastError(); | ||||
2032 | | ||||
2033 | Q_EMIT databaseError(); | ||||
2034 | } | ||||
2035 | } | ||||
2036 | | ||||
2037 | { | ||||
2038 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2039 | | ||||
2040 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `TracksData`")); | ||||
2041 | | ||||
2042 | if (!result) { | ||||
2043 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
2044 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
2045 | | ||||
2046 | Q_EMIT databaseError(); | ||||
2047 | } | ||||
2048 | } | ||||
2049 | | ||||
2050 | { | ||||
2051 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2052 | | ||||
2053 | auto result = createSchemaQuery.exec(QStringLiteral("DROP TABLE `Tracks`")); | ||||
2054 | | ||||
2055 | if (!result) { | ||||
2056 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
2057 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
2058 | | ||||
2059 | Q_EMIT databaseError(); | ||||
2060 | } | ||||
2061 | } | ||||
2062 | | ||||
2063 | { | ||||
2064 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||||
2065 | | ||||
2066 | auto result = createSchemaQuery.exec(QStringLiteral("ALTER TABLE `NewTracksData` RENAME TO `TracksData`")); | ||||
2067 | | ||||
2068 | if (!result) { | ||||
2069 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||||
2070 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||||
1763 | 2071 | | |||
1764 | Q_EMIT databaseError(); | 2072 | Q_EMIT databaseError(); | ||
1765 | } | 2073 | } | ||
1766 | } | 2074 | } | ||
1767 | 2075 | | |||
1768 | { | 2076 | { | ||
1769 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | 2077 | QSqlQuery createSchemaQuery(d->mTracksDatabase); | ||
1770 | 2078 | | |||
1771 | auto result = createSchemaQuery.exec(QStringLiteral("ALTER TABLE `NewTracks` RENAME TO `Tracks`")); | 2079 | auto result = createSchemaQuery.exec(QStringLiteral("ALTER TABLE `NewTracks` RENAME TO `Tracks`")); | ||
1772 | 2080 | | |||
1773 | if (!result) { | 2081 | if (!result) { | ||
1774 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | 2082 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastQuery(); | ||
1775 | qDebug() << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | 2083 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createSchemaQuery.lastError(); | ||
1776 | 2084 | | |||
1777 | Q_EMIT databaseError(); | 2085 | Q_EMIT databaseError(); | ||
1778 | } | 2086 | } | ||
1779 | } | 2087 | } | ||
1780 | 2088 | | |||
1781 | d->mTracksDatabase.commit(); | 2089 | d->mTracksDatabase.commit(); | ||
1782 | 2090 | | |||
1783 | { | 2091 | { | ||
1784 | QSqlQuery enableForeignKeys(d->mTracksDatabase); | 2092 | QSqlQuery enableForeignKeys(d->mTracksDatabase); | ||
1785 | 2093 | | |||
1786 | auto result = enableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=ON")); | 2094 | auto result = enableForeignKeys.exec(QStringLiteral(" PRAGMA foreign_keys=ON")); | ||
1787 | 2095 | | |||
1788 | if (!result) { | 2096 | if (!result) { | ||
1789 | qDebug() << "DatabaseInterface::initDatabase" << enableForeignKeys.lastQuery(); | 2097 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << enableForeignKeys.lastQuery(); | ||
1790 | qDebug() << "DatabaseInterface::initDatabase" << enableForeignKeys.lastError(); | 2098 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << enableForeignKeys.lastError(); | ||
1791 | 2099 | | |||
1792 | Q_EMIT databaseError(); | 2100 | Q_EMIT databaseError(); | ||
1793 | } | 2101 | } | ||
1794 | } | 2102 | } | ||
1795 | 2103 | | |||
1796 | { | 2104 | { | ||
1797 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2105 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1798 | 2106 | | |||
1799 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2107 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1800 | "IF NOT EXISTS " | 2108 | "IF NOT EXISTS " | ||
1801 | "`TracksAlbumIndex` ON `Tracks` " | 2109 | "`TracksAlbumIndex` ON `Tracks` " | ||
1802 | "(`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | 2110 | "(`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||
1803 | 2111 | | |||
1804 | if (!result) { | 2112 | if (!result) { | ||
1805 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2113 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1806 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2114 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1807 | 2115 | | |||
1808 | Q_EMIT databaseError(); | 2116 | Q_EMIT databaseError(); | ||
1809 | } | 2117 | } | ||
1810 | } | 2118 | } | ||
1811 | 2119 | | |||
1812 | { | 2120 | { | ||
1813 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2121 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1814 | 2122 | | |||
1815 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2123 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1816 | "IF NOT EXISTS " | 2124 | "IF NOT EXISTS " | ||
1817 | "`ArtistNameIndex` ON `Tracks` " | 2125 | "`ArtistNameIndex` ON `Tracks` " | ||
1818 | "(`ArtistName`)")); | 2126 | "(`ArtistName`)")); | ||
1819 | 2127 | | |||
1820 | if (!result) { | 2128 | if (!result) { | ||
1821 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2129 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1822 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2130 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1823 | 2131 | | |||
1824 | Q_EMIT databaseError(); | 2132 | Q_EMIT databaseError(); | ||
1825 | } | 2133 | } | ||
1826 | } | 2134 | } | ||
1827 | 2135 | | |||
1828 | { | 2136 | { | ||
1829 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2137 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1830 | 2138 | | |||
1831 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2139 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1832 | "IF NOT EXISTS " | 2140 | "IF NOT EXISTS " | ||
1833 | "`AlbumArtistNameIndex` ON `Tracks` " | 2141 | "`AlbumArtistNameIndex` ON `Tracks` " | ||
1834 | "(`AlbumArtistName`)")); | 2142 | "(`AlbumArtistName`)")); | ||
1835 | 2143 | | |||
1836 | if (!result) { | 2144 | if (!result) { | ||
1837 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2145 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1838 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2146 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1839 | 2147 | | |||
1840 | Q_EMIT databaseError(); | 2148 | Q_EMIT databaseError(); | ||
1841 | } | 2149 | } | ||
1842 | } | 2150 | } | ||
1843 | 2151 | | |||
1844 | { | 2152 | { | ||
1845 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2153 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1846 | 2154 | | |||
1847 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2155 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1848 | "IF NOT EXISTS " | 2156 | "IF NOT EXISTS " | ||
1849 | "`TracksUniqueData` ON `Tracks` " | 2157 | "`TracksUniqueData` ON `Tracks` " | ||
1850 | "(`Title`, `ArtistName`, " | 2158 | "(`Title`, `ArtistName`, " | ||
1851 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | 2159 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||
1852 | 2160 | | |||
1853 | if (!result) { | 2161 | if (!result) { | ||
1854 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2162 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1855 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2163 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1856 | 2164 | | |||
1857 | Q_EMIT databaseError(); | 2165 | Q_EMIT databaseError(); | ||
1858 | } | 2166 | } | ||
1859 | } | 2167 | } | ||
1860 | 2168 | | |||
1861 | { | 2169 | { | ||
1862 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2170 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1863 | 2171 | | |||
1864 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2172 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1865 | "IF NOT EXISTS " | 2173 | "IF NOT EXISTS " | ||
1866 | "`TracksUniqueDataPriority` ON `Tracks` " | 2174 | "`TracksUniqueDataPriority` ON `Tracks` " | ||
1867 | "(`Priority`, `Title`, `ArtistName`, " | 2175 | "(`Priority`, `Title`, `ArtistName`, " | ||
1868 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | 2176 | "`AlbumTitle`, `AlbumArtistName`, `AlbumPath`)")); | ||
1869 | 2177 | | |||
1870 | if (!result) { | 2178 | if (!result) { | ||
1871 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2179 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1872 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2180 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1873 | 2181 | | |||
1874 | Q_EMIT databaseError(); | 2182 | Q_EMIT databaseError(); | ||
1875 | } | 2183 | } | ||
1876 | } | 2184 | } | ||
1877 | 2185 | | |||
1878 | { | 2186 | { | ||
1879 | QSqlQuery createTrackIndex(d->mTracksDatabase); | 2187 | QSqlQuery createTrackIndex(d->mTracksDatabase); | ||
1880 | 2188 | | |||
1881 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | 2189 | const auto &result = createTrackIndex.exec(QStringLiteral("CREATE INDEX " | ||
1882 | "IF NOT EXISTS " | 2190 | "IF NOT EXISTS " | ||
1883 | "`TracksFileNameIndex` ON `Tracks` " | 2191 | "`TracksFileNameIndex` ON `Tracks` " | ||
1884 | "(`FileName`)")); | 2192 | "(`FileName`)")); | ||
1885 | 2193 | | |||
1886 | if (!result) { | 2194 | if (!result) { | ||
1887 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | 2195 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastQuery(); | ||
1888 | qDebug() << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | 2196 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initDatabase" << createTrackIndex.lastError(); | ||
1889 | 2197 | | |||
1890 | Q_EMIT databaseError(); | 2198 | Q_EMIT databaseError(); | ||
1891 | } | 2199 | } | ||
1892 | } | 2200 | } | ||
1893 | 2201 | | |||
1894 | qDebug() << "finished update to v11 of database schema"; | 2202 | qCDebug(orgKdeElisaDatabase) << "finished update to v12 of database schema"; | ||
1895 | } | 2203 | } | ||
1896 | 2204 | | |||
1897 | void DatabaseInterface::initRequest() | 2205 | void DatabaseInterface::initRequest() | ||
1898 | { | 2206 | { | ||
1899 | auto transactionResult = startTransaction(); | 2207 | auto transactionResult = startTransaction(); | ||
1900 | if (!transactionResult) { | 2208 | if (!transactionResult) { | ||
1901 | return; | 2209 | return; | ||
1902 | } | 2210 | } | ||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Line(s) | 2213 | auto selectAlbumQueryText = QStringLiteral("SELECT " | |||
1955 | "`Genre` genres ON tracks.`Genre` = genres.`Name` " | 2263 | "`Genre` genres ON tracks.`Genre` = genres.`Name` " | ||
1956 | "WHERE " | 2264 | "WHERE " | ||
1957 | "album.`ID` = :albumId " | 2265 | "album.`ID` = :albumId " | ||
1958 | "GROUP BY album.`ID`"); | 2266 | "GROUP BY album.`ID`"); | ||
1959 | 2267 | | |||
1960 | auto result = prepareQuery(d->mSelectAlbumQuery, selectAlbumQueryText); | 2268 | auto result = prepareQuery(d->mSelectAlbumQuery, selectAlbumQueryText); | ||
1961 | 2269 | | |||
1962 | if (!result) { | 2270 | if (!result) { | ||
1963 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumQuery.lastQuery(); | 2271 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumQuery.lastQuery(); | ||
1964 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumQuery.lastError(); | 2272 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumQuery.lastError(); | ||
1965 | 2273 | | |||
1966 | Q_EMIT databaseError(); | 2274 | Q_EMIT databaseError(); | ||
1967 | } | 2275 | } | ||
1968 | } | 2276 | } | ||
1969 | 2277 | | |||
1970 | { | 2278 | { | ||
1971 | auto selectAllGenresText = QStringLiteral("SELECT " | 2279 | auto selectAllGenresText = QStringLiteral("SELECT " | ||
1972 | "genre.`ID`, " | 2280 | "genre.`ID`, " | ||
1973 | "genre.`Name` " | 2281 | "genre.`Name` " | ||
1974 | "FROM `Genre` genre " | 2282 | "FROM `Genre` genre " | ||
1975 | "ORDER BY genre.`Name` COLLATE NOCASE"); | 2283 | "ORDER BY genre.`Name` COLLATE NOCASE"); | ||
1976 | 2284 | | |||
1977 | auto result = prepareQuery(d->mSelectAllGenresQuery, selectAllGenresText); | 2285 | auto result = prepareQuery(d->mSelectAllGenresQuery, selectAllGenresText); | ||
1978 | 2286 | | |||
1979 | if (!result) { | 2287 | if (!result) { | ||
1980 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllGenresQuery.lastQuery(); | 2288 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllGenresQuery.lastQuery(); | ||
1981 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllGenresQuery.lastError(); | 2289 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllGenresQuery.lastError(); | ||
1982 | 2290 | | |||
1983 | Q_EMIT databaseError(); | 2291 | Q_EMIT databaseError(); | ||
1984 | } | 2292 | } | ||
1985 | } | 2293 | } | ||
1986 | 2294 | | |||
1987 | { | 2295 | { | ||
1988 | auto selectAllAlbumsText = QStringLiteral("SELECT " | 2296 | auto selectAllAlbumsText = QStringLiteral("SELECT " | ||
1989 | "album.`ID`, " | 2297 | "album.`ID`, " | ||
Show All 31 Lines | |||||
2021 | ") AND " | 2329 | ") AND " | ||
2022 | "tracks.`AlbumPath` = album.`AlbumPath` " | 2330 | "tracks.`AlbumPath` = album.`AlbumPath` " | ||
2023 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | 2331 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | ||
2024 | "ORDER BY album.`Title` COLLATE NOCASE"); | 2332 | "ORDER BY album.`Title` COLLATE NOCASE"); | ||
2025 | 2333 | | |||
2026 | auto result = prepareQuery(d->mSelectAllAlbumsShortQuery, selectAllAlbumsText); | 2334 | auto result = prepareQuery(d->mSelectAllAlbumsShortQuery, selectAllAlbumsText); | ||
2027 | 2335 | | |||
2028 | if (!result) { | 2336 | if (!result) { | ||
2029 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortQuery.lastQuery(); | 2337 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortQuery.lastQuery(); | ||
2030 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortQuery.lastError(); | 2338 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortQuery.lastError(); | ||
2031 | 2339 | | |||
2032 | Q_EMIT databaseError(); | 2340 | Q_EMIT databaseError(); | ||
2033 | } | 2341 | } | ||
2034 | } | 2342 | } | ||
2035 | 2343 | | |||
2036 | { | 2344 | { | ||
2037 | auto selectAllAlbumsText = QStringLiteral("SELECT " | 2345 | auto selectAllAlbumsText = QStringLiteral("SELECT " | ||
2038 | "album.`ID`, " | 2346 | "album.`ID`, " | ||
Show All 29 Lines | |||||
2068 | " (tracks2.`ArtistName` = :artistFilter OR tracks2.`AlbumArtistName` = :artistFilter) " | 2376 | " (tracks2.`ArtistName` = :artistFilter OR tracks2.`AlbumArtistName` = :artistFilter) " | ||
2069 | ") " | 2377 | ") " | ||
2070 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | 2378 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | ||
2071 | "ORDER BY album.`Title` COLLATE NOCASE"); | 2379 | "ORDER BY album.`Title` COLLATE NOCASE"); | ||
2072 | 2380 | | |||
2073 | auto result = prepareQuery(d->mSelectAllAlbumsShortWithGenreArtistFilterQuery, selectAllAlbumsText); | 2381 | auto result = prepareQuery(d->mSelectAllAlbumsShortWithGenreArtistFilterQuery, selectAllAlbumsText); | ||
2074 | 2382 | | |||
2075 | if (!result) { | 2383 | if (!result) { | ||
2076 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithGenreArtistFilterQuery.lastQuery(); | 2384 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithGenreArtistFilterQuery.lastQuery(); | ||
2077 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithGenreArtistFilterQuery.lastError(); | 2385 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithGenreArtistFilterQuery.lastError(); | ||
2078 | 2386 | | |||
2079 | Q_EMIT databaseError(); | 2387 | Q_EMIT databaseError(); | ||
2080 | } | 2388 | } | ||
2081 | } | 2389 | } | ||
2082 | 2390 | | |||
2083 | { | 2391 | { | ||
2084 | auto selectAllAlbumsText = QStringLiteral("SELECT " | 2392 | auto selectAllAlbumsText = QStringLiteral("SELECT " | ||
2085 | "album.`ID`, " | 2393 | "album.`ID`, " | ||
Show All 26 Lines | |||||
2112 | " (tracks2.`ArtistName` = :artistFilter OR tracks2.`AlbumArtistName` = :artistFilter) " | 2420 | " (tracks2.`ArtistName` = :artistFilter OR tracks2.`AlbumArtistName` = :artistFilter) " | ||
2113 | ") " | 2421 | ") " | ||
2114 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | 2422 | "GROUP BY album.`ID`, album.`Title`, album.`AlbumPath` " | ||
2115 | "ORDER BY album.`Title` COLLATE NOCASE"); | 2423 | "ORDER BY album.`Title` COLLATE NOCASE"); | ||
2116 | 2424 | | |||
2117 | auto result = prepareQuery(d->mSelectAllAlbumsShortWithArtistFilterQuery, selectAllAlbumsText); | 2425 | auto result = prepareQuery(d->mSelectAllAlbumsShortWithArtistFilterQuery, selectAllAlbumsText); | ||
2118 | 2426 | | |||
2119 | if (!result) { | 2427 | if (!result) { | ||
2120 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithArtistFilterQuery.lastQuery(); | 2428 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithArtistFilterQuery.lastQuery(); | ||
2121 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithArtistFilterQuery.lastError(); | 2429 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllAlbumsShortWithArtistFilterQuery.lastError(); | ||
2122 | 2430 | | |||
2123 | Q_EMIT databaseError(); | 2431 | Q_EMIT databaseError(); | ||
2124 | } | 2432 | } | ||
2125 | } | 2433 | } | ||
2126 | 2434 | | |||
2127 | { | 2435 | { | ||
2128 | auto selectAllArtistsWithFilterText = QStringLiteral("SELECT artists.`ID`, " | 2436 | auto selectAllArtistsWithFilterText = QStringLiteral("SELECT artists.`ID`, " | ||
2129 | "artists.`Name`, " | 2437 | "artists.`Name`, " | ||
2130 | "GROUP_CONCAT(genres.`Name`, ', ') as AllGenres " | 2438 | "GROUP_CONCAT(genres.`Name`, ', ') as AllGenres " | ||
2131 | "FROM `Artists` artists LEFT JOIN " | 2439 | "FROM `Artists` artists LEFT JOIN " | ||
2132 | "`Tracks` tracks ON artists.`Name` = tracks.`ArtistName` LEFT JOIN " | 2440 | "`Tracks` tracks ON artists.`Name` = tracks.`ArtistName` LEFT JOIN " | ||
2133 | "`Genre` genres ON tracks.`Genre` = genres.`Name` " | 2441 | "`Genre` genres ON tracks.`Genre` = genres.`Name` " | ||
2134 | "GROUP BY artists.`ID` " | 2442 | "GROUP BY artists.`ID` " | ||
2135 | "ORDER BY artists.`Name` COLLATE NOCASE"); | 2443 | "ORDER BY artists.`Name` COLLATE NOCASE"); | ||
2136 | 2444 | | |||
2137 | auto result = prepareQuery(d->mSelectAllArtistsQuery, selectAllArtistsWithFilterText); | 2445 | auto result = prepareQuery(d->mSelectAllArtistsQuery, selectAllArtistsWithFilterText); | ||
2138 | 2446 | | |||
2139 | if (!result) { | 2447 | if (!result) { | ||
2140 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllArtistsQuery.lastQuery(); | 2448 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllArtistsQuery.lastQuery(); | ||
2141 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllArtistsQuery.lastError(); | 2449 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllArtistsQuery.lastError(); | ||
2142 | 2450 | | |||
2143 | Q_EMIT databaseError(); | 2451 | Q_EMIT databaseError(); | ||
2144 | } | 2452 | } | ||
2145 | } | 2453 | } | ||
2146 | 2454 | | |||
2147 | { | 2455 | { | ||
2148 | auto selectAllArtistsWithGenreFilterText = QStringLiteral("SELECT artists.`ID`, " | 2456 | auto selectAllArtistsWithGenreFilterText = QStringLiteral("SELECT artists.`ID`, " | ||
2149 | "artists.`Name`, " | 2457 | "artists.`Name`, " | ||
Show All 13 Lines | |||||
2163 | " genre2.`Name` = :genreFilter " | 2471 | " genre2.`Name` = :genreFilter " | ||
2164 | ") " | 2472 | ") " | ||
2165 | "GROUP BY artists.`ID` " | 2473 | "GROUP BY artists.`ID` " | ||
2166 | "ORDER BY artists.`Name` COLLATE NOCASE"); | 2474 | "ORDER BY artists.`Name` COLLATE NOCASE"); | ||
2167 | 2475 | | |||
2168 | auto result = prepareQuery(d->mSelectAllArtistsWithGenreFilterQuery, selectAllArtistsWithGenreFilterText); | 2476 | auto result = prepareQuery(d->mSelectAllArtistsWithGenreFilterQuery, selectAllArtistsWithGenreFilterText); | ||
2169 | 2477 | | |||
2170 | if (!result) { | 2478 | if (!result) { | ||
2171 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllArtistsWithGenreFilterQuery.lastQuery(); | 2479 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllArtistsWithGenreFilterQuery.lastQuery(); | ||
2172 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllArtistsWithGenreFilterQuery.lastError(); | 2480 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllArtistsWithGenreFilterQuery.lastError(); | ||
2173 | 2481 | | |||
2174 | Q_EMIT databaseError(); | 2482 | Q_EMIT databaseError(); | ||
2175 | } | 2483 | } | ||
2176 | } | 2484 | } | ||
2177 | 2485 | | |||
2178 | { | 2486 | { | ||
2179 | auto artistMatchGenreText = QStringLiteral("SELECT artists.`ID` " | 2487 | auto artistMatchGenreText = QStringLiteral("SELECT artists.`ID` " | ||
2180 | "FROM `Artists` artists LEFT JOIN " | 2488 | "FROM `Artists` artists LEFT JOIN " | ||
Show All 10 Lines | |||||
2191 | " tracks2.`Genre` = genre2.`Name` AND " | 2499 | " tracks2.`Genre` = genre2.`Name` AND " | ||
2192 | " genre2.`Name` = :genreFilter " | 2500 | " genre2.`Name` = :genreFilter " | ||
2193 | ") AND " | 2501 | ") AND " | ||
2194 | "artists.`ID` = :databaseId"); | 2502 | "artists.`ID` = :databaseId"); | ||
2195 | 2503 | | |||
2196 | auto result = prepareQuery(d->mArtistMatchGenreQuery, artistMatchGenreText); | 2504 | auto result = prepareQuery(d->mArtistMatchGenreQuery, artistMatchGenreText); | ||
2197 | 2505 | | |||
2198 | if (!result) { | 2506 | if (!result) { | ||
2199 | qDebug() << "DatabaseInterface::initRequest" << d->mArtistMatchGenreQuery.lastQuery(); | 2507 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mArtistMatchGenreQuery.lastQuery(); | ||
2200 | qDebug() << "DatabaseInterface::initRequest" << d->mArtistMatchGenreQuery.lastError(); | 2508 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mArtistMatchGenreQuery.lastError(); | ||
2201 | 2509 | | |||
2202 | Q_EMIT databaseError(); | 2510 | Q_EMIT databaseError(); | ||
2203 | } | 2511 | } | ||
2204 | } | 2512 | } | ||
2205 | 2513 | | |||
2206 | { | 2514 | { | ||
2207 | auto selectAllComposersWithFilterText = QStringLiteral("SELECT `ID`, " | 2515 | auto selectAllComposersWithFilterText = QStringLiteral("SELECT `ID`, " | ||
2208 | "`Name` " | 2516 | "`Name` " | ||
2209 | "FROM `Artists` " | 2517 | "FROM `Artists` " | ||
2210 | "ORDER BY `Name` COLLATE NOCASE"); | 2518 | "ORDER BY `Name` COLLATE NOCASE"); | ||
2211 | 2519 | | |||
2212 | auto result = prepareQuery(d->mSelectAllComposersQuery, selectAllComposersWithFilterText); | 2520 | auto result = prepareQuery(d->mSelectAllComposersQuery, selectAllComposersWithFilterText); | ||
2213 | 2521 | | |||
2214 | if (!result) { | 2522 | if (!result) { | ||
2215 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllComposersQuery.lastQuery(); | 2523 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllComposersQuery.lastQuery(); | ||
2216 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllComposersQuery.lastError(); | 2524 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllComposersQuery.lastError(); | ||
2217 | 2525 | | |||
2218 | Q_EMIT databaseError(); | 2526 | Q_EMIT databaseError(); | ||
2219 | } | 2527 | } | ||
2220 | } | 2528 | } | ||
2221 | 2529 | | |||
2222 | { | 2530 | { | ||
2223 | auto selectAllLyricistsWithFilterText = QStringLiteral("SELECT `ID`, " | 2531 | auto selectAllLyricistsWithFilterText = QStringLiteral("SELECT `ID`, " | ||
2224 | "`Name` " | 2532 | "`Name` " | ||
2225 | "FROM `Lyricist` " | 2533 | "FROM `Lyricist` " | ||
2226 | "ORDER BY `Name` COLLATE NOCASE"); | 2534 | "ORDER BY `Name` COLLATE NOCASE"); | ||
2227 | 2535 | | |||
2228 | auto result = prepareQuery(d->mSelectAllLyricistsQuery, selectAllLyricistsWithFilterText); | 2536 | auto result = prepareQuery(d->mSelectAllLyricistsQuery, selectAllLyricistsWithFilterText); | ||
2229 | 2537 | | |||
2230 | if (!result) { | 2538 | if (!result) { | ||
2231 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllLyricistsQuery.lastQuery(); | 2539 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllLyricistsQuery.lastQuery(); | ||
2232 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllLyricistsQuery.lastError(); | 2540 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllLyricistsQuery.lastError(); | ||
2233 | 2541 | | |||
2234 | Q_EMIT databaseError(); | 2542 | Q_EMIT databaseError(); | ||
2235 | } | 2543 | } | ||
2236 | } | 2544 | } | ||
2237 | 2545 | | |||
2238 | { | 2546 | { | ||
2239 | auto selectAllTracksText = QStringLiteral("SELECT " | 2547 | auto selectAllTracksText = QStringLiteral("SELECT " | ||
2240 | "tracks.`ID`, " | 2548 | "tracks.`ID`, " | ||
▲ Show 20 Lines • Show All 63 Lines • ▼ Show 20 Line(s) | |||||
2304 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | 2612 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | ||
2305 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 2613 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
2306 | ")" | 2614 | ")" | ||
2307 | ""); | 2615 | ""); | ||
2308 | 2616 | | |||
2309 | auto result = prepareQuery(d->mSelectAllTracksQuery, selectAllTracksText); | 2617 | auto result = prepareQuery(d->mSelectAllTracksQuery, selectAllTracksText); | ||
2310 | 2618 | | |||
2311 | if (!result) { | 2619 | if (!result) { | ||
2312 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTracksQuery.lastQuery(); | 2620 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTracksQuery.lastQuery(); | ||
2313 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTracksQuery.lastError(); | 2621 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTracksQuery.lastError(); | ||
2314 | 2622 | | |||
2315 | Q_EMIT databaseError(); | 2623 | Q_EMIT databaseError(); | ||
2316 | } | 2624 | } | ||
2317 | } | 2625 | } | ||
2318 | 2626 | | |||
2319 | { | 2627 | { | ||
2320 | auto selectAllTracksText = QStringLiteral("SELECT " | 2628 | auto selectAllTracksText = QStringLiteral("SELECT " | ||
2321 | "tracks.`ID`, " | 2629 | "tracks.`ID`, " | ||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Line(s) | |||||
2387 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 2695 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
2388 | ")" | 2696 | ")" | ||
2389 | "ORDER BY tracksMapping.`LastPlayDate` DESC " | 2697 | "ORDER BY tracksMapping.`LastPlayDate` DESC " | ||
2390 | "LIMIT :maximumResults"); | 2698 | "LIMIT :maximumResults"); | ||
2391 | 2699 | | |||
2392 | auto result = prepareQuery(d->mSelectAllRecentlyPlayedTracksQuery, selectAllTracksText); | 2700 | auto result = prepareQuery(d->mSelectAllRecentlyPlayedTracksQuery, selectAllTracksText); | ||
2393 | 2701 | | |||
2394 | if (!result) { | 2702 | if (!result) { | ||
2395 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllRecentlyPlayedTracksQuery.lastQuery(); | 2703 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllRecentlyPlayedTracksQuery.lastQuery(); | ||
2396 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllRecentlyPlayedTracksQuery.lastError(); | 2704 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllRecentlyPlayedTracksQuery.lastError(); | ||
2397 | 2705 | | |||
2398 | Q_EMIT databaseError(); | 2706 | Q_EMIT databaseError(); | ||
2399 | } | 2707 | } | ||
2400 | } | 2708 | } | ||
2401 | 2709 | | |||
2402 | { | 2710 | { | ||
2403 | auto selectAllTracksText = QStringLiteral("SELECT " | 2711 | auto selectAllTracksText = QStringLiteral("SELECT " | ||
2404 | "tracks.`ID`, " | 2712 | "tracks.`ID`, " | ||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Line(s) | |||||
2470 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 2778 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
2471 | ")" | 2779 | ")" | ||
2472 | "ORDER BY tracksMapping.`PlayCounter` / (strftime('%s', 'now') - tracksMapping.`FirstPlayDate`) DESC " | 2780 | "ORDER BY tracksMapping.`PlayCounter` / (strftime('%s', 'now') - tracksMapping.`FirstPlayDate`) DESC " | ||
2473 | "LIMIT :maximumResults"); | 2781 | "LIMIT :maximumResults"); | ||
2474 | 2782 | | |||
2475 | auto result = prepareQuery(d->mSelectAllFrequentlyPlayedTracksQuery, selectAllTracksText); | 2783 | auto result = prepareQuery(d->mSelectAllFrequentlyPlayedTracksQuery, selectAllTracksText); | ||
2476 | 2784 | | |||
2477 | if (!result) { | 2785 | if (!result) { | ||
2478 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllFrequentlyPlayedTracksQuery.lastQuery(); | 2786 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllFrequentlyPlayedTracksQuery.lastQuery(); | ||
2479 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllFrequentlyPlayedTracksQuery.lastError(); | 2787 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllFrequentlyPlayedTracksQuery.lastError(); | ||
2480 | 2788 | | |||
2481 | Q_EMIT databaseError(); | 2789 | Q_EMIT databaseError(); | ||
2482 | } | 2790 | } | ||
2483 | } | 2791 | } | ||
2484 | 2792 | | |||
2485 | { | 2793 | { | ||
2486 | auto clearAlbumsTableText = QStringLiteral("DELETE FROM `Albums`"); | 2794 | auto clearAlbumsTableText = QStringLiteral("DELETE FROM `Albums`"); | ||
2487 | 2795 | | |||
2488 | auto result = prepareQuery(d->mClearAlbumsTable, clearAlbumsTableText); | 2796 | auto result = prepareQuery(d->mClearAlbumsTable, clearAlbumsTableText); | ||
2489 | 2797 | | |||
2490 | if (!result) { | 2798 | if (!result) { | ||
2491 | qDebug() << "DatabaseInterface::initRequest" << d->mClearAlbumsTable.lastQuery(); | 2799 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearAlbumsTable.lastQuery(); | ||
2492 | qDebug() << "DatabaseInterface::initRequest" << d->mClearAlbumsTable.lastError(); | 2800 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearAlbumsTable.lastError(); | ||
2493 | 2801 | | |||
2494 | Q_EMIT databaseError(); | 2802 | Q_EMIT databaseError(); | ||
2495 | } | 2803 | } | ||
2496 | } | 2804 | } | ||
2497 | 2805 | | |||
2498 | { | 2806 | { | ||
2499 | auto clearArtistsTableText = QStringLiteral("DELETE FROM `Artists`"); | 2807 | auto clearArtistsTableText = QStringLiteral("DELETE FROM `Artists`"); | ||
2500 | 2808 | | |||
2501 | auto result = prepareQuery(d->mClearArtistsTable, clearArtistsTableText); | 2809 | auto result = prepareQuery(d->mClearArtistsTable, clearArtistsTableText); | ||
2502 | 2810 | | |||
2503 | if (!result) { | 2811 | if (!result) { | ||
2504 | qDebug() << "DatabaseInterface::initRequest" << d->mClearArtistsTable.lastQuery(); | 2812 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearArtistsTable.lastQuery(); | ||
2505 | qDebug() << "DatabaseInterface::initRequest" << d->mClearArtistsTable.lastError(); | 2813 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearArtistsTable.lastError(); | ||
2506 | 2814 | | |||
2507 | Q_EMIT databaseError(); | 2815 | Q_EMIT databaseError(); | ||
2508 | } | 2816 | } | ||
2509 | } | 2817 | } | ||
2510 | 2818 | | |||
2511 | { | 2819 | { | ||
2512 | auto clearComposerTableText = QStringLiteral("DELETE FROM `Composer`"); | 2820 | auto clearComposerTableText = QStringLiteral("DELETE FROM `Composer`"); | ||
2513 | 2821 | | |||
2514 | auto result = prepareQuery(d->mClearComposerTable, clearComposerTableText); | 2822 | auto result = prepareQuery(d->mClearComposerTable, clearComposerTableText); | ||
2515 | 2823 | | |||
2516 | if (!result) { | 2824 | if (!result) { | ||
2517 | qDebug() << "DatabaseInterface::initRequest" << d->mClearComposerTable.lastQuery(); | 2825 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearComposerTable.lastQuery(); | ||
2518 | qDebug() << "DatabaseInterface::initRequest" << d->mClearComposerTable.lastError(); | 2826 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearComposerTable.lastError(); | ||
2519 | 2827 | | |||
2520 | Q_EMIT databaseError(); | 2828 | Q_EMIT databaseError(); | ||
2521 | } | 2829 | } | ||
2522 | } | 2830 | } | ||
2523 | 2831 | | |||
2524 | { | 2832 | { | ||
2525 | auto clearGenreTableText = QStringLiteral("DELETE FROM `Genre`"); | 2833 | auto clearGenreTableText = QStringLiteral("DELETE FROM `Genre`"); | ||
2526 | 2834 | | |||
2527 | auto result = prepareQuery(d->mClearGenreTable, clearGenreTableText); | 2835 | auto result = prepareQuery(d->mClearGenreTable, clearGenreTableText); | ||
2528 | 2836 | | |||
2529 | if (!result) { | 2837 | if (!result) { | ||
2530 | qDebug() << "DatabaseInterface::initRequest" << d->mClearGenreTable.lastQuery(); | 2838 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearGenreTable.lastQuery(); | ||
2531 | qDebug() << "DatabaseInterface::initRequest" << d->mClearGenreTable.lastError(); | 2839 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearGenreTable.lastError(); | ||
2532 | 2840 | | |||
2533 | Q_EMIT databaseError(); | 2841 | Q_EMIT databaseError(); | ||
2534 | } | 2842 | } | ||
2535 | } | 2843 | } | ||
2536 | 2844 | | |||
2537 | { | 2845 | { | ||
2538 | auto clearLyricistTableText = QStringLiteral("DELETE FROM `Lyricist`"); | 2846 | auto clearLyricistTableText = QStringLiteral("DELETE FROM `Lyricist`"); | ||
2539 | 2847 | | |||
2540 | auto result = prepareQuery(d->mClearLyricistTable, clearLyricistTableText); | 2848 | auto result = prepareQuery(d->mClearLyricistTable, clearLyricistTableText); | ||
2541 | 2849 | | |||
2542 | if (!result) { | 2850 | if (!result) { | ||
2543 | qDebug() << "DatabaseInterface::initRequest" << d->mClearLyricistTable.lastQuery(); | 2851 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearLyricistTable.lastQuery(); | ||
2544 | qDebug() << "DatabaseInterface::initRequest" << d->mClearLyricistTable.lastError(); | 2852 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearLyricistTable.lastError(); | ||
2545 | 2853 | | |||
2546 | Q_EMIT databaseError(); | 2854 | Q_EMIT databaseError(); | ||
2547 | } | 2855 | } | ||
2548 | } | 2856 | } | ||
2549 | 2857 | | |||
2550 | { | 2858 | { | ||
2551 | auto clearTracksTableText = QStringLiteral("DELETE FROM `Tracks`"); | 2859 | auto clearTracksTableText = QStringLiteral("DELETE FROM `Tracks`"); | ||
2552 | 2860 | | |||
2553 | auto result = prepareQuery(d->mClearTracksTable, clearTracksTableText); | 2861 | auto result = prepareQuery(d->mClearTracksTable, clearTracksTableText); | ||
2554 | 2862 | | |||
2555 | if (!result) { | 2863 | if (!result) { | ||
2556 | qDebug() << "DatabaseInterface::initRequest" << d->mClearTracksTable.lastQuery(); | 2864 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearTracksTable.lastQuery(); | ||
2557 | qDebug() << "DatabaseInterface::initRequest" << d->mClearTracksTable.lastError(); | 2865 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mClearTracksTable.lastError(); | ||
2558 | 2866 | | |||
2559 | Q_EMIT databaseError(); | 2867 | Q_EMIT databaseError(); | ||
2560 | } | 2868 | } | ||
2561 | } | 2869 | } | ||
2562 | 2870 | | |||
2563 | { | 2871 | { | ||
2564 | auto selectAllTracksShortText = QStringLiteral("SELECT " | 2872 | auto selectAllTracksShortText = QStringLiteral("SELECT " | ||
2565 | "tracks.`ID`, " | 2873 | "tracks.`ID`, " | ||
Show All 14 Lines | |||||
2580 | "tracks.`AlbumTitle` = album.`Title` AND " | 2888 | "tracks.`AlbumTitle` = album.`Title` AND " | ||
2581 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | 2889 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||
2582 | "tracks.`AlbumPath` = album.`AlbumPath` " | 2890 | "tracks.`AlbumPath` = album.`AlbumPath` " | ||
2583 | ""); | 2891 | ""); | ||
2584 | 2892 | | |||
2585 | auto result = prepareQuery(d->mSelectAllTracksShortQuery, selectAllTracksShortText); | 2893 | auto result = prepareQuery(d->mSelectAllTracksShortQuery, selectAllTracksShortText); | ||
2586 | 2894 | | |||
2587 | if (!result) { | 2895 | if (!result) { | ||
2588 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTracksShortQuery.lastQuery(); | 2896 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTracksShortQuery.lastQuery(); | ||
2589 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTracksShortQuery.lastError(); | 2897 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTracksShortQuery.lastError(); | ||
2590 | 2898 | | |||
2591 | Q_EMIT databaseError(); | 2899 | Q_EMIT databaseError(); | ||
2592 | } | 2900 | } | ||
2593 | } | 2901 | } | ||
2594 | 2902 | | |||
2595 | { | 2903 | { | ||
2596 | auto selectArtistByNameText = QStringLiteral("SELECT `ID`, " | 2904 | auto selectArtistByNameText = QStringLiteral("SELECT `ID`, " | ||
2597 | "`Name` " | 2905 | "`Name` " | ||
2598 | "FROM `Artists` " | 2906 | "FROM `Artists` " | ||
2599 | "WHERE " | 2907 | "WHERE " | ||
2600 | "`Name` = :name"); | 2908 | "`Name` = :name"); | ||
2601 | 2909 | | |||
2602 | auto result = prepareQuery(d->mSelectArtistByNameQuery, selectArtistByNameText); | 2910 | auto result = prepareQuery(d->mSelectArtistByNameQuery, selectArtistByNameText); | ||
2603 | 2911 | | |||
2604 | if (!result) { | 2912 | if (!result) { | ||
2605 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectArtistByNameQuery.lastQuery(); | 2913 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectArtistByNameQuery.lastQuery(); | ||
2606 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectArtistByNameQuery.lastError(); | 2914 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectArtistByNameQuery.lastError(); | ||
2607 | 2915 | | |||
2608 | Q_EMIT databaseError(); | 2916 | Q_EMIT databaseError(); | ||
2609 | } | 2917 | } | ||
2610 | } | 2918 | } | ||
2611 | 2919 | | |||
2612 | { | 2920 | { | ||
2613 | auto selectComposerByNameText = QStringLiteral("SELECT `ID`, " | 2921 | auto selectComposerByNameText = QStringLiteral("SELECT `ID`, " | ||
2614 | "`Name` " | 2922 | "`Name` " | ||
2615 | "FROM `Composer` " | 2923 | "FROM `Composer` " | ||
2616 | "WHERE " | 2924 | "WHERE " | ||
2617 | "`Name` = :name"); | 2925 | "`Name` = :name"); | ||
2618 | 2926 | | |||
2619 | auto result = prepareQuery(d->mSelectComposerByNameQuery, selectComposerByNameText); | 2927 | auto result = prepareQuery(d->mSelectComposerByNameQuery, selectComposerByNameText); | ||
2620 | 2928 | | |||
2621 | if (!result) { | 2929 | if (!result) { | ||
2622 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectComposerByNameQuery.lastQuery(); | 2930 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectComposerByNameQuery.lastQuery(); | ||
2623 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectComposerByNameQuery.lastError(); | 2931 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectComposerByNameQuery.lastError(); | ||
2624 | } | 2932 | } | ||
2625 | } | 2933 | } | ||
2626 | 2934 | | |||
2627 | { | 2935 | { | ||
2628 | auto selectLyricistByNameText = QStringLiteral("SELECT `ID`, " | 2936 | auto selectLyricistByNameText = QStringLiteral("SELECT `ID`, " | ||
2629 | "`Name` " | 2937 | "`Name` " | ||
2630 | "FROM `Lyricist` " | 2938 | "FROM `Lyricist` " | ||
2631 | "WHERE " | 2939 | "WHERE " | ||
2632 | "`Name` = :name"); | 2940 | "`Name` = :name"); | ||
2633 | 2941 | | |||
2634 | auto result = prepareQuery(d->mSelectLyricistByNameQuery, selectLyricistByNameText); | 2942 | auto result = prepareQuery(d->mSelectLyricistByNameQuery, selectLyricistByNameText); | ||
2635 | 2943 | | |||
2636 | if (!result) { | 2944 | if (!result) { | ||
2637 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectLyricistByNameQuery.lastQuery(); | 2945 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectLyricistByNameQuery.lastQuery(); | ||
2638 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectLyricistByNameQuery.lastError(); | 2946 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectLyricistByNameQuery.lastError(); | ||
2639 | } | 2947 | } | ||
2640 | } | 2948 | } | ||
2641 | 2949 | | |||
2642 | { | 2950 | { | ||
2643 | auto selectGenreByNameText = QStringLiteral("SELECT `ID`, " | 2951 | auto selectGenreByNameText = QStringLiteral("SELECT `ID`, " | ||
2644 | "`Name` " | 2952 | "`Name` " | ||
2645 | "FROM `Genre` " | 2953 | "FROM `Genre` " | ||
2646 | "WHERE " | 2954 | "WHERE " | ||
2647 | "`Name` = :name"); | 2955 | "`Name` = :name"); | ||
2648 | 2956 | | |||
2649 | auto result = prepareQuery(d->mSelectGenreByNameQuery, selectGenreByNameText); | 2957 | auto result = prepareQuery(d->mSelectGenreByNameQuery, selectGenreByNameText); | ||
2650 | 2958 | | |||
2651 | if (!result) { | 2959 | if (!result) { | ||
2652 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreByNameQuery.lastQuery(); | 2960 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreByNameQuery.lastQuery(); | ||
2653 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreByNameQuery.lastError(); | 2961 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreByNameQuery.lastError(); | ||
2654 | 2962 | | |||
2655 | Q_EMIT databaseError(); | 2963 | Q_EMIT databaseError(); | ||
2656 | } | 2964 | } | ||
2657 | } | 2965 | } | ||
2658 | 2966 | | |||
2659 | { | 2967 | { | ||
2660 | auto insertArtistsText = QStringLiteral("INSERT INTO `Artists` (`ID`, `Name`) " | 2968 | auto insertArtistsText = QStringLiteral("INSERT INTO `Artists` (`ID`, `Name`) " | ||
2661 | "VALUES (:artistId, :name)"); | 2969 | "VALUES (:artistId, :name)"); | ||
2662 | 2970 | | |||
2663 | auto result = prepareQuery(d->mInsertArtistsQuery, insertArtistsText); | 2971 | auto result = prepareQuery(d->mInsertArtistsQuery, insertArtistsText); | ||
2664 | 2972 | | |||
2665 | if (!result) { | 2973 | if (!result) { | ||
2666 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertArtistsQuery.lastQuery(); | 2974 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertArtistsQuery.lastQuery(); | ||
2667 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertArtistsQuery.lastError(); | 2975 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertArtistsQuery.lastError(); | ||
2668 | 2976 | | |||
2669 | Q_EMIT databaseError(); | 2977 | Q_EMIT databaseError(); | ||
2670 | } | 2978 | } | ||
2671 | } | 2979 | } | ||
2672 | 2980 | | |||
2673 | { | 2981 | { | ||
2674 | auto insertGenreText = QStringLiteral("INSERT INTO `Genre` (`ID`, `Name`) " | 2982 | auto insertGenreText = QStringLiteral("INSERT INTO `Genre` (`ID`, `Name`) " | ||
2675 | "VALUES (:genreId, :name)"); | 2983 | "VALUES (:genreId, :name)"); | ||
2676 | 2984 | | |||
2677 | auto result = prepareQuery(d->mInsertGenreQuery, insertGenreText); | 2985 | auto result = prepareQuery(d->mInsertGenreQuery, insertGenreText); | ||
2678 | 2986 | | |||
2679 | if (!result) { | 2987 | if (!result) { | ||
2680 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertGenreQuery.lastQuery(); | 2988 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertGenreQuery.lastQuery(); | ||
2681 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertGenreQuery.lastError(); | 2989 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertGenreQuery.lastError(); | ||
2682 | 2990 | | |||
2683 | Q_EMIT databaseError(); | 2991 | Q_EMIT databaseError(); | ||
2684 | } | 2992 | } | ||
2685 | } | 2993 | } | ||
2686 | 2994 | | |||
2687 | { | 2995 | { | ||
2688 | auto insertComposerText = QStringLiteral("INSERT INTO `Composer` (`ID`, `Name`) " | 2996 | auto insertComposerText = QStringLiteral("INSERT INTO `Composer` (`ID`, `Name`) " | ||
2689 | "VALUES (:composerId, :name)"); | 2997 | "VALUES (:composerId, :name)"); | ||
2690 | 2998 | | |||
2691 | auto result = prepareQuery(d->mInsertComposerQuery, insertComposerText); | 2999 | auto result = prepareQuery(d->mInsertComposerQuery, insertComposerText); | ||
2692 | 3000 | | |||
2693 | if (!result) { | 3001 | if (!result) { | ||
2694 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertComposerQuery.lastQuery(); | 3002 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertComposerQuery.lastQuery(); | ||
2695 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertComposerQuery.lastError(); | 3003 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertComposerQuery.lastError(); | ||
2696 | } | 3004 | } | ||
2697 | } | 3005 | } | ||
2698 | 3006 | | |||
2699 | { | 3007 | { | ||
2700 | auto insertLyricistText = QStringLiteral("INSERT INTO `Lyricist` (`ID`, `Name`) " | 3008 | auto insertLyricistText = QStringLiteral("INSERT INTO `Lyricist` (`ID`, `Name`) " | ||
2701 | "VALUES (:lyricistId, :name)"); | 3009 | "VALUES (:lyricistId, :name)"); | ||
2702 | 3010 | | |||
2703 | auto result = prepareQuery(d->mInsertLyricistQuery, insertLyricistText); | 3011 | auto result = prepareQuery(d->mInsertLyricistQuery, insertLyricistText); | ||
2704 | 3012 | | |||
2705 | if (!result) { | 3013 | if (!result) { | ||
2706 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertLyricistQuery.lastQuery(); | 3014 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertLyricistQuery.lastQuery(); | ||
2707 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertLyricistQuery.lastError(); | 3015 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertLyricistQuery.lastError(); | ||
2708 | } | 3016 | } | ||
2709 | } | 3017 | } | ||
2710 | 3018 | | |||
2711 | { | 3019 | { | ||
2712 | auto selectTrackQueryText = QStringLiteral("SELECT " | 3020 | auto selectTrackQueryText = QStringLiteral("SELECT " | ||
2713 | "tracks.`ID`, " | 3021 | "tracks.`ID`, " | ||
2714 | "tracks.`Title`, " | 3022 | "tracks.`Title`, " | ||
2715 | "album.`ID`, " | 3023 | "album.`ID`, " | ||
▲ Show 20 Lines • Show All 64 Lines • ▼ Show 20 Line(s) | |||||
2780 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 3088 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
2781 | ")" | 3089 | ")" | ||
2782 | "ORDER BY tracks.`DiscNumber` ASC, " | 3090 | "ORDER BY tracks.`DiscNumber` ASC, " | ||
2783 | "tracks.`TrackNumber` ASC"); | 3091 | "tracks.`TrackNumber` ASC"); | ||
2784 | 3092 | | |||
2785 | auto result = prepareQuery(d->mSelectTrackQuery, selectTrackQueryText); | 3093 | auto result = prepareQuery(d->mSelectTrackQuery, selectTrackQueryText); | ||
2786 | 3094 | | |||
2787 | if (!result) { | 3095 | if (!result) { | ||
2788 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackQuery.lastQuery(); | 3096 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackQuery.lastQuery(); | ||
2789 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackQuery.lastError(); | 3097 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackQuery.lastError(); | ||
2790 | 3098 | | |||
2791 | Q_EMIT databaseError(); | 3099 | Q_EMIT databaseError(); | ||
2792 | } | 3100 | } | ||
2793 | } | 3101 | } | ||
3102 | | ||||
3103 | { | ||||
3104 | auto selectTrackQueryText = QStringLiteral("SELECT " | ||||
3105 | "tracks.`ID` " | ||||
3106 | "FROM " | ||||
3107 | "`Tracks` tracks, " | ||||
3108 | "`TracksData` tracksMapping " | ||||
3109 | "LEFT JOIN " | ||||
3110 | "`Albums` album " | ||||
3111 | "ON " | ||||
3112 | "album.`ID` = :albumId AND " | ||||
3113 | "tracks.`AlbumTitle` = album.`Title` AND " | ||||
3114 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||||
3115 | "tracks.`AlbumPath` = album.`AlbumPath` " | ||||
3116 | "WHERE " | ||||
3117 | "tracksMapping.`FileName` = tracks.`FileName` AND " | ||||
3118 | "album.`ID` = :albumId AND " | ||||
3119 | "tracks.`Priority` = (" | ||||
3120 | " SELECT " | ||||
3121 | " MIN(`Priority`) " | ||||
3122 | " FROM " | ||||
3123 | " `Tracks` tracks2 " | ||||
3124 | " WHERE " | ||||
3125 | " tracks.`Title` = tracks2.`Title` AND " | ||||
3126 | " (tracks.`ArtistName` IS NULL OR tracks.`ArtistName` = tracks2.`ArtistName`) AND " | ||||
3127 | " (tracks.`AlbumTitle` IS NULL OR tracks.`AlbumTitle` = tracks2.`AlbumTitle`) AND " | ||||
3128 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | ||||
3129 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||||
3130 | ")" | ||||
3131 | "ORDER BY tracks.`DiscNumber` ASC, " | ||||
3132 | "tracks.`TrackNumber` ASC"); | ||||
3133 | | ||||
3134 | auto result = prepareQuery(d->mSelectTrackIdQuery, selectTrackQueryText); | ||||
3135 | | ||||
3136 | if (!result) { | ||||
3137 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdQuery.lastQuery(); | ||||
3138 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdQuery.lastError(); | ||||
3139 | | ||||
3140 | Q_EMIT databaseError(); | ||||
3141 | } | ||||
3142 | } | ||||
3143 | | ||||
2794 | { | 3144 | { | ||
2795 | auto selectTrackFromIdQueryText = QStringLiteral("SELECT " | 3145 | auto selectTrackFromIdQueryText = QStringLiteral("SELECT " | ||
2796 | "tracks.`Id`, " | 3146 | "tracks.`Id`, " | ||
2797 | "tracks.`Title`, " | 3147 | "tracks.`Title`, " | ||
2798 | "album.`ID`, " | 3148 | "album.`ID`, " | ||
2799 | "tracks.`ArtistName`, " | 3149 | "tracks.`ArtistName`, " | ||
2800 | "tracks.`AlbumArtistName`, " | 3150 | "tracks.`AlbumArtistName`, " | ||
2801 | "tracksMapping.`FileName`, " | 3151 | "tracksMapping.`FileName`, " | ||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Line(s) | |||||
2861 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | 3211 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | ||
2862 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 3212 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
2863 | ")" | 3213 | ")" | ||
2864 | ""); | 3214 | ""); | ||
2865 | 3215 | | |||
2866 | auto result = prepareQuery(d->mSelectTrackFromIdQuery, selectTrackFromIdQueryText); | 3216 | auto result = prepareQuery(d->mSelectTrackFromIdQuery, selectTrackFromIdQueryText); | ||
2867 | 3217 | | |||
2868 | if (!result) { | 3218 | if (!result) { | ||
2869 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackFromIdQuery.lastQuery(); | 3219 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackFromIdQuery.lastQuery(); | ||
2870 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackFromIdQuery.lastError(); | 3220 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackFromIdQuery.lastError(); | ||
2871 | 3221 | | |||
2872 | Q_EMIT databaseError(); | 3222 | Q_EMIT databaseError(); | ||
2873 | } | 3223 | } | ||
2874 | } | 3224 | } | ||
2875 | { | 3225 | { | ||
2876 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT count(*) " | 3226 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT count(*) " | ||
2877 | "FROM `Albums` album " | 3227 | "FROM `Albums` album " | ||
2878 | "WHERE album.`ArtistName` = :artistName "); | 3228 | "WHERE album.`ArtistName` = :artistName "); | ||
2879 | 3229 | | |||
2880 | const auto result = prepareQuery(d->mSelectCountAlbumsForArtistQuery, selectCountAlbumsQueryText); | 3230 | const auto result = prepareQuery(d->mSelectCountAlbumsForArtistQuery, selectCountAlbumsQueryText); | ||
2881 | 3231 | | |||
2882 | if (!result) { | 3232 | if (!result) { | ||
2883 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForArtistQuery.lastQuery(); | 3233 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForArtistQuery.lastQuery(); | ||
2884 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForArtistQuery.lastError(); | 3234 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForArtistQuery.lastError(); | ||
2885 | 3235 | | |||
2886 | Q_EMIT databaseError(); | 3236 | Q_EMIT databaseError(); | ||
2887 | } | 3237 | } | ||
2888 | } | 3238 | } | ||
2889 | 3239 | | |||
2890 | { | 3240 | { | ||
2891 | auto selectGenreForArtistQueryText = QStringLiteral("SELECT DISTINCT trackGenre.`Name` " | 3241 | auto selectGenreForArtistQueryText = QStringLiteral("SELECT DISTINCT trackGenre.`Name` " | ||
2892 | "FROM " | 3242 | "FROM " | ||
2893 | "`Tracks` tracks " | 3243 | "`Tracks` tracks " | ||
2894 | "LEFT JOIN " | 3244 | "LEFT JOIN " | ||
2895 | "`Albums` album " | 3245 | "`Albums` album " | ||
2896 | "ON " | 3246 | "ON " | ||
2897 | "tracks.`AlbumTitle` = album.`Title` AND " | 3247 | "tracks.`AlbumTitle` = album.`Title` AND " | ||
2898 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | 3248 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||
2899 | "tracks.`AlbumPath` = album.`AlbumPath` " | 3249 | "tracks.`AlbumPath` = album.`AlbumPath` " | ||
2900 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | 3250 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | ||
2901 | "WHERE " | 3251 | "WHERE " | ||
2902 | "album.`ArtistName` = :artistName"); | 3252 | "album.`ArtistName` = :artistName"); | ||
2903 | 3253 | | |||
2904 | const auto result = prepareQuery(d->mSelectGenreForArtistQuery, selectGenreForArtistQueryText); | 3254 | const auto result = prepareQuery(d->mSelectGenreForArtistQuery, selectGenreForArtistQueryText); | ||
2905 | 3255 | | |||
2906 | if (!result) { | 3256 | if (!result) { | ||
2907 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreForArtistQuery.lastQuery(); | 3257 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreForArtistQuery.lastQuery(); | ||
2908 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreForArtistQuery.lastError(); | 3258 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreForArtistQuery.lastError(); | ||
2909 | 3259 | | |||
2910 | Q_EMIT databaseError(); | 3260 | Q_EMIT databaseError(); | ||
2911 | } | 3261 | } | ||
2912 | } | 3262 | } | ||
2913 | 3263 | | |||
2914 | { | 3264 | { | ||
2915 | auto selectGenreForAlbumQueryText = QStringLiteral("SELECT DISTINCT trackGenre.`Name` " | 3265 | auto selectGenreForAlbumQueryText = QStringLiteral("SELECT DISTINCT trackGenre.`Name` " | ||
2916 | "FROM " | 3266 | "FROM " | ||
2917 | "`Tracks` tracks " | 3267 | "`Tracks` tracks " | ||
2918 | "LEFT JOIN " | 3268 | "LEFT JOIN " | ||
2919 | "`Albums` album " | 3269 | "`Albums` album " | ||
2920 | "ON " | 3270 | "ON " | ||
2921 | "tracks.`AlbumTitle` = album.`Title` AND " | 3271 | "tracks.`AlbumTitle` = album.`Title` AND " | ||
2922 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | 3272 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||
2923 | "tracks.`AlbumPath` = album.`AlbumPath` " | 3273 | "tracks.`AlbumPath` = album.`AlbumPath` " | ||
2924 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | 3274 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | ||
2925 | "WHERE " | 3275 | "WHERE " | ||
2926 | "album.`ID` = :albumId"); | 3276 | "album.`ID` = :albumId"); | ||
2927 | 3277 | | |||
2928 | const auto result = prepareQuery(d->mSelectGenreForAlbumQuery, selectGenreForAlbumQueryText); | 3278 | const auto result = prepareQuery(d->mSelectGenreForAlbumQuery, selectGenreForAlbumQueryText); | ||
2929 | 3279 | | |||
2930 | if (!result) { | 3280 | if (!result) { | ||
2931 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreForAlbumQuery.lastQuery(); | 3281 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreForAlbumQuery.lastQuery(); | ||
2932 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreForAlbumQuery.lastError(); | 3282 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreForAlbumQuery.lastError(); | ||
2933 | 3283 | | |||
2934 | Q_EMIT databaseError(); | 3284 | Q_EMIT databaseError(); | ||
2935 | } | 3285 | } | ||
2936 | } | 3286 | } | ||
2937 | 3287 | | |||
2938 | { | 3288 | { | ||
2939 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT distinct count(album.`ID`) " | 3289 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT distinct count(album.`ID`) " | ||
2940 | "FROM " | 3290 | "FROM " | ||
2941 | "`Tracks` tracks, " | 3291 | "`Tracks` tracks, " | ||
2942 | "`Albums` album " | 3292 | "`Albums` album " | ||
2943 | "LEFT JOIN `Composer` albumComposer ON albumComposer.`Name` = tracks.`Composer` " | 3293 | "LEFT JOIN `Composer` albumComposer ON albumComposer.`Name` = tracks.`Composer` " | ||
2944 | "WHERE " | 3294 | "WHERE " | ||
2945 | "(tracks.`AlbumTitle` = album.`Title` OR tracks.`AlbumTitle` IS NULL ) AND " | 3295 | "(tracks.`AlbumTitle` = album.`Title` OR tracks.`AlbumTitle` IS NULL ) AND " | ||
2946 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | 3296 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||
2947 | "(tracks.`AlbumPath` = album.`AlbumPath` OR tracks.`AlbumPath` IS NULL ) AND " | 3297 | "(tracks.`AlbumPath` = album.`AlbumPath` OR tracks.`AlbumPath` IS NULL ) AND " | ||
2948 | "albumComposer.`Name` = :artistName"); | 3298 | "albumComposer.`Name` = :artistName"); | ||
2949 | 3299 | | |||
2950 | const auto result = prepareQuery(d->mSelectCountAlbumsForComposerQuery, selectCountAlbumsQueryText); | 3300 | const auto result = prepareQuery(d->mSelectCountAlbumsForComposerQuery, selectCountAlbumsQueryText); | ||
2951 | 3301 | | |||
2952 | if (!result) { | 3302 | if (!result) { | ||
2953 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForComposerQuery.lastQuery(); | 3303 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForComposerQuery.lastQuery(); | ||
2954 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForComposerQuery.lastError(); | 3304 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForComposerQuery.lastError(); | ||
2955 | 3305 | | |||
2956 | Q_EMIT databaseError(); | 3306 | Q_EMIT databaseError(); | ||
2957 | } | 3307 | } | ||
2958 | } | 3308 | } | ||
2959 | 3309 | | |||
2960 | { | 3310 | { | ||
2961 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT distinct count(album.`ID`) " | 3311 | auto selectCountAlbumsQueryText = QStringLiteral("SELECT distinct count(album.`ID`) " | ||
2962 | "FROM " | 3312 | "FROM " | ||
2963 | "`Tracks` tracks, " | 3313 | "`Tracks` tracks, " | ||
2964 | "`Albums` album " | 3314 | "`Albums` album " | ||
2965 | "LEFT JOIN `Lyricist` albumLyricist ON albumLyricist.`Name` = tracks.`Lyricist` " | 3315 | "LEFT JOIN `Lyricist` albumLyricist ON albumLyricist.`Name` = tracks.`Lyricist` " | ||
2966 | "WHERE " | 3316 | "WHERE " | ||
2967 | "(tracks.`AlbumTitle` = album.`Title` OR tracks.`AlbumTitle` IS NULL ) AND " | 3317 | "(tracks.`AlbumTitle` = album.`Title` OR tracks.`AlbumTitle` IS NULL ) AND " | ||
2968 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | 3318 | "(tracks.`AlbumArtistName` = album.`ArtistName` OR tracks.`AlbumArtistName` IS NULL ) AND " | ||
2969 | "(tracks.`AlbumPath` = album.`AlbumPath` OR tracks.`AlbumPath` IS NULL ) AND " | 3319 | "(tracks.`AlbumPath` = album.`AlbumPath` OR tracks.`AlbumPath` IS NULL ) AND " | ||
2970 | "albumLyricist.`Name` = :artistName"); | 3320 | "albumLyricist.`Name` = :artistName"); | ||
2971 | 3321 | | |||
2972 | const auto result = prepareQuery(d->mSelectCountAlbumsForLyricistQuery, selectCountAlbumsQueryText); | 3322 | const auto result = prepareQuery(d->mSelectCountAlbumsForLyricistQuery, selectCountAlbumsQueryText); | ||
2973 | 3323 | | |||
2974 | if (!result) { | 3324 | if (!result) { | ||
2975 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForLyricistQuery.lastQuery(); | 3325 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForLyricistQuery.lastQuery(); | ||
2976 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForLyricistQuery.lastError(); | 3326 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectCountAlbumsForLyricistQuery.lastError(); | ||
2977 | 3327 | | |||
2978 | Q_EMIT databaseError(); | 3328 | Q_EMIT databaseError(); | ||
2979 | } | 3329 | } | ||
2980 | } | 3330 | } | ||
2981 | 3331 | | |||
2982 | { | 3332 | { | ||
2983 | auto selectAlbumIdFromTitleQueryText = QStringLiteral("SELECT " | 3333 | auto selectAlbumIdFromTitleQueryText = QStringLiteral("SELECT " | ||
2984 | "album.`ID` " | 3334 | "album.`ID` " | ||
2985 | "FROM " | 3335 | "FROM " | ||
2986 | "`Albums` album " | 3336 | "`Albums` album " | ||
2987 | "WHERE " | 3337 | "WHERE " | ||
2988 | "album.`ArtistName` = :artistName AND " | 3338 | "album.`ArtistName` = :artistName AND " | ||
2989 | "album.`Title` = :title"); | 3339 | "album.`Title` = :title"); | ||
2990 | 3340 | | |||
2991 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleQuery, selectAlbumIdFromTitleQueryText); | 3341 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleQuery, selectAlbumIdFromTitleQueryText); | ||
2992 | 3342 | | |||
2993 | if (!result) { | 3343 | if (!result) { | ||
2994 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleQuery.lastQuery(); | 3344 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleQuery.lastQuery(); | ||
2995 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleQuery.lastError(); | 3345 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleQuery.lastError(); | ||
2996 | 3346 | | |||
2997 | Q_EMIT databaseError(); | 3347 | Q_EMIT databaseError(); | ||
2998 | } | 3348 | } | ||
2999 | } | 3349 | } | ||
3000 | 3350 | | |||
3001 | { | 3351 | { | ||
3002 | auto selectAlbumIdFromTitleAndArtistQueryText = QStringLiteral("SELECT " | 3352 | auto selectAlbumIdFromTitleAndArtistQueryText = QStringLiteral("SELECT " | ||
3003 | "album.`ID` " | 3353 | "album.`ID` " | ||
3004 | "FROM " | 3354 | "FROM " | ||
3005 | "`Albums` album " | 3355 | "`Albums` album " | ||
3006 | "WHERE " | 3356 | "WHERE " | ||
3007 | "album.`ArtistName` = :artistName AND " | 3357 | "album.`ArtistName` = :artistName AND " | ||
3008 | "album.`Title` = :title AND " | 3358 | "album.`Title` = :title AND " | ||
3009 | "album.`AlbumPath` = :albumPath"); | 3359 | "album.`AlbumPath` = :albumPath"); | ||
3010 | 3360 | | |||
3011 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleAndArtistQuery, selectAlbumIdFromTitleAndArtistQueryText); | 3361 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleAndArtistQuery, selectAlbumIdFromTitleAndArtistQueryText); | ||
3012 | 3362 | | |||
3013 | if (!result) { | 3363 | if (!result) { | ||
3014 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastQuery(); | 3364 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastQuery(); | ||
3015 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastError(); | 3365 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastError(); | ||
3016 | 3366 | | |||
3017 | Q_EMIT databaseError(); | 3367 | Q_EMIT databaseError(); | ||
3018 | } | 3368 | } | ||
3019 | } | 3369 | } | ||
3020 | 3370 | | |||
3021 | { | 3371 | { | ||
3022 | auto selectAlbumIdFromTitleWithoutArtistQueryText = QStringLiteral("SELECT " | 3372 | auto selectAlbumIdFromTitleWithoutArtistQueryText = QStringLiteral("SELECT " | ||
3023 | "album.`ID` " | 3373 | "album.`ID` " | ||
3024 | "FROM " | 3374 | "FROM " | ||
3025 | "`Albums` album " | 3375 | "`Albums` album " | ||
3026 | "WHERE " | 3376 | "WHERE " | ||
3027 | "album.`AlbumPath` = :albumPath AND " | 3377 | "album.`AlbumPath` = :albumPath AND " | ||
3028 | "album.`Title` = :title AND " | 3378 | "album.`Title` = :title AND " | ||
3029 | "album.`ArtistName` IS NULL"); | 3379 | "album.`ArtistName` IS NULL"); | ||
3030 | 3380 | | |||
3031 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleWithoutArtistQuery, selectAlbumIdFromTitleWithoutArtistQueryText); | 3381 | auto result = prepareQuery(d->mSelectAlbumIdFromTitleWithoutArtistQuery, selectAlbumIdFromTitleWithoutArtistQueryText); | ||
3032 | 3382 | | |||
3033 | if (!result) { | 3383 | if (!result) { | ||
3034 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | 3384 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | ||
3035 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | 3385 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | ||
3036 | 3386 | | |||
3037 | Q_EMIT databaseError(); | 3387 | Q_EMIT databaseError(); | ||
3038 | } | 3388 | } | ||
3039 | } | 3389 | } | ||
3040 | 3390 | | |||
3041 | { | 3391 | { | ||
3042 | auto insertAlbumQueryText = QStringLiteral("INSERT INTO `Albums` " | 3392 | auto insertAlbumQueryText = QStringLiteral("INSERT INTO `Albums` " | ||
3043 | "(`ID`, " | 3393 | "(`ID`, " | ||
3044 | "`Title`, " | 3394 | "`Title`, " | ||
3045 | "`ArtistName`, " | 3395 | "`ArtistName`, " | ||
3046 | "`AlbumPath`, " | 3396 | "`AlbumPath`, " | ||
3047 | "`CoverFileName`) " | 3397 | "`CoverFileName`) " | ||
3048 | "VALUES " | 3398 | "VALUES " | ||
3049 | "(:albumId, " | 3399 | "(:albumId, " | ||
3050 | ":title, " | 3400 | ":title, " | ||
3051 | ":albumArtist, " | 3401 | ":albumArtist, " | ||
3052 | ":albumPath, " | 3402 | ":albumPath, " | ||
3053 | ":coverFileName)"); | 3403 | ":coverFileName)"); | ||
3054 | 3404 | | |||
3055 | auto result = prepareQuery(d->mInsertAlbumQuery, insertAlbumQueryText); | 3405 | auto result = prepareQuery(d->mInsertAlbumQuery, insertAlbumQueryText); | ||
3056 | 3406 | | |||
3057 | if (!result) { | 3407 | if (!result) { | ||
3058 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertAlbumQuery.lastQuery(); | 3408 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertAlbumQuery.lastQuery(); | ||
3059 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertAlbumQuery.lastError(); | 3409 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertAlbumQuery.lastError(); | ||
3060 | 3410 | | |||
3061 | Q_EMIT databaseError(); | 3411 | Q_EMIT databaseError(); | ||
3062 | } | 3412 | } | ||
3063 | } | 3413 | } | ||
3064 | 3414 | | |||
3065 | { | 3415 | { | ||
3066 | auto insertTrackMappingQueryText = QStringLiteral("INSERT INTO " | 3416 | auto insertTrackMappingQueryText = QStringLiteral("INSERT INTO " | ||
3067 | "`TracksData` " | 3417 | "`TracksData` " | ||
3068 | "(`FileName`, " | 3418 | "(`FileName`, " | ||
3069 | "`DiscoverID`, " | | |||
3070 | "`FileModifiedTime`, " | 3419 | "`FileModifiedTime`, " | ||
3071 | "`ImportDate`, " | 3420 | "`ImportDate`, " | ||
3072 | "`PlayCounter`) " | 3421 | "`PlayCounter`) " | ||
3073 | "VALUES (:fileName, :discoverId, :mtime, :importDate, 0)"); | 3422 | "VALUES (:fileName, :mtime, :importDate, 0)"); | ||
3074 | 3423 | | |||
3075 | auto result = prepareQuery(d->mInsertTrackMapping, insertTrackMappingQueryText); | 3424 | auto result = prepareQuery(d->mInsertTrackMapping, insertTrackMappingQueryText); | ||
3076 | 3425 | | |||
3077 | if (!result) { | 3426 | if (!result) { | ||
3078 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertTrackMapping.lastQuery(); | 3427 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertTrackMapping.lastQuery(); | ||
3079 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertTrackMapping.lastError(); | 3428 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertTrackMapping.lastError(); | ||
3080 | 3429 | | |||
3081 | Q_EMIT databaseError(); | 3430 | Q_EMIT databaseError(); | ||
3082 | } | 3431 | } | ||
3083 | } | 3432 | } | ||
3084 | 3433 | | |||
3085 | { | 3434 | { | ||
3086 | auto initialUpdateTracksValidityQueryText = QStringLiteral("UPDATE `TracksData` " | 3435 | auto initialUpdateTracksValidityQueryText = QStringLiteral("UPDATE `TracksData` " | ||
3087 | "SET " | 3436 | "SET " | ||
3088 | "`FileModifiedTime` = :mtime " | 3437 | "`FileModifiedTime` = :mtime " | ||
3089 | "WHERE `FileName` = :fileName"); | 3438 | "WHERE `FileName` = :fileName"); | ||
3090 | 3439 | | |||
3091 | auto result = prepareQuery(d->mUpdateTrackFileModifiedTime, initialUpdateTracksValidityQueryText); | 3440 | auto result = prepareQuery(d->mUpdateTrackFileModifiedTime, initialUpdateTracksValidityQueryText); | ||
3092 | 3441 | | |||
3093 | if (!result) { | 3442 | if (!result) { | ||
3094 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackFileModifiedTime.lastQuery(); | 3443 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackFileModifiedTime.lastQuery(); | ||
3095 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackFileModifiedTime.lastError(); | 3444 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackFileModifiedTime.lastError(); | ||
3096 | 3445 | | |||
3097 | Q_EMIT databaseError(); | 3446 | Q_EMIT databaseError(); | ||
3098 | } | 3447 | } | ||
3099 | } | 3448 | } | ||
3100 | 3449 | | |||
3101 | { | 3450 | { | ||
3102 | auto initialUpdateTracksValidityQueryText = QStringLiteral("UPDATE `Tracks` " | 3451 | auto initialUpdateTracksValidityQueryText = QStringLiteral("UPDATE `Tracks` " | ||
3103 | "SET " | 3452 | "SET " | ||
3104 | "`Priority` = :priority " | 3453 | "`Priority` = :priority " | ||
3105 | "WHERE `FileName` = :fileName"); | 3454 | "WHERE `FileName` = :fileName"); | ||
3106 | 3455 | | |||
3107 | auto result = prepareQuery(d->mUpdateTrackPriority, initialUpdateTracksValidityQueryText); | 3456 | auto result = prepareQuery(d->mUpdateTrackPriority, initialUpdateTracksValidityQueryText); | ||
3108 | 3457 | | |||
3109 | if (!result) { | 3458 | if (!result) { | ||
3110 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackPriority.lastQuery(); | 3459 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackPriority.lastQuery(); | ||
3111 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackPriority.lastError(); | 3460 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackPriority.lastError(); | ||
3112 | 3461 | | |||
3113 | Q_EMIT databaseError(); | 3462 | Q_EMIT databaseError(); | ||
3114 | } | 3463 | } | ||
3115 | } | 3464 | } | ||
3116 | 3465 | | |||
3117 | { | 3466 | { | ||
3118 | auto removeTracksMappingFromSourceQueryText = QStringLiteral("DELETE FROM `TracksData` " | 3467 | auto removeTracksMappingFromSourceQueryText = QStringLiteral("DELETE FROM `TracksData` " | ||
3119 | "WHERE `FileName` = :fileName AND `DiscoverID` = :sourceId"); | 3468 | "WHERE `FileName` = :fileName"); | ||
3120 | 3469 | | |||
3121 | auto result = prepareQuery(d->mRemoveTracksMappingFromSource, removeTracksMappingFromSourceQueryText); | 3470 | auto result = prepareQuery(d->mRemoveTracksMappingFromSource, removeTracksMappingFromSourceQueryText); | ||
3122 | 3471 | | |||
3123 | if (!result) { | 3472 | if (!result) { | ||
3124 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTracksMappingFromSource.lastQuery(); | 3473 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTracksMappingFromSource.lastQuery(); | ||
3125 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTracksMappingFromSource.lastError(); | 3474 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTracksMappingFromSource.lastError(); | ||
3126 | 3475 | | |||
3127 | Q_EMIT databaseError(); | 3476 | Q_EMIT databaseError(); | ||
3128 | } | 3477 | } | ||
3129 | } | 3478 | } | ||
3130 | 3479 | | |||
3131 | { | 3480 | { | ||
3132 | auto removeTracksMappingQueryText = QStringLiteral("DELETE FROM `TracksData` " | 3481 | auto removeTracksMappingQueryText = QStringLiteral("DELETE FROM `TracksData` " | ||
3133 | "WHERE `FileName` = :fileName"); | 3482 | "WHERE `FileName` = :fileName"); | ||
3134 | 3483 | | |||
3135 | auto result = prepareQuery(d->mRemoveTracksMapping, removeTracksMappingQueryText); | 3484 | auto result = prepareQuery(d->mRemoveTracksMapping, removeTracksMappingQueryText); | ||
3136 | 3485 | | |||
3137 | if (!result) { | 3486 | if (!result) { | ||
3138 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTracksMapping.lastQuery(); | 3487 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTracksMapping.lastQuery(); | ||
3139 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTracksMapping.lastError(); | 3488 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTracksMapping.lastError(); | ||
3140 | 3489 | | |||
3141 | Q_EMIT databaseError(); | 3490 | Q_EMIT databaseError(); | ||
3142 | } | 3491 | } | ||
3143 | } | 3492 | } | ||
3144 | 3493 | | |||
3145 | { | 3494 | { | ||
3146 | auto selectTracksWithoutMappingQueryText = QStringLiteral("SELECT " | 3495 | auto selectTracksWithoutMappingQueryText = QStringLiteral("SELECT " | ||
3147 | "tracks.`Id`, " | 3496 | "tracks.`Id`, " | ||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Line(s) | |||||
3199 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | 3548 | "LEFT JOIN `Genre` trackGenre ON trackGenre.`Name` = tracks.`Genre` " | ||
3200 | "WHERE " | 3549 | "WHERE " | ||
3201 | "tracks.`FileName` = tracksMapping.`FileName` AND " | 3550 | "tracks.`FileName` = tracksMapping.`FileName` AND " | ||
3202 | "tracks.`FileName` NOT IN (SELECT tracksMapping2.`FileName` FROM `TracksData` tracksMapping2)"); | 3551 | "tracks.`FileName` NOT IN (SELECT tracksMapping2.`FileName` FROM `TracksData` tracksMapping2)"); | ||
3203 | 3552 | | |||
3204 | auto result = prepareQuery(d->mSelectTracksWithoutMappingQuery, selectTracksWithoutMappingQueryText); | 3553 | auto result = prepareQuery(d->mSelectTracksWithoutMappingQuery, selectTracksWithoutMappingQueryText); | ||
3205 | 3554 | | |||
3206 | if (!result) { | 3555 | if (!result) { | ||
3207 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksWithoutMappingQuery.lastQuery(); | 3556 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksWithoutMappingQuery.lastQuery(); | ||
3208 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksWithoutMappingQuery.lastError(); | 3557 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksWithoutMappingQuery.lastError(); | ||
3209 | 3558 | | |||
3210 | Q_EMIT databaseError(); | 3559 | Q_EMIT databaseError(); | ||
3211 | } | 3560 | } | ||
3212 | } | 3561 | } | ||
3213 | 3562 | | |||
3214 | { | 3563 | { | ||
3215 | auto selectTracksMappingQueryText = QStringLiteral("SELECT " | 3564 | auto selectTracksMappingQueryText = QStringLiteral("SELECT " | ||
3216 | "track.`ID`, " | 3565 | "track.`ID`, " | ||
3217 | "trackData.`FileName`, " | 3566 | "trackData.`FileName`, " | ||
3218 | "trackData.`DiscoverID`, " | | |||
3219 | "track.`Priority`, " | 3567 | "track.`Priority`, " | ||
3220 | "trackData.`FileModifiedTime` " | 3568 | "trackData.`FileModifiedTime` " | ||
3221 | "FROM " | 3569 | "FROM " | ||
3222 | "`TracksData` trackData " | 3570 | "`TracksData` trackData " | ||
3223 | "LEFT JOIN " | 3571 | "LEFT JOIN " | ||
3224 | "`Tracks` track " | 3572 | "`Tracks` track " | ||
3225 | "ON " | 3573 | "ON " | ||
3226 | "track.`FileName` = trackData.`FileName` " | 3574 | "track.`FileName` = trackData.`FileName` " | ||
3227 | "WHERE " | 3575 | "WHERE " | ||
3228 | "trackData.`FileName` = :fileName"); | 3576 | "trackData.`FileName` = :fileName"); | ||
3229 | 3577 | | |||
3230 | auto result = prepareQuery(d->mSelectTracksMapping, selectTracksMappingQueryText); | 3578 | auto result = prepareQuery(d->mSelectTracksMapping, selectTracksMappingQueryText); | ||
3231 | 3579 | | |||
3232 | if (!result) { | 3580 | if (!result) { | ||
3233 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMapping.lastQuery(); | 3581 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMapping.lastQuery(); | ||
3234 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMapping.lastError(); | 3582 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMapping.lastError(); | ||
3235 | 3583 | | |||
3236 | Q_EMIT databaseError(); | 3584 | Q_EMIT databaseError(); | ||
3237 | } | 3585 | } | ||
3238 | } | 3586 | } | ||
3239 | 3587 | | |||
3240 | { | 3588 | { | ||
3241 | auto selectTracksMappingPriorityQueryText = QStringLiteral("SELECT " | 3589 | auto selectTracksMappingPriorityQueryText = QStringLiteral("SELECT " | ||
3242 | "max(tracks.`Priority`) AS Priority " | 3590 | "max(tracks.`Priority`) AS Priority " | ||
3243 | "FROM " | 3591 | "FROM " | ||
3244 | "`Tracks` tracks, " | 3592 | "`Tracks` tracks, " | ||
3245 | "`Albums` albums " | 3593 | "`Albums` albums " | ||
3246 | "WHERE " | 3594 | "WHERE " | ||
3247 | "tracks.`Title` = :title AND " | 3595 | "tracks.`Title` = :title AND " | ||
3248 | "(tracks.`ArtistName` = :trackArtist OR tracks.`ArtistName` IS NULL) AND " | 3596 | "(tracks.`ArtistName` = :trackArtist OR tracks.`ArtistName` IS NULL) AND " | ||
3249 | "(tracks.`AlbumTitle` = :album OR tracks.`AlbumTitle` IS NULL) AND " | 3597 | "(tracks.`AlbumTitle` = :album OR tracks.`AlbumTitle` IS NULL) AND " | ||
3250 | "(tracks.`AlbumArtistName` = :albumArtist OR tracks.`AlbumArtistName` IS NULL) AND " | 3598 | "(tracks.`AlbumArtistName` = :albumArtist OR tracks.`AlbumArtistName` IS NULL) AND " | ||
3251 | "(tracks.`AlbumPath` = :albumPath OR tracks.`AlbumPath` IS NULL)"); | 3599 | "(tracks.`AlbumPath` = :albumPath OR tracks.`AlbumPath` IS NULL)"); | ||
3252 | 3600 | | |||
3253 | auto result = prepareQuery(d->mSelectTracksMappingPriority, selectTracksMappingPriorityQueryText); | 3601 | auto result = prepareQuery(d->mSelectTracksMappingPriority, selectTracksMappingPriorityQueryText); | ||
3254 | 3602 | | |||
3255 | if (!result) { | 3603 | if (!result) { | ||
3256 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriority.lastQuery(); | 3604 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriority.lastQuery(); | ||
3257 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriority.lastError(); | 3605 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriority.lastError(); | ||
3258 | 3606 | | |||
3259 | Q_EMIT databaseError(); | 3607 | Q_EMIT databaseError(); | ||
3260 | } | 3608 | } | ||
3261 | } | 3609 | } | ||
3262 | 3610 | | |||
3263 | { | 3611 | { | ||
3264 | auto selectTracksMappingPriorityQueryByTrackIdText = QStringLiteral("SELECT " | 3612 | auto selectTracksMappingPriorityQueryByTrackIdText = QStringLiteral("SELECT " | ||
3265 | "MAX(track.`Priority`) " | 3613 | "MAX(track.`Priority`) " | ||
3266 | "FROM " | 3614 | "FROM " | ||
3267 | "`TracksData` trackData, " | 3615 | "`TracksData` trackData, " | ||
3268 | "`Tracks` track " | 3616 | "`Tracks` track " | ||
3269 | "WHERE " | 3617 | "WHERE " | ||
3270 | "track.`ID` = :trackId AND " | 3618 | "track.`ID` = :trackId AND " | ||
3271 | "trackData.`FileName` = track.`FileName`"); | 3619 | "trackData.`FileName` = track.`FileName`"); | ||
3272 | 3620 | | |||
3273 | auto result = prepareQuery(d->mSelectTracksMappingPriorityByTrackId, selectTracksMappingPriorityQueryByTrackIdText); | 3621 | auto result = prepareQuery(d->mSelectTracksMappingPriorityByTrackId, selectTracksMappingPriorityQueryByTrackIdText); | ||
3274 | 3622 | | |||
3275 | if (!result) { | 3623 | if (!result) { | ||
3276 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriorityByTrackId.lastQuery(); | 3624 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriorityByTrackId.lastQuery(); | ||
3277 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriorityByTrackId.lastError(); | 3625 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksMappingPriorityByTrackId.lastError(); | ||
3278 | 3626 | | |||
3279 | Q_EMIT databaseError(); | 3627 | Q_EMIT databaseError(); | ||
3280 | } | 3628 | } | ||
3281 | } | 3629 | } | ||
3282 | 3630 | | |||
3283 | { | 3631 | { | ||
3284 | auto selectAllTrackFilesFromSourceQueryText = QStringLiteral("SELECT " | 3632 | auto selectAllTrackFilesFromSourceQueryText = QStringLiteral("SELECT " | ||
3285 | "tracksMapping.`FileName`, " | 3633 | "tracksMapping.`FileName`, " | ||
3286 | "tracksMapping.`FileModifiedTime` " | 3634 | "tracksMapping.`FileModifiedTime` " | ||
3287 | "FROM " | 3635 | "FROM " | ||
3288 | "`TracksData` tracksMapping, " | 3636 | "`TracksData` tracksMapping, " | ||
3289 | "`Tracks` tracks, " | 3637 | "`Tracks` tracks " | ||
3290 | "`DiscoverSource` source " | | |||
3291 | "WHERE " | 3638 | "WHERE " | ||
3292 | "tracksMapping.`DiscoverID` = source.`ID` AND " | 3639 | "tracks.`FileName` = tracksMapping.`FileName`"); | ||
3293 | "tracks.`FileName` = tracksMapping.`FileName` AND " | | |||
3294 | "source.`Name` = :sourceName"); | | |||
3295 | 3640 | | |||
3296 | auto result = prepareQuery(d->mSelectAllTrackFilesFromSourceQuery, selectAllTrackFilesFromSourceQueryText); | 3641 | auto result = prepareQuery(d->mSelectAllTrackFilesQuery, selectAllTrackFilesFromSourceQueryText); | ||
3297 | 3642 | | |||
3298 | if (!result) { | 3643 | if (!result) { | ||
3299 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTrackFilesFromSourceQuery.lastQuery(); | 3644 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTrackFilesQuery.lastQuery(); | ||
3300 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAllTrackFilesFromSourceQuery.lastError(); | 3645 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAllTrackFilesQuery.lastError(); | ||
3301 | 3646 | | |||
3302 | Q_EMIT databaseError(); | 3647 | Q_EMIT databaseError(); | ||
3303 | } | 3648 | } | ||
3304 | } | 3649 | } | ||
3305 | 3650 | | |||
3306 | { | 3651 | { | ||
3307 | auto insertMusicSourceQueryText = QStringLiteral("INSERT OR IGNORE INTO `DiscoverSource` (`ID`, `Name`) " | 3652 | auto insertMusicSourceQueryText = QStringLiteral("INSERT OR IGNORE INTO `DiscoverSource` (`ID`, `Name`) " | ||
3308 | "VALUES (:discoverId, :name)"); | 3653 | "VALUES (:discoverId, :name)"); | ||
3309 | 3654 | | |||
3310 | auto result = prepareQuery(d->mInsertMusicSource, insertMusicSourceQueryText); | 3655 | auto result = prepareQuery(d->mInsertMusicSource, insertMusicSourceQueryText); | ||
3311 | 3656 | | |||
3312 | if (!result) { | 3657 | if (!result) { | ||
3313 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertMusicSource.lastQuery(); | 3658 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertMusicSource.lastQuery(); | ||
3314 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertMusicSource.lastError(); | 3659 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertMusicSource.lastError(); | ||
3315 | 3660 | | |||
3316 | Q_EMIT databaseError(); | 3661 | Q_EMIT databaseError(); | ||
3317 | } | 3662 | } | ||
3318 | } | 3663 | } | ||
3319 | 3664 | | |||
3320 | { | 3665 | { | ||
3321 | auto selectMusicSourceQueryText = QStringLiteral("SELECT `ID` FROM `DiscoverSource` WHERE `Name` = :name"); | 3666 | auto selectMusicSourceQueryText = QStringLiteral("SELECT `ID` FROM `DiscoverSource` WHERE `Name` = :name"); | ||
3322 | 3667 | | |||
3323 | auto result = prepareQuery(d->mSelectMusicSource, selectMusicSourceQueryText); | 3668 | auto result = prepareQuery(d->mSelectMusicSource, selectMusicSourceQueryText); | ||
3324 | 3669 | | |||
3325 | if (!result) { | 3670 | if (!result) { | ||
3326 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectMusicSource.lastQuery(); | 3671 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectMusicSource.lastQuery(); | ||
3327 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectMusicSource.lastError(); | 3672 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectMusicSource.lastError(); | ||
3328 | 3673 | | |||
3329 | Q_EMIT databaseError(); | 3674 | Q_EMIT databaseError(); | ||
3330 | } | 3675 | } | ||
3331 | } | 3676 | } | ||
3332 | 3677 | | |||
3333 | { | 3678 | { | ||
3334 | auto selectTrackQueryText = QStringLiteral("SELECT " | 3679 | auto selectTrackQueryText = QStringLiteral("SELECT " | ||
3335 | "tracks.`ID`, tracksMapping.`FileName` " | 3680 | "tracks.`ID`, tracksMapping.`FileName` " | ||
Show All 21 Lines | |||||
3357 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | 3702 | " (tracks.`AlbumArtistName` IS NULL OR tracks.`AlbumArtistName` = tracks2.`AlbumArtistName`) AND " | ||
3358 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 3703 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
3359 | ")" | 3704 | ")" | ||
3360 | ""); | 3705 | ""); | ||
3361 | 3706 | | |||
3362 | auto result = prepareQuery(d->mSelectTrackIdFromTitleAlbumIdArtistQuery, selectTrackQueryText); | 3707 | auto result = prepareQuery(d->mSelectTrackIdFromTitleAlbumIdArtistQuery, selectTrackQueryText); | ||
3363 | 3708 | | |||
3364 | if (!result) { | 3709 | if (!result) { | ||
3365 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumIdArtistQuery.lastQuery(); | 3710 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumIdArtistQuery.lastQuery(); | ||
3366 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumIdArtistQuery.lastError(); | 3711 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumIdArtistQuery.lastError(); | ||
3367 | 3712 | | |||
3368 | Q_EMIT databaseError(); | 3713 | Q_EMIT databaseError(); | ||
3369 | } | 3714 | } | ||
3370 | } | 3715 | } | ||
3371 | 3716 | | |||
3372 | { | 3717 | { | ||
3373 | auto insertTrackQueryText = QStringLiteral("INSERT INTO `Tracks` " | 3718 | auto insertTrackQueryText = QStringLiteral("INSERT INTO `Tracks` " | ||
3374 | "(" | 3719 | "(" | ||
3375 | "`ID`, " | 3720 | "`ID`, " | ||
3376 | "`DiscoverID`, " | | |||
3377 | "`FileName`, " | 3721 | "`FileName`, " | ||
3378 | "`Priority`, " | 3722 | "`Priority`, " | ||
3379 | "`Title`, " | 3723 | "`Title`, " | ||
3380 | "`ArtistName`, " | 3724 | "`ArtistName`, " | ||
3381 | "`AlbumTitle`, " | 3725 | "`AlbumTitle`, " | ||
3382 | "`AlbumArtistName`, " | 3726 | "`AlbumArtistName`, " | ||
3383 | "`AlbumPath`, " | 3727 | "`AlbumPath`, " | ||
3384 | "`Genre`, " | 3728 | "`Genre`, " | ||
3385 | "`Composer`, " | 3729 | "`Composer`, " | ||
3386 | "`Lyricist`, " | 3730 | "`Lyricist`, " | ||
3387 | "`Comment`, " | 3731 | "`Comment`, " | ||
3388 | "`TrackNumber`, " | 3732 | "`TrackNumber`, " | ||
3389 | "`DiscNumber`, " | 3733 | "`DiscNumber`, " | ||
3390 | "`Channels`, " | 3734 | "`Channels`, " | ||
3391 | "`BitRate`, " | 3735 | "`BitRate`, " | ||
3392 | "`SampleRate`, " | 3736 | "`SampleRate`, " | ||
3393 | "`Year`, " | 3737 | "`Year`, " | ||
3394 | "`Duration`, " | 3738 | "`Duration`, " | ||
3395 | "`Rating`, " | 3739 | "`Rating`, " | ||
3396 | "`HasEmbeddedCover`) " | 3740 | "`HasEmbeddedCover`) " | ||
3397 | "VALUES " | 3741 | "VALUES " | ||
3398 | "(" | 3742 | "(" | ||
3399 | ":trackId, " | 3743 | ":trackId, " | ||
3400 | ":discoverId, " | | |||
3401 | ":fileName, " | 3744 | ":fileName, " | ||
3402 | ":priority, " | 3745 | ":priority, " | ||
3403 | ":title, " | 3746 | ":title, " | ||
3404 | ":artistName, " | 3747 | ":artistName, " | ||
3405 | ":albumTitle, " | 3748 | ":albumTitle, " | ||
3406 | ":albumArtistName, " | 3749 | ":albumArtistName, " | ||
3407 | ":albumPath, " | 3750 | ":albumPath, " | ||
3408 | ":genre, " | 3751 | ":genre, " | ||
3409 | ":composer, " | 3752 | ":composer, " | ||
3410 | ":lyricist, " | 3753 | ":lyricist, " | ||
3411 | ":comment, " | 3754 | ":comment, " | ||
3412 | ":trackNumber, " | 3755 | ":trackNumber, " | ||
3413 | ":discNumber, " | 3756 | ":discNumber, " | ||
3414 | ":channels, " | 3757 | ":channels, " | ||
3415 | ":bitRate, " | 3758 | ":bitRate, " | ||
3416 | ":sampleRate, " | 3759 | ":sampleRate, " | ||
3417 | ":year, " | 3760 | ":year, " | ||
3418 | ":trackDuration, " | 3761 | ":trackDuration, " | ||
3419 | ":trackRating, " | 3762 | ":trackRating, " | ||
3420 | ":hasEmbeddedCover)"); | 3763 | ":hasEmbeddedCover)"); | ||
3421 | 3764 | | |||
3422 | auto result = prepareQuery(d->mInsertTrackQuery, insertTrackQueryText); | 3765 | auto result = prepareQuery(d->mInsertTrackQuery, insertTrackQueryText); | ||
3423 | 3766 | | |||
3424 | if (!result) { | 3767 | if (!result) { | ||
3425 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertTrackQuery.lastQuery(); | 3768 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertTrackQuery.lastQuery(); | ||
3426 | qDebug() << "DatabaseInterface::initRequest" << d->mInsertTrackQuery.lastError(); | 3769 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mInsertTrackQuery.lastError(); | ||
3427 | 3770 | | |||
3428 | Q_EMIT databaseError(); | 3771 | Q_EMIT databaseError(); | ||
3429 | } | 3772 | } | ||
3430 | } | 3773 | } | ||
3431 | 3774 | | |||
3432 | { | 3775 | { | ||
3433 | auto updateTrackQueryText = QStringLiteral("UPDATE `Tracks` " | 3776 | auto updateTrackQueryText = QStringLiteral("UPDATE `Tracks` " | ||
3434 | "SET " | 3777 | "SET " | ||
Show All 16 Lines | |||||
3451 | " `Duration` = :trackDuration, " | 3794 | " `Duration` = :trackDuration, " | ||
3452 | "`Rating` = :trackRating " | 3795 | "`Rating` = :trackRating " | ||
3453 | "WHERE " | 3796 | "WHERE " | ||
3454 | "`ID` = :trackId"); | 3797 | "`ID` = :trackId"); | ||
3455 | 3798 | | |||
3456 | auto result = prepareQuery(d->mUpdateTrackQuery, updateTrackQueryText); | 3799 | auto result = prepareQuery(d->mUpdateTrackQuery, updateTrackQueryText); | ||
3457 | 3800 | | |||
3458 | if (!result) { | 3801 | if (!result) { | ||
3459 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackQuery.lastQuery(); | 3802 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackQuery.lastQuery(); | ||
3460 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackQuery.lastError(); | 3803 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackQuery.lastError(); | ||
3461 | 3804 | | |||
3462 | Q_EMIT databaseError(); | 3805 | Q_EMIT databaseError(); | ||
3463 | } | 3806 | } | ||
3464 | } | 3807 | } | ||
3465 | 3808 | | |||
3466 | { | 3809 | { | ||
3467 | auto updateAlbumArtistQueryText = QStringLiteral("UPDATE `Albums` " | 3810 | auto updateAlbumArtistQueryText = QStringLiteral("UPDATE `Albums` " | ||
3468 | "SET " | 3811 | "SET " | ||
3469 | "`ArtistName` = :artistName " | 3812 | "`ArtistName` = :artistName " | ||
3470 | "WHERE " | 3813 | "WHERE " | ||
3471 | "`ID` = :albumId"); | 3814 | "`ID` = :albumId"); | ||
3472 | 3815 | | |||
3473 | auto result = prepareQuery(d->mUpdateAlbumArtistQuery, updateAlbumArtistQueryText); | 3816 | auto result = prepareQuery(d->mUpdateAlbumArtistQuery, updateAlbumArtistQueryText); | ||
3474 | 3817 | | |||
3475 | if (!result) { | 3818 | if (!result) { | ||
3476 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistQuery.lastQuery(); | 3819 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistQuery.lastQuery(); | ||
3477 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistQuery.lastError(); | 3820 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistQuery.lastError(); | ||
3478 | 3821 | | |||
3479 | Q_EMIT databaseError(); | 3822 | Q_EMIT databaseError(); | ||
3480 | } | 3823 | } | ||
3481 | } | 3824 | } | ||
3482 | 3825 | | |||
3483 | { | 3826 | { | ||
3484 | auto updateAlbumArtistInTracksQueryText = QStringLiteral("UPDATE `Tracks` " | 3827 | auto updateAlbumArtistInTracksQueryText = QStringLiteral("UPDATE `Tracks` " | ||
3485 | "SET " | 3828 | "SET " | ||
3486 | "`AlbumArtistName` = :artistName " | 3829 | "`AlbumArtistName` = :artistName " | ||
3487 | "WHERE " | 3830 | "WHERE " | ||
3488 | "`AlbumTitle` = :albumTitle AND " | 3831 | "`AlbumTitle` = :albumTitle AND " | ||
3489 | "`AlbumPath` = :albumPath AND " | 3832 | "`AlbumPath` = :albumPath AND " | ||
3490 | "`AlbumArtistName` IS NULL"); | 3833 | "`AlbumArtistName` IS NULL"); | ||
3491 | 3834 | | |||
3492 | auto result = prepareQuery(d->mUpdateAlbumArtistInTracksQuery, updateAlbumArtistInTracksQueryText); | 3835 | auto result = prepareQuery(d->mUpdateAlbumArtistInTracksQuery, updateAlbumArtistInTracksQueryText); | ||
3493 | 3836 | | |||
3494 | if (!result) { | 3837 | if (!result) { | ||
3495 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistInTracksQuery.lastQuery(); | 3838 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistInTracksQuery.lastQuery(); | ||
3496 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistInTracksQuery.lastError(); | 3839 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtistInTracksQuery.lastError(); | ||
3497 | 3840 | | |||
3498 | Q_EMIT databaseError(); | 3841 | Q_EMIT databaseError(); | ||
3499 | } | 3842 | } | ||
3500 | } | 3843 | } | ||
3501 | 3844 | | |||
3502 | { | 3845 | { | ||
3503 | auto queryMaximumTrackIdQueryText = QStringLiteral("SELECT MAX(tracks.`ID`)" | 3846 | auto queryMaximumTrackIdQueryText = QStringLiteral("SELECT MAX(tracks.`ID`)" | ||
3504 | "FROM " | 3847 | "FROM " | ||
3505 | "`Tracks` tracks"); | 3848 | "`Tracks` tracks"); | ||
3506 | 3849 | | |||
3507 | auto result = prepareQuery(d->mQueryMaximumTrackIdQuery, queryMaximumTrackIdQueryText); | 3850 | auto result = prepareQuery(d->mQueryMaximumTrackIdQuery, queryMaximumTrackIdQueryText); | ||
3508 | 3851 | | |||
3509 | if (!result) { | 3852 | if (!result) { | ||
3510 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumTrackIdQuery.lastQuery(); | 3853 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumTrackIdQuery.lastQuery(); | ||
3511 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumTrackIdQuery.lastError(); | 3854 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumTrackIdQuery.lastError(); | ||
3512 | 3855 | | |||
3513 | Q_EMIT databaseError(); | 3856 | Q_EMIT databaseError(); | ||
3514 | } | 3857 | } | ||
3515 | } | 3858 | } | ||
3516 | 3859 | | |||
3517 | { | 3860 | { | ||
3518 | auto queryMaximumAlbumIdQueryText = QStringLiteral("SELECT MAX(albums.`ID`)" | 3861 | auto queryMaximumAlbumIdQueryText = QStringLiteral("SELECT MAX(albums.`ID`)" | ||
3519 | "FROM " | 3862 | "FROM " | ||
3520 | "`Albums` albums"); | 3863 | "`Albums` albums"); | ||
3521 | 3864 | | |||
3522 | auto result = prepareQuery(d->mQueryMaximumAlbumIdQuery, queryMaximumAlbumIdQueryText); | 3865 | auto result = prepareQuery(d->mQueryMaximumAlbumIdQuery, queryMaximumAlbumIdQueryText); | ||
3523 | 3866 | | |||
3524 | if (!result) { | 3867 | if (!result) { | ||
3525 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumAlbumIdQuery.lastQuery(); | 3868 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumAlbumIdQuery.lastQuery(); | ||
3526 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumAlbumIdQuery.lastError(); | 3869 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumAlbumIdQuery.lastError(); | ||
3527 | 3870 | | |||
3528 | Q_EMIT databaseError(); | 3871 | Q_EMIT databaseError(); | ||
3529 | } | 3872 | } | ||
3530 | } | 3873 | } | ||
3531 | 3874 | | |||
3532 | { | 3875 | { | ||
3533 | auto queryMaximumArtistIdQueryText = QStringLiteral("SELECT MAX(artists.`ID`)" | 3876 | auto queryMaximumArtistIdQueryText = QStringLiteral("SELECT MAX(artists.`ID`)" | ||
3534 | "FROM " | 3877 | "FROM " | ||
3535 | "`Artists` artists"); | 3878 | "`Artists` artists"); | ||
3536 | 3879 | | |||
3537 | auto result = prepareQuery(d->mQueryMaximumArtistIdQuery, queryMaximumArtistIdQueryText); | 3880 | auto result = prepareQuery(d->mQueryMaximumArtistIdQuery, queryMaximumArtistIdQueryText); | ||
3538 | 3881 | | |||
3539 | if (!result) { | 3882 | if (!result) { | ||
3540 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumArtistIdQuery.lastQuery(); | 3883 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumArtistIdQuery.lastQuery(); | ||
3541 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumArtistIdQuery.lastError(); | 3884 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumArtistIdQuery.lastError(); | ||
3542 | 3885 | | |||
3543 | Q_EMIT databaseError(); | 3886 | Q_EMIT databaseError(); | ||
3544 | } | 3887 | } | ||
3545 | } | 3888 | } | ||
3546 | 3889 | | |||
3547 | { | 3890 | { | ||
3548 | auto queryMaximumLyricistIdQueryText = QStringLiteral("SELECT MAX(lyricists.`ID`)" | 3891 | auto queryMaximumLyricistIdQueryText = QStringLiteral("SELECT MAX(lyricists.`ID`)" | ||
3549 | "FROM " | 3892 | "FROM " | ||
3550 | "`Lyricist` lyricists"); | 3893 | "`Lyricist` lyricists"); | ||
3551 | 3894 | | |||
3552 | auto result = prepareQuery(d->mQueryMaximumLyricistIdQuery, queryMaximumLyricistIdQueryText); | 3895 | auto result = prepareQuery(d->mQueryMaximumLyricistIdQuery, queryMaximumLyricistIdQueryText); | ||
3553 | 3896 | | |||
3554 | if (!result) { | 3897 | if (!result) { | ||
3555 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumLyricistIdQuery.lastQuery(); | 3898 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumLyricistIdQuery.lastQuery(); | ||
3556 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumLyricistIdQuery.lastError(); | 3899 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumLyricistIdQuery.lastError(); | ||
3557 | 3900 | | |||
3558 | Q_EMIT databaseError(); | 3901 | Q_EMIT databaseError(); | ||
3559 | } | 3902 | } | ||
3560 | } | 3903 | } | ||
3561 | 3904 | | |||
3562 | { | 3905 | { | ||
3563 | auto queryMaximumComposerIdQueryText = QStringLiteral("SELECT MAX(composers.`ID`)" | 3906 | auto queryMaximumComposerIdQueryText = QStringLiteral("SELECT MAX(composers.`ID`)" | ||
3564 | "FROM " | 3907 | "FROM " | ||
3565 | "`Composer` composers"); | 3908 | "`Composer` composers"); | ||
3566 | 3909 | | |||
3567 | auto result = prepareQuery(d->mQueryMaximumComposerIdQuery, queryMaximumComposerIdQueryText); | 3910 | auto result = prepareQuery(d->mQueryMaximumComposerIdQuery, queryMaximumComposerIdQueryText); | ||
3568 | 3911 | | |||
3569 | if (!result) { | 3912 | if (!result) { | ||
3570 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumComposerIdQuery.lastQuery(); | 3913 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumComposerIdQuery.lastQuery(); | ||
3571 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumComposerIdQuery.lastError(); | 3914 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumComposerIdQuery.lastError(); | ||
3572 | 3915 | | |||
3573 | Q_EMIT databaseError(); | 3916 | Q_EMIT databaseError(); | ||
3574 | } | 3917 | } | ||
3575 | } | 3918 | } | ||
3576 | 3919 | | |||
3577 | { | 3920 | { | ||
3578 | auto queryMaximumGenreIdQueryText = QStringLiteral("SELECT MAX(genres.`ID`)" | 3921 | auto queryMaximumGenreIdQueryText = QStringLiteral("SELECT MAX(genres.`ID`)" | ||
3579 | "FROM " | 3922 | "FROM " | ||
3580 | "`Genre` genres"); | 3923 | "`Genre` genres"); | ||
3581 | 3924 | | |||
3582 | auto result = prepareQuery(d->mQueryMaximumGenreIdQuery, queryMaximumGenreIdQueryText); | 3925 | auto result = prepareQuery(d->mQueryMaximumGenreIdQuery, queryMaximumGenreIdQueryText); | ||
3583 | 3926 | | |||
3584 | if (!result) { | 3927 | if (!result) { | ||
3585 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumGenreIdQuery.lastQuery(); | 3928 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumGenreIdQuery.lastQuery(); | ||
3586 | qDebug() << "DatabaseInterface::initRequest" << d->mQueryMaximumGenreIdQuery.lastError(); | 3929 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mQueryMaximumGenreIdQuery.lastError(); | ||
3587 | 3930 | | |||
3588 | Q_EMIT databaseError(); | 3931 | Q_EMIT databaseError(); | ||
3589 | } | 3932 | } | ||
3590 | } | 3933 | } | ||
3591 | 3934 | | |||
3592 | { | 3935 | { | ||
3593 | auto selectTrackQueryText = QStringLiteral("SELECT " | 3936 | auto selectTrackQueryText = QStringLiteral("SELECT " | ||
3594 | "tracks.ID " | 3937 | "tracks.ID " | ||
3595 | "FROM " | 3938 | "FROM " | ||
3596 | "`Tracks` tracks " | 3939 | "`Tracks` tracks " | ||
3597 | "WHERE " | 3940 | "WHERE " | ||
3598 | "tracks.`Title` = :title AND " | 3941 | "tracks.`Title` = :title AND " | ||
3599 | "tracks.`AlbumTitle` = :album AND " | 3942 | "tracks.`AlbumTitle` = :album AND " | ||
3600 | "tracks.`TrackNumber` = :trackNumber AND " | 3943 | "tracks.`TrackNumber` = :trackNumber AND " | ||
3601 | "tracks.`DiscNumber` = :discNumber AND " | 3944 | "tracks.`DiscNumber` = :discNumber AND " | ||
3602 | "tracks.`ArtistName` = :artist"); | 3945 | "tracks.`ArtistName` = :artist"); | ||
3603 | 3946 | | |||
3604 | auto result = prepareQuery(d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery, selectTrackQueryText); | 3947 | auto result = prepareQuery(d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery, selectTrackQueryText); | ||
3605 | 3948 | | |||
3606 | if (!result) { | 3949 | if (!result) { | ||
3607 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastQuery(); | 3950 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastQuery(); | ||
3608 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastError(); | 3951 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastError(); | ||
3609 | 3952 | | |||
3610 | Q_EMIT databaseError(); | 3953 | Q_EMIT databaseError(); | ||
3611 | } | 3954 | } | ||
3612 | } | 3955 | } | ||
3613 | 3956 | | |||
3614 | { | 3957 | { | ||
3615 | auto selectTrackQueryText = QStringLiteral("SELECT " | 3958 | auto selectTrackQueryText = QStringLiteral("SELECT " | ||
3616 | "tracks.ID " | 3959 | "tracks.ID " | ||
3617 | "FROM " | 3960 | "FROM " | ||
3618 | "`Tracks` tracks, " | 3961 | "`Tracks` tracks, " | ||
3619 | "`Albums` albums " | 3962 | "`Albums` albums " | ||
3620 | "WHERE " | 3963 | "WHERE " | ||
3621 | "tracks.`Title` = :title AND " | 3964 | "tracks.`Title` = :title AND " | ||
3622 | "tracks.`Priority` = :priority AND " | 3965 | "tracks.`Priority` = :priority AND " | ||
3623 | "(tracks.`ArtistName` = :trackArtist OR tracks.`ArtistName` IS NULL) AND " | 3966 | "(tracks.`ArtistName` = :trackArtist OR tracks.`ArtistName` IS NULL) AND " | ||
3624 | "(tracks.`AlbumTitle` = :album OR tracks.`AlbumTitle` IS NULL) AND " | 3967 | "(tracks.`AlbumTitle` = :album OR tracks.`AlbumTitle` IS NULL) AND " | ||
3625 | "(tracks.`AlbumArtistName` = :albumArtist OR tracks.`AlbumArtistName` IS NULL) AND " | 3968 | "(tracks.`AlbumArtistName` = :albumArtist OR tracks.`AlbumArtistName` IS NULL) AND " | ||
3626 | "(tracks.`AlbumPath` = :albumPath OR tracks.`AlbumPath` IS NULL)"); | 3969 | "(tracks.`AlbumPath` = :albumPath OR tracks.`AlbumPath` IS NULL)"); | ||
3627 | 3970 | | |||
3628 | auto result = prepareQuery(d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery, selectTrackQueryText); | 3971 | auto result = prepareQuery(d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery, selectTrackQueryText); | ||
3629 | 3972 | | |||
3630 | if (!result) { | 3973 | if (!result) { | ||
3631 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastQuery(); | 3974 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastQuery(); | ||
3632 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastError(); | 3975 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastError(); | ||
3633 | 3976 | | |||
3634 | Q_EMIT databaseError(); | 3977 | Q_EMIT databaseError(); | ||
3635 | } | 3978 | } | ||
3636 | } | 3979 | } | ||
3637 | 3980 | | |||
3638 | { | 3981 | { | ||
3639 | auto selectAlbumArtUriFromAlbumIdQueryText = QStringLiteral("SELECT `CoverFileName`" | 3982 | auto selectAlbumArtUriFromAlbumIdQueryText = QStringLiteral("SELECT `CoverFileName`" | ||
3640 | "FROM " | 3983 | "FROM " | ||
3641 | "`Albums` " | 3984 | "`Albums` " | ||
3642 | "WHERE " | 3985 | "WHERE " | ||
3643 | "`ID` = :albumId"); | 3986 | "`ID` = :albumId"); | ||
3644 | 3987 | | |||
3645 | auto result = prepareQuery(d->mSelectAlbumArtUriFromAlbumIdQuery, selectAlbumArtUriFromAlbumIdQueryText); | 3988 | auto result = prepareQuery(d->mSelectAlbumArtUriFromAlbumIdQuery, selectAlbumArtUriFromAlbumIdQueryText); | ||
3646 | 3989 | | |||
3647 | if (!result) { | 3990 | if (!result) { | ||
3648 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastQuery(); | 3991 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastQuery(); | ||
3649 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastError(); | 3992 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastError(); | ||
3650 | 3993 | | |||
3651 | Q_EMIT databaseError(); | 3994 | Q_EMIT databaseError(); | ||
3652 | } | 3995 | } | ||
3653 | } | 3996 | } | ||
3654 | 3997 | | |||
3655 | { | 3998 | { | ||
3656 | auto updateAlbumArtUriFromAlbumIdQueryText = QStringLiteral("UPDATE `Albums` " | 3999 | auto updateAlbumArtUriFromAlbumIdQueryText = QStringLiteral("UPDATE `Albums` " | ||
3657 | "SET `CoverFileName` = :coverFileName " | 4000 | "SET `CoverFileName` = :coverFileName " | ||
3658 | "WHERE " | 4001 | "WHERE " | ||
3659 | "`ID` = :albumId"); | 4002 | "`ID` = :albumId"); | ||
3660 | 4003 | | |||
3661 | auto result = prepareQuery(d->mUpdateAlbumArtUriFromAlbumIdQuery, updateAlbumArtUriFromAlbumIdQueryText); | 4004 | auto result = prepareQuery(d->mUpdateAlbumArtUriFromAlbumIdQuery, updateAlbumArtUriFromAlbumIdQueryText); | ||
3662 | 4005 | | |||
3663 | if (!result) { | 4006 | if (!result) { | ||
3664 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastQuery(); | 4007 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastQuery(); | ||
3665 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastError(); | 4008 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastError(); | ||
3666 | 4009 | | |||
3667 | Q_EMIT databaseError(); | 4010 | Q_EMIT databaseError(); | ||
3668 | } | 4011 | } | ||
3669 | } | 4012 | } | ||
3670 | 4013 | | |||
3671 | { | 4014 | { | ||
3672 | auto selectTracksFromArtistQueryText = QStringLiteral("SELECT " | 4015 | auto selectTracksFromArtistQueryText = QStringLiteral("SELECT " | ||
3673 | "tracks.`ID`, " | 4016 | "tracks.`ID`, " | ||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Line(s) | |||||
3739 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | 4082 | " (tracks.`AlbumPath` IS NULL OR tracks.`AlbumPath` = tracks2.`AlbumPath`)" | ||
3740 | ")" | 4083 | ")" | ||
3741 | "ORDER BY tracks.`Title` ASC, " | 4084 | "ORDER BY tracks.`Title` ASC, " | ||
3742 | "album.`Title` ASC"); | 4085 | "album.`Title` ASC"); | ||
3743 | 4086 | | |||
3744 | auto result = prepareQuery(d->mSelectTracksFromArtist, selectTracksFromArtistQueryText); | 4087 | auto result = prepareQuery(d->mSelectTracksFromArtist, selectTracksFromArtistQueryText); | ||
3745 | 4088 | | |||
3746 | if (!result) { | 4089 | if (!result) { | ||
3747 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksFromArtist.lastQuery(); | 4090 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksFromArtist.lastQuery(); | ||
3748 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectTracksFromArtist.lastError(); | 4091 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectTracksFromArtist.lastError(); | ||
3749 | 4092 | | |||
3750 | Q_EMIT databaseError(); | 4093 | Q_EMIT databaseError(); | ||
3751 | } | 4094 | } | ||
3752 | } | 4095 | } | ||
3753 | 4096 | | |||
3754 | { | 4097 | { | ||
3755 | auto selectAlbumIdsFromArtistQueryText = QStringLiteral("SELECT " | 4098 | auto selectAlbumIdsFromArtistQueryText = QStringLiteral("SELECT " | ||
3756 | "album.`ID` " | 4099 | "album.`ID` " | ||
3757 | "FROM " | 4100 | "FROM " | ||
3758 | "`Albums` album " | 4101 | "`Albums` album " | ||
3759 | "WHERE " | 4102 | "WHERE " | ||
3760 | "album.`ArtistName` = :artistName"); | 4103 | "album.`ArtistName` = :artistName"); | ||
3761 | 4104 | | |||
3762 | auto result = prepareQuery(d->mSelectAlbumIdsFromArtist, selectAlbumIdsFromArtistQueryText); | 4105 | auto result = prepareQuery(d->mSelectAlbumIdsFromArtist, selectAlbumIdsFromArtistQueryText); | ||
3763 | 4106 | | |||
3764 | if (!result) { | 4107 | if (!result) { | ||
3765 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdsFromArtist.lastQuery(); | 4108 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdsFromArtist.lastQuery(); | ||
3766 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectAlbumIdsFromArtist.lastError(); | 4109 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectAlbumIdsFromArtist.lastError(); | ||
3767 | 4110 | | |||
3768 | Q_EMIT databaseError(); | 4111 | Q_EMIT databaseError(); | ||
3769 | } | 4112 | } | ||
3770 | } | 4113 | } | ||
3771 | 4114 | | |||
3772 | { | 4115 | { | ||
3773 | auto selectArtistQueryText = QStringLiteral("SELECT `ID`, " | 4116 | auto selectArtistQueryText = QStringLiteral("SELECT `ID`, " | ||
3774 | "`Name` " | 4117 | "`Name` " | ||
3775 | "FROM `Artists` " | 4118 | "FROM `Artists` " | ||
3776 | "WHERE " | 4119 | "WHERE " | ||
3777 | "`ID` = :artistId"); | 4120 | "`ID` = :artistId"); | ||
3778 | 4121 | | |||
3779 | auto result = prepareQuery(d->mSelectArtistQuery, selectArtistQueryText); | 4122 | auto result = prepareQuery(d->mSelectArtistQuery, selectArtistQueryText); | ||
3780 | 4123 | | |||
3781 | if (!result) { | 4124 | if (!result) { | ||
3782 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectArtistQuery.lastQuery(); | 4125 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectArtistQuery.lastQuery(); | ||
3783 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectArtistQuery.lastError(); | 4126 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectArtistQuery.lastError(); | ||
3784 | 4127 | | |||
3785 | Q_EMIT databaseError(); | 4128 | Q_EMIT databaseError(); | ||
3786 | } | 4129 | } | ||
3787 | } | 4130 | } | ||
3788 | 4131 | | |||
3789 | { | 4132 | { | ||
3790 | auto updateTrackStatisticsQueryText = QStringLiteral("UPDATE `TracksData` " | 4133 | auto updateTrackStatisticsQueryText = QStringLiteral("UPDATE `TracksData` " | ||
3791 | "SET " | 4134 | "SET " | ||
3792 | "`LastPlayDate` = :playDate, " | 4135 | "`LastPlayDate` = :playDate, " | ||
3793 | "`PlayCounter` = `PlayCounter` + 1 " | 4136 | "`PlayCounter` = `PlayCounter` + 1 " | ||
3794 | "WHERE " | 4137 | "WHERE " | ||
3795 | "`FileName` = :fileName"); | 4138 | "`FileName` = :fileName"); | ||
3796 | 4139 | | |||
3797 | auto result = prepareQuery(d->mUpdateTrackStatistics, updateTrackStatisticsQueryText); | 4140 | auto result = prepareQuery(d->mUpdateTrackStatistics, updateTrackStatisticsQueryText); | ||
3798 | 4141 | | |||
3799 | if (!result) { | 4142 | if (!result) { | ||
3800 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackStatistics.lastQuery(); | 4143 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackStatistics.lastQuery(); | ||
3801 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackStatistics.lastError(); | 4144 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackStatistics.lastError(); | ||
3802 | 4145 | | |||
3803 | Q_EMIT databaseError(); | 4146 | Q_EMIT databaseError(); | ||
3804 | } | 4147 | } | ||
3805 | } | 4148 | } | ||
3806 | 4149 | | |||
3807 | { | 4150 | { | ||
3808 | auto updateTrackFirstPlayStatisticsQueryText = QStringLiteral("UPDATE `TracksData` " | 4151 | auto updateTrackFirstPlayStatisticsQueryText = QStringLiteral("UPDATE `TracksData` " | ||
3809 | "SET " | 4152 | "SET " | ||
3810 | "`FirstPlayDate` = :playDate " | 4153 | "`FirstPlayDate` = :playDate " | ||
3811 | "WHERE " | 4154 | "WHERE " | ||
3812 | "`FileName` = :fileName AND " | 4155 | "`FileName` = :fileName AND " | ||
3813 | "`FirstPlayDate` IS NULL"); | 4156 | "`FirstPlayDate` IS NULL"); | ||
3814 | 4157 | | |||
3815 | auto result = prepareQuery(d->mUpdateTrackFirstPlayStatistics, updateTrackFirstPlayStatisticsQueryText); | 4158 | auto result = prepareQuery(d->mUpdateTrackFirstPlayStatistics, updateTrackFirstPlayStatisticsQueryText); | ||
3816 | 4159 | | |||
3817 | if (!result) { | 4160 | if (!result) { | ||
3818 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackFirstPlayStatistics.lastQuery(); | 4161 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackFirstPlayStatistics.lastQuery(); | ||
3819 | qDebug() << "DatabaseInterface::initRequest" << d->mUpdateTrackFirstPlayStatistics.lastError(); | 4162 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mUpdateTrackFirstPlayStatistics.lastError(); | ||
3820 | 4163 | | |||
3821 | Q_EMIT databaseError(); | 4164 | Q_EMIT databaseError(); | ||
3822 | } | 4165 | } | ||
3823 | } | 4166 | } | ||
3824 | 4167 | | |||
3825 | { | 4168 | { | ||
3826 | auto selectGenreQueryText = QStringLiteral("SELECT `ID`, " | 4169 | auto selectGenreQueryText = QStringLiteral("SELECT `ID`, " | ||
3827 | "`Name` " | 4170 | "`Name` " | ||
3828 | "FROM `Genre` " | 4171 | "FROM `Genre` " | ||
3829 | "WHERE " | 4172 | "WHERE " | ||
3830 | "`ID` = :genreId"); | 4173 | "`ID` = :genreId"); | ||
3831 | 4174 | | |||
3832 | auto result = prepareQuery(d->mSelectGenreQuery, selectGenreQueryText); | 4175 | auto result = prepareQuery(d->mSelectGenreQuery, selectGenreQueryText); | ||
3833 | 4176 | | |||
3834 | if (!result) { | 4177 | if (!result) { | ||
3835 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreQuery.lastQuery(); | 4178 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreQuery.lastQuery(); | ||
3836 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectGenreQuery.lastError(); | 4179 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectGenreQuery.lastError(); | ||
3837 | 4180 | | |||
3838 | Q_EMIT databaseError(); | 4181 | Q_EMIT databaseError(); | ||
3839 | } | 4182 | } | ||
3840 | } | 4183 | } | ||
3841 | 4184 | | |||
3842 | { | 4185 | { | ||
3843 | auto selectComposerQueryText = QStringLiteral("SELECT `ID`, " | 4186 | auto selectComposerQueryText = QStringLiteral("SELECT `ID`, " | ||
3844 | "`Name` " | 4187 | "`Name` " | ||
3845 | "FROM `Composer` " | 4188 | "FROM `Composer` " | ||
3846 | "WHERE " | 4189 | "WHERE " | ||
3847 | "`ID` = :composerId"); | 4190 | "`ID` = :composerId"); | ||
3848 | 4191 | | |||
3849 | auto result = prepareQuery(d->mSelectComposerQuery, selectComposerQueryText); | 4192 | auto result = prepareQuery(d->mSelectComposerQuery, selectComposerQueryText); | ||
3850 | 4193 | | |||
3851 | if (!result) { | 4194 | if (!result) { | ||
3852 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectComposerQuery.lastQuery(); | 4195 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectComposerQuery.lastQuery(); | ||
3853 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectComposerQuery.lastError(); | 4196 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectComposerQuery.lastError(); | ||
3854 | } | 4197 | } | ||
3855 | } | 4198 | } | ||
3856 | 4199 | | |||
3857 | { | 4200 | { | ||
3858 | auto selectLyricistQueryText = QStringLiteral("SELECT `ID`, " | 4201 | auto selectLyricistQueryText = QStringLiteral("SELECT `ID`, " | ||
3859 | "`Name` " | 4202 | "`Name` " | ||
3860 | "FROM `Lyricist` " | 4203 | "FROM `Lyricist` " | ||
3861 | "WHERE " | 4204 | "WHERE " | ||
3862 | "`ID` = :lyricistId"); | 4205 | "`ID` = :lyricistId"); | ||
3863 | 4206 | | |||
3864 | auto result = prepareQuery(d->mSelectLyricistQuery, selectLyricistQueryText); | 4207 | auto result = prepareQuery(d->mSelectLyricistQuery, selectLyricistQueryText); | ||
3865 | 4208 | | |||
3866 | if (!result) { | 4209 | if (!result) { | ||
3867 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectLyricistQuery.lastQuery(); | 4210 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectLyricistQuery.lastQuery(); | ||
3868 | qDebug() << "DatabaseInterface::initRequest" << d->mSelectLyricistQuery.lastError(); | 4211 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mSelectLyricistQuery.lastError(); | ||
3869 | } | 4212 | } | ||
3870 | } | 4213 | } | ||
3871 | 4214 | | |||
3872 | { | 4215 | { | ||
3873 | auto removeTrackQueryText = QStringLiteral("DELETE FROM `Tracks` " | 4216 | auto removeTrackQueryText = QStringLiteral("DELETE FROM `Tracks` " | ||
3874 | "WHERE " | 4217 | "WHERE " | ||
3875 | "`ID` = :trackId"); | 4218 | "`ID` = :trackId"); | ||
3876 | 4219 | | |||
3877 | auto result = prepareQuery(d->mRemoveTrackQuery, removeTrackQueryText); | 4220 | auto result = prepareQuery(d->mRemoveTrackQuery, removeTrackQueryText); | ||
3878 | 4221 | | |||
3879 | if (!result) { | 4222 | if (!result) { | ||
3880 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTrackQuery.lastQuery(); | 4223 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTrackQuery.lastQuery(); | ||
3881 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveTrackQuery.lastError(); | 4224 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveTrackQuery.lastError(); | ||
3882 | 4225 | | |||
3883 | Q_EMIT databaseError(); | 4226 | Q_EMIT databaseError(); | ||
3884 | } | 4227 | } | ||
3885 | } | 4228 | } | ||
3886 | 4229 | | |||
3887 | { | 4230 | { | ||
3888 | auto removeAlbumQueryText = QStringLiteral("DELETE FROM `Albums` " | 4231 | auto removeAlbumQueryText = QStringLiteral("DELETE FROM `Albums` " | ||
3889 | "WHERE " | 4232 | "WHERE " | ||
3890 | "`ID` = :albumId"); | 4233 | "`ID` = :albumId"); | ||
3891 | 4234 | | |||
3892 | auto result = prepareQuery(d->mRemoveAlbumQuery, removeAlbumQueryText); | 4235 | auto result = prepareQuery(d->mRemoveAlbumQuery, removeAlbumQueryText); | ||
3893 | 4236 | | |||
3894 | if (!result) { | 4237 | if (!result) { | ||
3895 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveAlbumQuery.lastQuery(); | 4238 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveAlbumQuery.lastQuery(); | ||
3896 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveAlbumQuery.lastError(); | 4239 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveAlbumQuery.lastError(); | ||
3897 | 4240 | | |||
3898 | Q_EMIT databaseError(); | 4241 | Q_EMIT databaseError(); | ||
3899 | } | 4242 | } | ||
3900 | } | 4243 | } | ||
3901 | 4244 | | |||
3902 | { | 4245 | { | ||
3903 | auto removeAlbumQueryText = QStringLiteral("DELETE FROM `Artists` " | 4246 | auto removeAlbumQueryText = QStringLiteral("DELETE FROM `Artists` " | ||
3904 | "WHERE " | 4247 | "WHERE " | ||
3905 | "`ID` = :artistId"); | 4248 | "`ID` = :artistId"); | ||
3906 | 4249 | | |||
3907 | auto result = prepareQuery(d->mRemoveArtistQuery, removeAlbumQueryText); | 4250 | auto result = prepareQuery(d->mRemoveArtistQuery, removeAlbumQueryText); | ||
3908 | 4251 | | |||
3909 | if (!result) { | 4252 | if (!result) { | ||
3910 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveArtistQuery.lastQuery(); | 4253 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveArtistQuery.lastQuery(); | ||
3911 | qDebug() << "DatabaseInterface::initRequest" << d->mRemoveArtistQuery.lastError(); | 4254 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::initRequest" << d->mRemoveArtistQuery.lastError(); | ||
3912 | 4255 | | |||
3913 | Q_EMIT databaseError(); | 4256 | Q_EMIT databaseError(); | ||
3914 | } | 4257 | } | ||
3915 | } | 4258 | } | ||
3916 | 4259 | | |||
3917 | finishTransaction(); | 4260 | finishTransaction(); | ||
3918 | 4261 | | |||
3919 | d->mInitFinished = true; | 4262 | d->mInitFinished = true; | ||
Show All 13 Lines | 4275 | if (!albumArtist.isEmpty() || !trackArtist.isEmpty()) { | |||
3933 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":title"), title); | 4276 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":title"), title); | ||
3934 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | 4277 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
3935 | if (!albumArtist.isEmpty()) { | 4278 | if (!albumArtist.isEmpty()) { | ||
3936 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":artistName"), albumArtist); | 4279 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":artistName"), albumArtist); | ||
3937 | } else { | 4280 | } else { | ||
3938 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":artistName"), trackArtist); | 4281 | d->mSelectAlbumIdFromTitleAndArtistQuery.bindValue(QStringLiteral(":artistName"), trackArtist); | ||
3939 | } | 4282 | } | ||
3940 | 4283 | | |||
3941 | auto queryResult = d->mSelectAlbumIdFromTitleAndArtistQuery.exec(); | 4284 | auto queryResult = execQuery(d->mSelectAlbumIdFromTitleAndArtistQuery); | ||
3942 | 4285 | | |||
3943 | if (!queryResult || !d->mSelectAlbumIdFromTitleAndArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleAndArtistQuery.isActive()) { | 4286 | if (!queryResult || !d->mSelectAlbumIdFromTitleAndArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleAndArtistQuery.isActive()) { | ||
3944 | Q_EMIT databaseError(); | 4287 | Q_EMIT databaseError(); | ||
3945 | 4288 | | |||
3946 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastQuery(); | 4289 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastQuery(); | ||
3947 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.boundValues(); | 4290 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.boundValues(); | ||
3948 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastError(); | 4291 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleAndArtistQuery.lastError(); | ||
3949 | 4292 | | |||
3950 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | 4293 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | ||
3951 | 4294 | | |||
3952 | return result; | 4295 | return result; | ||
3953 | } | 4296 | } | ||
3954 | 4297 | | |||
3955 | if (d->mSelectAlbumIdFromTitleAndArtistQuery.next()) { | 4298 | if (d->mSelectAlbumIdFromTitleAndArtistQuery.next()) { | ||
3956 | result = d->mSelectAlbumIdFromTitleAndArtistQuery.record().value(0).toULongLong(); | 4299 | result = d->mSelectAlbumIdFromTitleAndArtistQuery.record().value(0).toULongLong(); | ||
3957 | 4300 | | |||
3958 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | 4301 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | ||
3959 | 4302 | | |||
3960 | return result; | 4303 | return result; | ||
3961 | } | 4304 | } | ||
3962 | 4305 | | |||
3963 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | 4306 | d->mSelectAlbumIdFromTitleAndArtistQuery.finish(); | ||
3964 | } | 4307 | } | ||
3965 | 4308 | | |||
3966 | if (result == 0) { | 4309 | if (result == 0) { | ||
3967 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":title"), title); | 4310 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":title"), title); | ||
3968 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | 4311 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
3969 | 4312 | | |||
3970 | auto queryResult = d->mSelectAlbumIdFromTitleWithoutArtistQuery.exec(); | 4313 | auto queryResult = execQuery(d->mSelectAlbumIdFromTitleWithoutArtistQuery); | ||
3971 | 4314 | | |||
3972 | if (!queryResult || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isActive()) { | 4315 | if (!queryResult || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isActive()) { | ||
3973 | Q_EMIT databaseError(); | 4316 | Q_EMIT databaseError(); | ||
3974 | 4317 | | |||
3975 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | 4318 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | ||
3976 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.boundValues(); | 4319 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.boundValues(); | ||
3977 | qDebug() << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | 4320 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | ||
3978 | 4321 | | |||
3979 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.finish(); | 4322 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.finish(); | ||
3980 | 4323 | | |||
3981 | return result; | 4324 | return result; | ||
3982 | } | 4325 | } | ||
3983 | 4326 | | |||
3984 | if (d->mSelectAlbumIdFromTitleWithoutArtistQuery.next()) { | 4327 | if (d->mSelectAlbumIdFromTitleWithoutArtistQuery.next()) { | ||
3985 | result = d->mSelectAlbumIdFromTitleWithoutArtistQuery.record().value(0).toULongLong(); | 4328 | result = d->mSelectAlbumIdFromTitleWithoutArtistQuery.record().value(0).toULongLong(); | ||
Show All 12 Lines | 4340 | if (!albumArtist.isEmpty()) { | |||
3998 | insertArtist(albumArtist); | 4341 | insertArtist(albumArtist); | ||
3999 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumArtist"), albumArtist); | 4342 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumArtist"), albumArtist); | ||
4000 | } else { | 4343 | } else { | ||
4001 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumArtist"), {}); | 4344 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumArtist"), {}); | ||
4002 | } | 4345 | } | ||
4003 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | 4346 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
4004 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":coverFileName"), albumArtURI); | 4347 | d->mInsertAlbumQuery.bindValue(QStringLiteral(":coverFileName"), albumArtURI); | ||
4005 | 4348 | | |||
4006 | auto queryResult = d->mInsertAlbumQuery.exec(); | 4349 | auto queryResult = execQuery(d->mInsertAlbumQuery); | ||
4007 | 4350 | | |||
4008 | if (!queryResult || !d->mInsertAlbumQuery.isActive()) { | 4351 | if (!queryResult || !d->mInsertAlbumQuery.isActive()) { | ||
4009 | Q_EMIT databaseError(); | 4352 | Q_EMIT databaseError(); | ||
4010 | 4353 | | |||
4011 | qDebug() << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.lastQuery(); | 4354 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.lastQuery(); | ||
4012 | qDebug() << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.boundValues(); | 4355 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.boundValues(); | ||
4013 | qDebug() << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.lastError(); | 4356 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertAlbum" << d->mInsertAlbumQuery.lastError(); | ||
4014 | 4357 | | |||
4015 | d->mInsertAlbumQuery.finish(); | 4358 | d->mInsertAlbumQuery.finish(); | ||
4016 | 4359 | | |||
4017 | return result; | 4360 | return result; | ||
4018 | } | 4361 | } | ||
4019 | 4362 | | |||
4020 | result = d->mAlbumId; | 4363 | result = d->mAlbumId; | ||
4021 | 4364 | | |||
Show All 17 Lines | 4376 | { | |||
4039 | } | 4382 | } | ||
4040 | 4383 | | |||
4041 | auto storedAlbumArtUri = internalAlbumArtUriFromAlbumId(albumId); | 4384 | auto storedAlbumArtUri = internalAlbumArtUriFromAlbumId(albumId); | ||
4042 | 4385 | | |||
4043 | if (!storedAlbumArtUri.isValid() || storedAlbumArtUri != albumArtUri) { | 4386 | if (!storedAlbumArtUri.isValid() || storedAlbumArtUri != albumArtUri) { | ||
4044 | d->mUpdateAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":albumId"), albumId); | 4387 | d->mUpdateAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
4045 | d->mUpdateAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":coverFileName"), albumArtUri); | 4388 | d->mUpdateAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":coverFileName"), albumArtUri); | ||
4046 | 4389 | | |||
4047 | auto result = d->mUpdateAlbumArtUriFromAlbumIdQuery.exec(); | 4390 | auto result = execQuery(d->mUpdateAlbumArtUriFromAlbumIdQuery); | ||
4048 | 4391 | | |||
4049 | if (!result || !d->mUpdateAlbumArtUriFromAlbumIdQuery.isActive()) { | 4392 | if (!result || !d->mUpdateAlbumArtUriFromAlbumIdQuery.isActive()) { | ||
4050 | Q_EMIT databaseError(); | 4393 | Q_EMIT databaseError(); | ||
4051 | 4394 | | |||
4052 | qDebug() << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastQuery(); | 4395 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastQuery(); | ||
4053 | qDebug() << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.boundValues(); | 4396 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.boundValues(); | ||
4054 | qDebug() << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastError(); | 4397 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumFromId" << d->mUpdateAlbumArtUriFromAlbumIdQuery.lastError(); | ||
4055 | 4398 | | |||
4056 | d->mUpdateAlbumArtUriFromAlbumIdQuery.finish(); | 4399 | d->mUpdateAlbumArtUriFromAlbumIdQuery.finish(); | ||
4057 | 4400 | | |||
4058 | return modifiedAlbum; | 4401 | return modifiedAlbum; | ||
4059 | } | 4402 | } | ||
4060 | 4403 | | |||
4061 | d->mUpdateAlbumArtUriFromAlbumIdQuery.finish(); | 4404 | d->mUpdateAlbumArtUriFromAlbumIdQuery.finish(); | ||
4062 | 4405 | | |||
Show All 14 Lines | 4419 | { | |||
4077 | auto result = qulonglong(0); | 4420 | auto result = qulonglong(0); | ||
4078 | 4421 | | |||
4079 | if (name.isEmpty()) { | 4422 | if (name.isEmpty()) { | ||
4080 | return result; | 4423 | return result; | ||
4081 | } | 4424 | } | ||
4082 | 4425 | | |||
4083 | d->mSelectArtistByNameQuery.bindValue(QStringLiteral(":name"), name); | 4426 | d->mSelectArtistByNameQuery.bindValue(QStringLiteral(":name"), name); | ||
4084 | 4427 | | |||
4085 | auto queryResult = d->mSelectArtistByNameQuery.exec(); | 4428 | auto queryResult = execQuery(d->mSelectArtistByNameQuery); | ||
4086 | 4429 | | |||
4087 | if (!queryResult || !d->mSelectArtistByNameQuery.isSelect() || !d->mSelectArtistByNameQuery.isActive()) { | 4430 | if (!queryResult || !d->mSelectArtistByNameQuery.isSelect() || !d->mSelectArtistByNameQuery.isActive()) { | ||
4088 | Q_EMIT databaseError(); | 4431 | Q_EMIT databaseError(); | ||
4089 | 4432 | | |||
4090 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastQuery(); | 4433 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastQuery(); | ||
4091 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.boundValues(); | 4434 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.boundValues(); | ||
4092 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastError(); | 4435 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastError(); | ||
4093 | 4436 | | |||
4094 | d->mSelectArtistByNameQuery.finish(); | 4437 | d->mSelectArtistByNameQuery.finish(); | ||
4095 | 4438 | | |||
4096 | return result; | 4439 | return result; | ||
4097 | } | 4440 | } | ||
4098 | 4441 | | |||
4099 | if (d->mSelectArtistByNameQuery.next()) { | 4442 | if (d->mSelectArtistByNameQuery.next()) { | ||
4100 | result = d->mSelectArtistByNameQuery.record().value(0).toULongLong(); | 4443 | result = d->mSelectArtistByNameQuery.record().value(0).toULongLong(); | ||
4101 | 4444 | | |||
4102 | d->mSelectArtistByNameQuery.finish(); | 4445 | d->mSelectArtistByNameQuery.finish(); | ||
4103 | 4446 | | |||
4104 | return result; | 4447 | return result; | ||
4105 | } | 4448 | } | ||
4106 | 4449 | | |||
4107 | d->mSelectArtistByNameQuery.finish(); | 4450 | d->mSelectArtistByNameQuery.finish(); | ||
4108 | 4451 | | |||
4109 | d->mInsertArtistsQuery.bindValue(QStringLiteral(":artistId"), d->mArtistId); | 4452 | d->mInsertArtistsQuery.bindValue(QStringLiteral(":artistId"), d->mArtistId); | ||
4110 | d->mInsertArtistsQuery.bindValue(QStringLiteral(":name"), name); | 4453 | d->mInsertArtistsQuery.bindValue(QStringLiteral(":name"), name); | ||
4111 | 4454 | | |||
4112 | queryResult = d->mInsertArtistsQuery.exec(); | 4455 | queryResult = execQuery(d->mInsertArtistsQuery); | ||
4113 | 4456 | | |||
4114 | if (!queryResult || !d->mInsertArtistsQuery.isActive()) { | 4457 | if (!queryResult || !d->mInsertArtistsQuery.isActive()) { | ||
4115 | Q_EMIT databaseError(); | 4458 | Q_EMIT databaseError(); | ||
4116 | 4459 | | |||
4117 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.lastQuery(); | 4460 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.lastQuery(); | ||
4118 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.boundValues(); | 4461 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.boundValues(); | ||
4119 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.lastError(); | 4462 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertArtistsQuery.lastError(); | ||
4120 | 4463 | | |||
4121 | d->mInsertArtistsQuery.finish(); | 4464 | d->mInsertArtistsQuery.finish(); | ||
4122 | 4465 | | |||
4123 | return result; | 4466 | return result; | ||
4124 | } | 4467 | } | ||
4125 | 4468 | | |||
4126 | result = d->mArtistId; | 4469 | result = d->mArtistId; | ||
4127 | 4470 | | |||
Show All 11 Lines | 4481 | { | |||
4139 | auto result = qulonglong(0); | 4482 | auto result = qulonglong(0); | ||
4140 | 4483 | | |||
4141 | if (name.isEmpty()) { | 4484 | if (name.isEmpty()) { | ||
4142 | return result; | 4485 | return result; | ||
4143 | } | 4486 | } | ||
4144 | 4487 | | |||
4145 | d->mSelectComposerByNameQuery.bindValue(QStringLiteral(":name"), name); | 4488 | d->mSelectComposerByNameQuery.bindValue(QStringLiteral(":name"), name); | ||
4146 | 4489 | | |||
4147 | auto queryResult = d->mSelectComposerByNameQuery.exec(); | 4490 | auto queryResult = execQuery(d->mSelectComposerByNameQuery); | ||
4148 | 4491 | | |||
4149 | if (!queryResult || !d->mSelectComposerByNameQuery.isSelect() || !d->mSelectComposerByNameQuery.isActive()) { | 4492 | if (!queryResult || !d->mSelectComposerByNameQuery.isSelect() || !d->mSelectComposerByNameQuery.isActive()) { | ||
4150 | Q_EMIT databaseError(); | 4493 | Q_EMIT databaseError(); | ||
4151 | 4494 | | |||
4152 | qDebug() << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.lastQuery(); | 4495 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.lastQuery(); | ||
4153 | qDebug() << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.boundValues(); | 4496 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.boundValues(); | ||
4154 | qDebug() << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.lastError(); | 4497 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mSelectComposerByNameQuery.lastError(); | ||
4155 | 4498 | | |||
4156 | d->mSelectComposerByNameQuery.finish(); | 4499 | d->mSelectComposerByNameQuery.finish(); | ||
4157 | 4500 | | |||
4158 | return result; | 4501 | return result; | ||
4159 | } | 4502 | } | ||
4160 | 4503 | | |||
4161 | 4504 | | |||
4162 | if (d->mSelectComposerByNameQuery.next()) { | 4505 | if (d->mSelectComposerByNameQuery.next()) { | ||
4163 | result = d->mSelectComposerByNameQuery.record().value(0).toULongLong(); | 4506 | result = d->mSelectComposerByNameQuery.record().value(0).toULongLong(); | ||
4164 | 4507 | | |||
4165 | d->mSelectComposerByNameQuery.finish(); | 4508 | d->mSelectComposerByNameQuery.finish(); | ||
4166 | 4509 | | |||
4167 | return result; | 4510 | return result; | ||
4168 | } | 4511 | } | ||
4169 | 4512 | | |||
4170 | d->mSelectComposerByNameQuery.finish(); | 4513 | d->mSelectComposerByNameQuery.finish(); | ||
4171 | 4514 | | |||
4172 | d->mInsertComposerQuery.bindValue(QStringLiteral(":composerId"), d->mComposerId); | 4515 | d->mInsertComposerQuery.bindValue(QStringLiteral(":composerId"), d->mComposerId); | ||
4173 | d->mInsertComposerQuery.bindValue(QStringLiteral(":name"), name); | 4516 | d->mInsertComposerQuery.bindValue(QStringLiteral(":name"), name); | ||
4174 | 4517 | | |||
4175 | queryResult = d->mInsertComposerQuery.exec(); | 4518 | queryResult = execQuery(d->mInsertComposerQuery); | ||
4176 | 4519 | | |||
4177 | if (!queryResult || !d->mInsertComposerQuery.isActive()) { | 4520 | if (!queryResult || !d->mInsertComposerQuery.isActive()) { | ||
4178 | Q_EMIT databaseError(); | 4521 | Q_EMIT databaseError(); | ||
4179 | 4522 | | |||
4180 | qDebug() << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.lastQuery(); | 4523 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.lastQuery(); | ||
4181 | qDebug() << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.boundValues(); | 4524 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.boundValues(); | ||
4182 | qDebug() << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.lastError(); | 4525 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertComposer" << d->mInsertComposerQuery.lastError(); | ||
4183 | 4526 | | |||
4184 | d->mInsertComposerQuery.finish(); | 4527 | d->mInsertComposerQuery.finish(); | ||
4185 | 4528 | | |||
4186 | return result; | 4529 | return result; | ||
4187 | } | 4530 | } | ||
4188 | 4531 | | |||
4189 | result = d->mComposerId; | 4532 | result = d->mComposerId; | ||
4190 | 4533 | | |||
Show All 11 Lines | 4544 | { | |||
4202 | auto result = qulonglong(0); | 4545 | auto result = qulonglong(0); | ||
4203 | 4546 | | |||
4204 | if (name.isEmpty()) { | 4547 | if (name.isEmpty()) { | ||
4205 | return result; | 4548 | return result; | ||
4206 | } | 4549 | } | ||
4207 | 4550 | | |||
4208 | d->mSelectGenreByNameQuery.bindValue(QStringLiteral(":name"), name); | 4551 | d->mSelectGenreByNameQuery.bindValue(QStringLiteral(":name"), name); | ||
4209 | 4552 | | |||
4210 | auto queryResult = d->mSelectGenreByNameQuery.exec(); | 4553 | auto queryResult = execQuery(d->mSelectGenreByNameQuery); | ||
4211 | 4554 | | |||
4212 | if (!queryResult || !d->mSelectGenreByNameQuery.isSelect() || !d->mSelectGenreByNameQuery.isActive()) { | 4555 | if (!queryResult || !d->mSelectGenreByNameQuery.isSelect() || !d->mSelectGenreByNameQuery.isActive()) { | ||
4213 | Q_EMIT databaseError(); | 4556 | Q_EMIT databaseError(); | ||
4214 | 4557 | | |||
4215 | qDebug() << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.lastQuery(); | 4558 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.lastQuery(); | ||
4216 | qDebug() << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.boundValues(); | 4559 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.boundValues(); | ||
4217 | qDebug() << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.lastError(); | 4560 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mSelectGenreByNameQuery.lastError(); | ||
4218 | 4561 | | |||
4219 | d->mSelectGenreByNameQuery.finish(); | 4562 | d->mSelectGenreByNameQuery.finish(); | ||
4220 | 4563 | | |||
4221 | return result; | 4564 | return result; | ||
4222 | } | 4565 | } | ||
4223 | 4566 | | |||
4224 | if (d->mSelectGenreByNameQuery.next()) { | 4567 | if (d->mSelectGenreByNameQuery.next()) { | ||
4225 | result = d->mSelectGenreByNameQuery.record().value(0).toULongLong(); | 4568 | result = d->mSelectGenreByNameQuery.record().value(0).toULongLong(); | ||
4226 | 4569 | | |||
4227 | d->mSelectGenreByNameQuery.finish(); | 4570 | d->mSelectGenreByNameQuery.finish(); | ||
4228 | 4571 | | |||
4229 | return result; | 4572 | return result; | ||
4230 | } | 4573 | } | ||
4231 | 4574 | | |||
4232 | d->mSelectGenreByNameQuery.finish(); | 4575 | d->mSelectGenreByNameQuery.finish(); | ||
4233 | 4576 | | |||
4234 | d->mInsertGenreQuery.bindValue(QStringLiteral(":genreId"), d->mGenreId); | 4577 | d->mInsertGenreQuery.bindValue(QStringLiteral(":genreId"), d->mGenreId); | ||
4235 | d->mInsertGenreQuery.bindValue(QStringLiteral(":name"), name); | 4578 | d->mInsertGenreQuery.bindValue(QStringLiteral(":name"), name); | ||
4236 | 4579 | | |||
4237 | queryResult = d->mInsertGenreQuery.exec(); | 4580 | queryResult = execQuery(d->mInsertGenreQuery); | ||
4238 | 4581 | | |||
4239 | if (!queryResult || !d->mInsertGenreQuery.isActive()) { | 4582 | if (!queryResult || !d->mInsertGenreQuery.isActive()) { | ||
4240 | Q_EMIT databaseError(); | 4583 | Q_EMIT databaseError(); | ||
4241 | 4584 | | |||
4242 | qDebug() << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.lastQuery(); | 4585 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.lastQuery(); | ||
4243 | qDebug() << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.boundValues(); | 4586 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.boundValues(); | ||
4244 | qDebug() << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.lastError(); | 4587 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertGenre" << d->mInsertGenreQuery.lastError(); | ||
4245 | 4588 | | |||
4246 | d->mInsertGenreQuery.finish(); | 4589 | d->mInsertGenreQuery.finish(); | ||
4247 | 4590 | | |||
4248 | return result; | 4591 | return result; | ||
4249 | } | 4592 | } | ||
4250 | 4593 | | |||
4251 | result = d->mGenreId; | 4594 | result = d->mGenreId; | ||
4252 | 4595 | | |||
4253 | ++d->mGenreId; | 4596 | ++d->mGenreId; | ||
4254 | 4597 | | |||
4255 | d->mInsertGenreQuery.finish(); | 4598 | d->mInsertGenreQuery.finish(); | ||
4256 | 4599 | | |||
4257 | Q_EMIT genresAdded({{{DatabaseIdRole, result}}}); | 4600 | Q_EMIT genresAdded({{{DatabaseIdRole, result}}}); | ||
4258 | 4601 | | |||
4259 | return result; | 4602 | return result; | ||
4260 | } | 4603 | } | ||
4261 | 4604 | | |||
4262 | void DatabaseInterface::insertTrackOrigin(const QUrl &fileNameURI, const QDateTime &fileModifiedTime, | 4605 | void DatabaseInterface::insertTrackOrigin(const QUrl &fileNameURI, const QDateTime &fileModifiedTime, | ||
4263 | const QDateTime &importDate, qulonglong discoverId) | 4606 | const QDateTime &importDate) | ||
4264 | { | 4607 | { | ||
4265 | d->mInsertTrackMapping.bindValue(QStringLiteral(":discoverId"), discoverId); | | |||
4266 | d->mInsertTrackMapping.bindValue(QStringLiteral(":fileName"), fileNameURI); | 4608 | d->mInsertTrackMapping.bindValue(QStringLiteral(":fileName"), fileNameURI); | ||
4267 | d->mInsertTrackMapping.bindValue(QStringLiteral(":priority"), 1); | 4609 | d->mInsertTrackMapping.bindValue(QStringLiteral(":priority"), 1); | ||
4268 | d->mInsertTrackMapping.bindValue(QStringLiteral(":mtime"), fileModifiedTime); | 4610 | d->mInsertTrackMapping.bindValue(QStringLiteral(":mtime"), fileModifiedTime); | ||
4269 | d->mInsertTrackMapping.bindValue(QStringLiteral(":importDate"), importDate.toMSecsSinceEpoch()); | 4611 | d->mInsertTrackMapping.bindValue(QStringLiteral(":importDate"), importDate.toMSecsSinceEpoch()); | ||
4270 | 4612 | | |||
4271 | auto queryResult = d->mInsertTrackMapping.exec(); | 4613 | auto queryResult = execQuery(d->mInsertTrackMapping); | ||
4272 | 4614 | | |||
4273 | if (!queryResult || !d->mInsertTrackMapping.isActive()) { | 4615 | if (!queryResult || !d->mInsertTrackMapping.isActive()) { | ||
4274 | Q_EMIT databaseError(); | 4616 | Q_EMIT databaseError(); | ||
4275 | 4617 | | |||
4276 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.lastQuery(); | 4618 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.lastQuery(); | ||
4277 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.boundValues(); | 4619 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.boundValues(); | ||
4278 | qDebug() << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.lastError(); | 4620 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mInsertTrackMapping.lastError(); | ||
4279 | 4621 | | |||
4280 | d->mInsertTrackMapping.finish(); | 4622 | d->mInsertTrackMapping.finish(); | ||
4281 | 4623 | | |||
4282 | return; | 4624 | return; | ||
4283 | } | 4625 | } | ||
4284 | 4626 | | |||
4285 | d->mInsertTrackMapping.finish(); | 4627 | d->mInsertTrackMapping.finish(); | ||
4286 | } | 4628 | } | ||
4287 | 4629 | | |||
4288 | void DatabaseInterface::updateTrackOrigin(const QUrl &fileName, const QDateTime &fileModifiedTime) | 4630 | void DatabaseInterface::updateTrackOrigin(const QUrl &fileName, const QDateTime &fileModifiedTime) | ||
4289 | { | 4631 | { | ||
4290 | d->mUpdateTrackFileModifiedTime.bindValue(QStringLiteral(":fileName"), fileName); | 4632 | d->mUpdateTrackFileModifiedTime.bindValue(QStringLiteral(":fileName"), fileName); | ||
4291 | d->mUpdateTrackFileModifiedTime.bindValue(QStringLiteral(":mtime"), fileModifiedTime); | 4633 | d->mUpdateTrackFileModifiedTime.bindValue(QStringLiteral(":mtime"), fileModifiedTime); | ||
4292 | 4634 | | |||
4293 | auto queryResult = d->mUpdateTrackFileModifiedTime.exec(); | 4635 | auto queryResult = execQuery(d->mUpdateTrackFileModifiedTime); | ||
4294 | 4636 | | |||
4295 | if (!queryResult || !d->mUpdateTrackFileModifiedTime.isActive()) { | 4637 | if (!queryResult || !d->mUpdateTrackFileModifiedTime.isActive()) { | ||
4296 | Q_EMIT databaseError(); | 4638 | Q_EMIT databaseError(); | ||
4297 | 4639 | | |||
4298 | qDebug() << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.lastQuery(); | 4640 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.lastQuery(); | ||
4299 | qDebug() << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.boundValues(); | 4641 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.boundValues(); | ||
4300 | qDebug() << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.lastError(); | 4642 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackOrigin" << d->mUpdateTrackFileModifiedTime.lastError(); | ||
4301 | 4643 | | |||
4302 | d->mUpdateTrackFileModifiedTime.finish(); | 4644 | d->mUpdateTrackFileModifiedTime.finish(); | ||
4303 | 4645 | | |||
4304 | return; | 4646 | return; | ||
4305 | } | 4647 | } | ||
4306 | 4648 | | |||
4307 | d->mUpdateTrackFileModifiedTime.finish(); | 4649 | d->mUpdateTrackFileModifiedTime.finish(); | ||
4308 | } | 4650 | } | ||
Show All 9 Lines | 4655 | { | |||
4318 | } | 4660 | } | ||
4319 | 4661 | | |||
4320 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":title"), title); | 4662 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":title"), title); | ||
4321 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":trackArtist"), trackArtist); | 4663 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":trackArtist"), trackArtist); | ||
4322 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":album"), album); | 4664 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":album"), album); | ||
4323 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":albumPath"), trackPath); | 4665 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
4324 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":albumArtist"), albumArtist); | 4666 | d->mSelectTracksMappingPriority.bindValue(QStringLiteral(":albumArtist"), albumArtist); | ||
4325 | 4667 | | |||
4326 | auto queryResult = d->mSelectTracksMappingPriority.exec(); | 4668 | auto queryResult = execQuery(d->mSelectTracksMappingPriority); | ||
4327 | 4669 | | |||
4328 | if (!queryResult || !d->mSelectTracksMappingPriority.isSelect() || !d->mSelectTracksMappingPriority.isActive()) { | 4670 | if (!queryResult || !d->mSelectTracksMappingPriority.isSelect() || !d->mSelectTracksMappingPriority.isActive()) { | ||
4329 | Q_EMIT databaseError(); | 4671 | Q_EMIT databaseError(); | ||
4330 | 4672 | | |||
4331 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.lastQuery(); | 4673 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.lastQuery(); | ||
4332 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.boundValues(); | 4674 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.boundValues(); | ||
4333 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.lastError(); | 4675 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMappingPriority.lastError(); | ||
4334 | 4676 | | |||
4335 | d->mSelectTracksMappingPriority.finish(); | 4677 | d->mSelectTracksMappingPriority.finish(); | ||
4336 | 4678 | | |||
4337 | return result; | 4679 | return result; | ||
4338 | } | 4680 | } | ||
4339 | 4681 | | |||
4340 | if (d->mSelectTracksMappingPriority.next()) { | 4682 | if (d->mSelectTracksMappingPriority.next()) { | ||
4341 | result = d->mSelectTracksMappingPriority.record().value(0).toInt(); | 4683 | result = d->mSelectTracksMappingPriority.record().value(0).toInt(); | ||
4342 | 4684 | | |||
4343 | d->mSelectTracksMappingPriority.finish(); | 4685 | d->mSelectTracksMappingPriority.finish(); | ||
4344 | 4686 | | |||
4345 | return result + 1; | 4687 | return result + 1; | ||
4346 | } | 4688 | } | ||
4347 | 4689 | | |||
4348 | d->mSelectTracksMappingPriority.finish(); | 4690 | d->mSelectTracksMappingPriority.finish(); | ||
4349 | 4691 | | |||
4350 | return result; | 4692 | return result; | ||
4351 | } | 4693 | } | ||
4352 | 4694 | | |||
4353 | qulonglong DatabaseInterface::internalInsertTrack(qulonglong discoverId, const MusicAudioTrack &oneTrack, | 4695 | qulonglong DatabaseInterface::internalInsertTrack(const MusicAudioTrack &oneTrack, | ||
4354 | const QHash<QString, QUrl> &covers, bool &isInserted) | 4696 | const QHash<QString, QUrl> &covers, bool &isInserted) | ||
4355 | { | 4697 | { | ||
4356 | qulonglong resultId = 0; | 4698 | qulonglong resultId = 0; | ||
4357 | 4699 | | |||
4358 | if (oneTrack.title().isEmpty()) { | 4700 | if (oneTrack.title().isEmpty()) { | ||
4359 | return resultId; | 4701 | return resultId; | ||
4360 | } | 4702 | } | ||
4361 | 4703 | | |||
Show All 18 Lines | 4719 | if (isModifiedTrack) { | |||
4380 | auto oldTrack = internalTrackFromDatabaseId(existingTrackId); | 4722 | auto oldTrack = internalTrackFromDatabaseId(existingTrackId); | ||
4381 | oldAlbumId = oldTrack.albumId(); | 4723 | oldAlbumId = oldTrack.albumId(); | ||
4382 | 4724 | | |||
4383 | auto isSameTrack = true; | 4725 | auto isSameTrack = true; | ||
4384 | isSameTrack = isSameTrack && (oldTrack.title() == oneTrack.title()); | 4726 | isSameTrack = isSameTrack && (oldTrack.title() == oneTrack.title()); | ||
4385 | isSameTrack = isSameTrack && (oldTrack.albumName() == oneTrack.albumName()); | 4727 | isSameTrack = isSameTrack && (oldTrack.albumName() == oneTrack.albumName()); | ||
4386 | isSameTrack = isSameTrack && (oldTrack.artist() == oneTrack.artist()); | 4728 | isSameTrack = isSameTrack && (oldTrack.artist() == oneTrack.artist()); | ||
4387 | isSameTrack = isSameTrack && (oldTrack.albumArtist() == oneTrack.albumArtist()); | 4729 | isSameTrack = isSameTrack && (oldTrack.albumArtist() == oneTrack.albumArtist()); | ||
4730 | isSameTrack = isSameTrack && (oldTrack.trackNumberIsValid() == oneTrack.trackNumberIsValid()); | ||||
4731 | if (isSameTrack && oldTrack.trackNumberIsValid()) { | ||||
4388 | isSameTrack = isSameTrack && (oldTrack.trackNumber() == oneTrack.trackNumber()); | 4732 | isSameTrack = isSameTrack && (oldTrack.trackNumber() == oneTrack.trackNumber()); | ||
4733 | } | ||||
4734 | isSameTrack = isSameTrack && (oldTrack.discNumberIsValid() == oneTrack.discNumberIsValid()); | ||||
4735 | if (isSameTrack && oldTrack.discNumberIsValid()) { | ||||
4389 | isSameTrack = isSameTrack && (oldTrack.discNumber() == oneTrack.discNumber()); | 4736 | isSameTrack = isSameTrack && (oldTrack.discNumber() == oneTrack.discNumber()); | ||
4737 | } | ||||
4390 | isSameTrack = isSameTrack && (oldTrack.duration() == oneTrack.duration()); | 4738 | isSameTrack = isSameTrack && (oldTrack.duration() == oneTrack.duration()); | ||
4391 | isSameTrack = isSameTrack && (oldTrack.rating() == oneTrack.rating()); | 4739 | isSameTrack = isSameTrack && (oldTrack.rating() == oneTrack.rating()); | ||
4392 | isSameTrack = isSameTrack && (oldTrack.resourceURI() == oneTrack.resourceURI()); | 4740 | isSameTrack = isSameTrack && (oldTrack.resourceURI() == oneTrack.resourceURI()); | ||
4393 | isSameTrack = isSameTrack && (oldTrack.genre() == oneTrack.genre()); | 4741 | isSameTrack = isSameTrack && (oldTrack.genre() == oneTrack.genre()); | ||
4394 | isSameTrack = isSameTrack && (oldTrack.composer() == oneTrack.composer()); | 4742 | isSameTrack = isSameTrack && (oldTrack.composer() == oneTrack.composer()); | ||
4395 | isSameTrack = isSameTrack && (oldTrack.lyricist() == oneTrack.lyricist()); | 4743 | isSameTrack = isSameTrack && (oldTrack.lyricist() == oneTrack.lyricist()); | ||
4396 | isSameTrack = isSameTrack && (oldTrack.comment() == oneTrack.comment()); | 4744 | isSameTrack = isSameTrack && (oldTrack.comment() == oneTrack.comment()); | ||
4397 | isSameTrack = isSameTrack && (oldTrack.year() == oneTrack.year()); | 4745 | isSameTrack = isSameTrack && (oldTrack.year() == oneTrack.year()); | ||
4746 | isSameTrack = isSameTrack && (oldTrack.channelsIsValid() == oneTrack.channelsIsValid()); | ||||
4747 | if (isSameTrack && oldTrack.channelsIsValid()) { | ||||
4398 | isSameTrack = isSameTrack && (oldTrack.channels() == oneTrack.channels()); | 4748 | isSameTrack = isSameTrack && (oldTrack.channels() == oneTrack.channels()); | ||
4749 | } | ||||
4750 | isSameTrack = isSameTrack && (oldTrack.bitRateIsValid() == oneTrack.bitRateIsValid()); | ||||
4751 | if (isSameTrack && oldTrack.bitRateIsValid()) { | ||||
4399 | isSameTrack = isSameTrack && (oldTrack.bitRate() == oneTrack.bitRate()); | 4752 | isSameTrack = isSameTrack && (oldTrack.bitRate() == oneTrack.bitRate()); | ||
4753 | } | ||||
4754 | isSameTrack = isSameTrack && (oldTrack.sampleRateIsValid() == oneTrack.sampleRateIsValid()); | ||||
4755 | if (isSameTrack && oldTrack.sampleRateIsValid()) { | ||||
4400 | isSameTrack = isSameTrack && (oldTrack.sampleRate() == oneTrack.sampleRate()); | 4756 | isSameTrack = isSameTrack && (oldTrack.sampleRate() == oneTrack.sampleRate()); | ||
4757 | } | ||||
4401 | 4758 | | |||
4402 | if (isSameTrack) { | 4759 | if (isSameTrack) { | ||
4403 | return resultId; | 4760 | return resultId; | ||
4404 | } | 4761 | } | ||
4405 | 4762 | | |||
4406 | auto newTrack = oneTrack; | 4763 | auto newTrack = oneTrack; | ||
4407 | newTrack.setDatabaseId(resultId); | 4764 | newTrack.setDatabaseId(resultId); | ||
4408 | updateTrackInDatabase(newTrack, trackPath); | 4765 | updateTrackInDatabase(newTrack, trackPath); | ||
Show All 37 Lines | 4795 | while(true) { | |||
4446 | } | 4803 | } | ||
4447 | } | 4804 | } | ||
4448 | 4805 | | |||
4449 | resultId = existingTrackId; | 4806 | resultId = existingTrackId; | ||
4450 | 4807 | | |||
4451 | const auto &albumData = internalOneAlbumPartialData(albumId); | 4808 | const auto &albumData = internalOneAlbumPartialData(albumId); | ||
4452 | 4809 | | |||
4453 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackId"), existingTrackId); | 4810 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackId"), existingTrackId); | ||
4454 | d->mInsertTrackQuery.bindValue(QStringLiteral(":discoverId"), discoverId); | | |||
4455 | d->mInsertTrackQuery.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | 4811 | d->mInsertTrackQuery.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | ||
4456 | d->mInsertTrackQuery.bindValue(QStringLiteral(":priority"), priority); | 4812 | d->mInsertTrackQuery.bindValue(QStringLiteral(":priority"), priority); | ||
4457 | d->mInsertTrackQuery.bindValue(QStringLiteral(":title"), oneTrack.title()); | 4813 | d->mInsertTrackQuery.bindValue(QStringLiteral(":title"), oneTrack.title()); | ||
4458 | insertArtist(oneTrack.artist()); | 4814 | insertArtist(oneTrack.artist()); | ||
4459 | d->mInsertTrackQuery.bindValue(QStringLiteral(":artistName"), oneTrack.artist()); | 4815 | d->mInsertTrackQuery.bindValue(QStringLiteral(":artistName"), oneTrack.artist()); | ||
4460 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumTitle"), albumData[AlbumDataType::key_type::TitleRole]); | 4816 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumTitle"), albumData[AlbumDataType::key_type::TitleRole]); | ||
4461 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumArtistName"), albumData[AlbumDataType::key_type::ArtistRole]); | 4817 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumArtistName"), albumData[AlbumDataType::key_type::ArtistRole]); | ||
4462 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | 4818 | d->mInsertTrackQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
4819 | if (oneTrack.trackNumberIsValid()) { | ||||
4463 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackNumber"), oneTrack.trackNumber()); | 4820 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackNumber"), oneTrack.trackNumber()); | ||
4821 | } | ||||
4822 | if (oneTrack.discNumberIsValid()) { | ||||
4464 | d->mInsertTrackQuery.bindValue(QStringLiteral(":discNumber"), oneTrack.discNumber()); | 4823 | d->mInsertTrackQuery.bindValue(QStringLiteral(":discNumber"), oneTrack.discNumber()); | ||
4824 | } | ||||
4465 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackDuration"), QVariant::fromValue<qlonglong>(oneTrack.duration().msecsSinceStartOfDay())); | 4825 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackDuration"), QVariant::fromValue<qlonglong>(oneTrack.duration().msecsSinceStartOfDay())); | ||
4466 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | 4826 | d->mInsertTrackQuery.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | ||
4467 | if (insertGenre(oneTrack.genre()) != 0) { | 4827 | if (insertGenre(oneTrack.genre()) != 0) { | ||
4468 | d->mInsertTrackQuery.bindValue(QStringLiteral(":genre"), oneTrack.genre()); | 4828 | d->mInsertTrackQuery.bindValue(QStringLiteral(":genre"), oneTrack.genre()); | ||
4469 | } else { | 4829 | } else { | ||
4470 | d->mInsertTrackQuery.bindValue(QStringLiteral(":genre"), {}); | 4830 | d->mInsertTrackQuery.bindValue(QStringLiteral(":genre"), {}); | ||
4471 | } | 4831 | } | ||
4472 | if (insertComposer(oneTrack.composer()) != 0) { | 4832 | if (insertComposer(oneTrack.composer()) != 0) { | ||
4473 | d->mInsertTrackQuery.bindValue(QStringLiteral(":composer"), oneTrack.composer()); | 4833 | d->mInsertTrackQuery.bindValue(QStringLiteral(":composer"), oneTrack.composer()); | ||
4474 | } else { | 4834 | } else { | ||
4475 | d->mInsertTrackQuery.bindValue(QStringLiteral(":composer"), {}); | 4835 | d->mInsertTrackQuery.bindValue(QStringLiteral(":composer"), {}); | ||
4476 | } | 4836 | } | ||
4477 | if (insertLyricist(oneTrack.lyricist()) != 0) { | 4837 | if (insertLyricist(oneTrack.lyricist()) != 0) { | ||
4478 | d->mInsertTrackQuery.bindValue(QStringLiteral(":lyricist"), oneTrack.lyricist()); | 4838 | d->mInsertTrackQuery.bindValue(QStringLiteral(":lyricist"), oneTrack.lyricist()); | ||
4479 | } else { | 4839 | } else { | ||
4480 | d->mInsertTrackQuery.bindValue(QStringLiteral(":lyricist"), {}); | 4840 | d->mInsertTrackQuery.bindValue(QStringLiteral(":lyricist"), {}); | ||
4481 | } | 4841 | } | ||
4482 | d->mInsertTrackQuery.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | 4842 | d->mInsertTrackQuery.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | ||
4483 | d->mInsertTrackQuery.bindValue(QStringLiteral(":year"), oneTrack.year()); | 4843 | d->mInsertTrackQuery.bindValue(QStringLiteral(":year"), oneTrack.year()); | ||
4844 | if (oneTrack.channelsIsValid()) { | ||||
4484 | d->mInsertTrackQuery.bindValue(QStringLiteral(":channels"), oneTrack.channels()); | 4845 | d->mInsertTrackQuery.bindValue(QStringLiteral(":channels"), oneTrack.channels()); | ||
4846 | } | ||||
4847 | if (oneTrack.bitRateIsValid()) { | ||||
4485 | d->mInsertTrackQuery.bindValue(QStringLiteral(":bitRate"), oneTrack.bitRate()); | 4848 | d->mInsertTrackQuery.bindValue(QStringLiteral(":bitRate"), oneTrack.bitRate()); | ||
4849 | } | ||||
4850 | if (oneTrack.sampleRateIsValid()) { | ||||
4486 | d->mInsertTrackQuery.bindValue(QStringLiteral(":sampleRate"), oneTrack.sampleRate()); | 4851 | d->mInsertTrackQuery.bindValue(QStringLiteral(":sampleRate"), oneTrack.sampleRate()); | ||
4852 | } | ||||
4487 | d->mInsertTrackQuery.bindValue(QStringLiteral(":hasEmbeddedCover"), oneTrack.hasEmbeddedCover()); | 4853 | d->mInsertTrackQuery.bindValue(QStringLiteral(":hasEmbeddedCover"), oneTrack.hasEmbeddedCover()); | ||
4488 | 4854 | | |||
4489 | auto result = d->mInsertTrackQuery.exec(); | 4855 | auto result = execQuery(d->mInsertTrackQuery); | ||
4490 | 4856 | | |||
4491 | if (result && d->mInsertTrackQuery.isActive()) { | 4857 | if (result && d->mInsertTrackQuery.isActive()) { | ||
4492 | d->mInsertTrackQuery.finish(); | 4858 | d->mInsertTrackQuery.finish(); | ||
4493 | 4859 | | |||
4494 | if (!isModifiedTrack) { | 4860 | if (!isModifiedTrack) { | ||
4495 | ++d->mTrackId; | 4861 | ++d->mTrackId; | ||
4496 | } | 4862 | } | ||
4497 | 4863 | | |||
Show All 20 Lines | 4876 | if (albumId != 0) { | |||
4518 | } | 4884 | } | ||
4519 | recordModifiedAlbum(albumId); | 4885 | recordModifiedAlbum(albumId); | ||
4520 | } | 4886 | } | ||
4521 | } else { | 4887 | } else { | ||
4522 | d->mInsertTrackQuery.finish(); | 4888 | d->mInsertTrackQuery.finish(); | ||
4523 | 4889 | | |||
4524 | Q_EMIT databaseError(); | 4890 | Q_EMIT databaseError(); | ||
4525 | 4891 | | |||
4526 | qDebug() << "DatabaseInterface::internalInsertTrack" << oneTrack << oneTrack.resourceURI(); | 4892 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalInsertTrack" << oneTrack << oneTrack.resourceURI(); | ||
4527 | qDebug() << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.lastQuery(); | 4893 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.lastQuery(); | ||
4528 | qDebug() << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.boundValues(); | 4894 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.boundValues(); | ||
4529 | qDebug() << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.lastError(); | 4895 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalInsertTrack" << d->mInsertTrackQuery.lastError(); | ||
4530 | } | 4896 | } | ||
4531 | 4897 | | |||
4532 | return resultId; | 4898 | return resultId; | ||
4533 | } | 4899 | } | ||
4534 | 4900 | | |||
4535 | MusicAudioTrack DatabaseInterface::buildTrackFromDatabaseRecord(const QSqlRecord &trackRecord) const | 4901 | MusicAudioTrack DatabaseInterface::buildTrackFromDatabaseRecord(const QSqlRecord &trackRecord) const | ||
4536 | { | 4902 | { | ||
4537 | auto id = trackRecord.value(0).toULongLong(); | 4903 | auto id = trackRecord.value(0).toULongLong(); | ||
Show All 10 Lines | |||||
4548 | result.setArtist(trackRecord.value(3).toString()); | 4914 | result.setArtist(trackRecord.value(3).toString()); | ||
4549 | 4915 | | |||
4550 | if (trackRecord.value(4).isValid()) { | 4916 | if (trackRecord.value(4).isValid()) { | ||
4551 | result.setAlbumArtist(trackRecord.value(4).toString()); | 4917 | result.setAlbumArtist(trackRecord.value(4).toString()); | ||
4552 | } | 4918 | } | ||
4553 | 4919 | | |||
4554 | result.setResourceURI(trackRecord.value(5).toUrl()); | 4920 | result.setResourceURI(trackRecord.value(5).toUrl()); | ||
4555 | result.setFileModificationTime(trackRecord.value(6).toDateTime()); | 4921 | result.setFileModificationTime(trackRecord.value(6).toDateTime()); | ||
4922 | if (trackRecord.value(7).isValid()) { | ||||
4556 | result.setTrackNumber(trackRecord.value(7).toInt()); | 4923 | result.setTrackNumber(trackRecord.value(7).toInt()); | ||
4924 | } | ||||
4925 | if (trackRecord.value(8).isValid()) { | ||||
4557 | result.setDiscNumber(trackRecord.value(8).toInt()); | 4926 | result.setDiscNumber(trackRecord.value(8).toInt()); | ||
4927 | } | ||||
4558 | result.setDuration(QTime::fromMSecsSinceStartOfDay(trackRecord.value(9).toInt())); | 4928 | result.setDuration(QTime::fromMSecsSinceStartOfDay(trackRecord.value(9).toInt())); | ||
4559 | result.setAlbumName(trackRecord.value(10).toString()); | 4929 | result.setAlbumName(trackRecord.value(10).toString()); | ||
4560 | result.setRating(trackRecord.value(11).toInt()); | 4930 | result.setRating(trackRecord.value(11).toInt()); | ||
4561 | result.setAlbumCover(trackRecord.value(12).toUrl()); | 4931 | result.setAlbumCover(trackRecord.value(12).toUrl()); | ||
4562 | result.setIsSingleDiscAlbum(trackRecord.value(13).toBool()); | 4932 | result.setIsSingleDiscAlbum(trackRecord.value(13).toBool()); | ||
4563 | result.setGenre(trackRecord.value(14).toString()); | 4933 | result.setGenre(trackRecord.value(14).toString()); | ||
4564 | result.setComposer(trackRecord.value(15).toString()); | 4934 | result.setComposer(trackRecord.value(15).toString()); | ||
4565 | result.setLyricist(trackRecord.value(16).toString()); | 4935 | result.setLyricist(trackRecord.value(16).toString()); | ||
4566 | result.setComment(trackRecord.value(17).toString()); | 4936 | result.setComment(trackRecord.value(17).toString()); | ||
4567 | result.setYear(trackRecord.value(18).toInt()); | 4937 | result.setYear(trackRecord.value(18).toInt()); | ||
4568 | result.setChannels(trackRecord.value(19).toInt()); | 4938 | if (trackRecord.value(19).isValid()) { | ||
4569 | result.setBitRate(trackRecord.value(20).toInt()); | 4939 | bool isValid; | ||
4570 | result.setSampleRate(trackRecord.value(21).toInt()); | 4940 | auto value = trackRecord.value(19).toInt(&isValid); | ||
4941 | if (isValid) { | ||||
4942 | result.setChannels(value); | ||||
4943 | } | ||||
4944 | } | ||||
4945 | if (trackRecord.value(20).isValid()) { | ||||
4946 | bool isValid; | ||||
4947 | auto value = trackRecord.value(20).toInt(&isValid); | ||||
4948 | if (isValid) { | ||||
4949 | result.setBitRate(value); | ||||
4950 | } | ||||
4951 | } | ||||
4952 | if (trackRecord.value(21).isValid()) { | ||||
4953 | bool isValid; | ||||
4954 | auto value = trackRecord.value(21).toInt(&isValid); | ||||
4955 | if (isValid) { | ||||
4956 | result.setSampleRate(value); | ||||
4957 | } | ||||
4958 | } | ||||
4571 | result.setAlbumId(trackRecord.value(2).toULongLong()); | 4959 | result.setAlbumId(trackRecord.value(2).toULongLong()); | ||
4572 | result.setHasEmbeddedCover(trackRecord.value(22).toBool()); | 4960 | result.setHasEmbeddedCover(trackRecord.value(22).toBool()); | ||
4573 | 4961 | | |||
4574 | result.setValid(true); | 4962 | result.setValid(true); | ||
4575 | 4963 | | |||
4576 | return result; | 4964 | return result; | ||
4577 | } | 4965 | } | ||
4578 | 4966 | | |||
4579 | DatabaseInterface::TrackDataType DatabaseInterface::buildTrackDataFromDatabaseRecord(const QSqlRecord &trackRecord) const | 4967 | DatabaseInterface::TrackDataType DatabaseInterface::buildTrackDataFromDatabaseRecord(const QSqlRecord &trackRecord) const | ||
4580 | { | 4968 | { | ||
4581 | TrackDataType result; | 4969 | TrackDataType result; | ||
4582 | 4970 | | |||
4583 | result[TrackDataType::key_type::DatabaseIdRole] = trackRecord.value(0); | 4971 | result[TrackDataType::key_type::DatabaseIdRole] = trackRecord.value(0); | ||
4584 | result[TrackDataType::key_type::TitleRole] = trackRecord.value(1); | 4972 | result[TrackDataType::key_type::TitleRole] = trackRecord.value(1); | ||
4973 | if (!trackRecord.value(10).isNull()) { | ||||
4585 | result[TrackDataType::key_type::AlbumRole] = trackRecord.value(10); | 4974 | result[TrackDataType::key_type::AlbumRole] = trackRecord.value(10); | ||
4586 | result[TrackDataType::key_type::AlbumIdRole] = trackRecord.value(2); | 4975 | result[TrackDataType::key_type::AlbumIdRole] = trackRecord.value(2); | ||
4976 | } | ||||
4977 | if (!trackRecord.value(3).isNull()) { | ||||
4587 | result[TrackDataType::key_type::ArtistRole] = trackRecord.value(3); | 4978 | result[TrackDataType::key_type::ArtistRole] = trackRecord.value(3); | ||
4979 | } | ||||
4980 | if (!trackRecord.value(4).isNull()) { | ||||
4588 | result[TrackDataType::key_type::AlbumArtistRole] = trackRecord.value(4); | 4981 | result[TrackDataType::key_type::AlbumArtistRole] = trackRecord.value(4); | ||
4982 | } | ||||
4589 | result[TrackDataType::key_type::ResourceRole] = trackRecord.value(5); | 4983 | result[TrackDataType::key_type::ResourceRole] = trackRecord.value(5); | ||
4984 | if (!trackRecord.value(7).isNull()) { | ||||
4590 | result[TrackDataType::key_type::TrackNumberRole] = trackRecord.value(7); | 4985 | result[TrackDataType::key_type::TrackNumberRole] = trackRecord.value(7); | ||
4986 | } | ||||
4987 | if (!trackRecord.value(8).isNull()) { | ||||
4591 | result[TrackDataType::key_type::DiscNumberRole] = trackRecord.value(8); | 4988 | result[TrackDataType::key_type::DiscNumberRole] = trackRecord.value(8); | ||
4989 | } | ||||
4592 | result[TrackDataType::key_type::DurationRole] = QTime::fromMSecsSinceStartOfDay(trackRecord.value(9).toInt()); | 4990 | result[TrackDataType::key_type::DurationRole] = QTime::fromMSecsSinceStartOfDay(trackRecord.value(9).toInt()); | ||
4593 | result[TrackDataType::key_type::MilliSecondsDurationRole] = trackRecord.value(9).toInt(); | 4991 | result[TrackDataType::key_type::MilliSecondsDurationRole] = trackRecord.value(9).toInt(); | ||
4594 | result[TrackDataType::key_type::RatingRole] = trackRecord.value(11); | 4992 | result[TrackDataType::key_type::RatingRole] = trackRecord.value(11); | ||
4993 | if (!trackRecord.value(12).isNull()) { | ||||
4595 | result[TrackDataType::key_type::ImageUrlRole] = QUrl(trackRecord.value(12).toString()); | 4994 | result[TrackDataType::key_type::ImageUrlRole] = QUrl(trackRecord.value(12).toString()); | ||
4995 | } | ||||
4596 | result[TrackDataType::key_type::IsSingleDiscAlbumRole] = trackRecord.value(13); | 4996 | result[TrackDataType::key_type::IsSingleDiscAlbumRole] = trackRecord.value(13); | ||
4997 | if (!trackRecord.value(14).isNull()) { | ||||
4597 | result[TrackDataType::key_type::GenreRole] = trackRecord.value(14); | 4998 | result[TrackDataType::key_type::GenreRole] = trackRecord.value(14); | ||
4999 | } | ||||
5000 | if (!trackRecord.value(15).isNull()) { | ||||
4598 | result[TrackDataType::key_type::ComposerRole] = trackRecord.value(15); | 5001 | result[TrackDataType::key_type::ComposerRole] = trackRecord.value(15); | ||
5002 | } | ||||
5003 | if (!trackRecord.value(16).isNull()) { | ||||
4599 | result[TrackDataType::key_type::LyricistRole] = trackRecord.value(16); | 5004 | result[TrackDataType::key_type::LyricistRole] = trackRecord.value(16); | ||
5005 | } | ||||
4600 | result[TrackDataType::key_type::HasEmbeddedCover] = trackRecord.value(22); | 5006 | result[TrackDataType::key_type::HasEmbeddedCover] = trackRecord.value(22); | ||
4601 | result[TrackDataType::key_type::FileModificationTime] = trackRecord.value(6); | 5007 | result[TrackDataType::key_type::FileModificationTime] = trackRecord.value(6); | ||
5008 | if (!trackRecord.value(24).isNull()) { | ||||
4602 | result[TrackDataType::key_type::FirstPlayDate] = trackRecord.value(24); | 5009 | result[TrackDataType::key_type::FirstPlayDate] = trackRecord.value(24); | ||
5010 | } | ||||
5011 | if (!trackRecord.value(25).isNull()) { | ||||
4603 | result[TrackDataType::key_type::LastPlayDate] = trackRecord.value(25); | 5012 | result[TrackDataType::key_type::LastPlayDate] = trackRecord.value(25); | ||
5013 | } | ||||
4604 | result[TrackDataType::key_type::PlayCounter] = trackRecord.value(26); | 5014 | result[TrackDataType::key_type::PlayCounter] = trackRecord.value(26); | ||
4605 | result[TrackDataType::key_type::PlayFrequency] = trackRecord.value(27); | 5015 | result[TrackDataType::key_type::PlayFrequency] = trackRecord.value(27); | ||
4606 | result[DataType::key_type::ElementTypeRole] = ElisaUtils::Track; | 5016 | result[DataType::key_type::ElementTypeRole] = ElisaUtils::Track; | ||
4607 | 5017 | | |||
4608 | return result; | 5018 | return result; | ||
4609 | } | 5019 | } | ||
4610 | 5020 | | |||
4611 | void DatabaseInterface::internalRemoveTracksList(const QList<QUrl> &removedTracks) | 5021 | void DatabaseInterface::internalRemoveTracksList(const QList<QUrl> &removedTracks) | ||
Show All 28 Lines | 5030 | for (const auto &removedTrackFileName : removedTracks) { | |||
4640 | 5050 | | |||
4641 | if (removedArtistId != 0 && allTracksFromArtist.isEmpty() && allAlbumsFromArtist.isEmpty()) { | 5051 | if (removedArtistId != 0 && allTracksFromArtist.isEmpty() && allAlbumsFromArtist.isEmpty()) { | ||
4642 | removeArtistInDatabase(removedArtistId); | 5052 | removeArtistInDatabase(removedArtistId); | ||
4643 | Q_EMIT artistRemoved(removedArtistId); | 5053 | Q_EMIT artistRemoved(removedArtistId); | ||
4644 | } | 5054 | } | ||
4645 | 5055 | | |||
4646 | d->mRemoveTracksMapping.bindValue(QStringLiteral(":fileName"), removedTrackFileName.toString()); | 5056 | d->mRemoveTracksMapping.bindValue(QStringLiteral(":fileName"), removedTrackFileName.toString()); | ||
4647 | 5057 | | |||
4648 | auto result = d->mRemoveTracksMapping.exec(); | 5058 | auto result = execQuery(d->mRemoveTracksMapping); | ||
4649 | 5059 | | |||
4650 | if (!result || !d->mRemoveTracksMapping.isActive()) { | 5060 | if (!result || !d->mRemoveTracksMapping.isActive()) { | ||
4651 | Q_EMIT databaseError(); | 5061 | Q_EMIT databaseError(); | ||
4652 | 5062 | | |||
4653 | qDebug() << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.lastQuery(); | 5063 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.lastQuery(); | ||
4654 | qDebug() << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.boundValues(); | 5064 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.boundValues(); | ||
4655 | qDebug() << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.lastError(); | 5065 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalRemoveTracksList" << d->mRemoveTracksMapping.lastError(); | ||
4656 | 5066 | | |||
4657 | continue; | 5067 | continue; | ||
4658 | } | 5068 | } | ||
4659 | 5069 | | |||
4660 | d->mRemoveTracksMapping.finish(); | 5070 | d->mRemoveTracksMapping.finish(); | ||
4661 | } | 5071 | } | ||
4662 | 5072 | | |||
4663 | for (auto modifiedAlbumId : modifiedAlbums) { | 5073 | for (auto modifiedAlbumId : modifiedAlbums) { | ||
Show All 20 Lines | |||||
4684 | } | 5094 | } | ||
4685 | 5095 | | |||
4686 | QUrl DatabaseInterface::internalAlbumArtUriFromAlbumId(qulonglong albumId) | 5096 | QUrl DatabaseInterface::internalAlbumArtUriFromAlbumId(qulonglong albumId) | ||
4687 | { | 5097 | { | ||
4688 | auto result = QUrl(); | 5098 | auto result = QUrl(); | ||
4689 | 5099 | | |||
4690 | d->mSelectAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":albumId"), albumId); | 5100 | d->mSelectAlbumArtUriFromAlbumIdQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
4691 | 5101 | | |||
4692 | auto queryResult = d->mSelectAlbumArtUriFromAlbumIdQuery.exec(); | 5102 | auto queryResult = execQuery(d->mSelectAlbumArtUriFromAlbumIdQuery); | ||
4693 | 5103 | | |||
4694 | if (!queryResult || !d->mSelectAlbumArtUriFromAlbumIdQuery.isSelect() || !d->mSelectAlbumArtUriFromAlbumIdQuery.isActive()) { | 5104 | if (!queryResult || !d->mSelectAlbumArtUriFromAlbumIdQuery.isSelect() || !d->mSelectAlbumArtUriFromAlbumIdQuery.isActive()) { | ||
4695 | Q_EMIT databaseError(); | 5105 | Q_EMIT databaseError(); | ||
4696 | 5106 | | |||
4697 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastQuery(); | 5107 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastQuery(); | ||
4698 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.boundValues(); | 5108 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.boundValues(); | ||
4699 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastError(); | 5109 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectAlbumArtUriFromAlbumIdQuery.lastError(); | ||
4700 | 5110 | | |||
4701 | d->mSelectAlbumArtUriFromAlbumIdQuery.finish(); | 5111 | d->mSelectAlbumArtUriFromAlbumIdQuery.finish(); | ||
4702 | 5112 | | |||
4703 | return result; | 5113 | return result; | ||
4704 | } | 5114 | } | ||
4705 | 5115 | | |||
4706 | if (!d->mSelectAlbumArtUriFromAlbumIdQuery.next()) { | 5116 | if (!d->mSelectAlbumArtUriFromAlbumIdQuery.next()) { | ||
4707 | d->mSelectAlbumArtUriFromAlbumIdQuery.finish(); | 5117 | d->mSelectAlbumArtUriFromAlbumIdQuery.finish(); | ||
Show All 9 Lines | |||||
4717 | } | 5127 | } | ||
4718 | 5128 | | |||
4719 | bool DatabaseInterface::isValidArtist(qulonglong albumId) | 5129 | bool DatabaseInterface::isValidArtist(qulonglong albumId) | ||
4720 | { | 5130 | { | ||
4721 | auto result = false; | 5131 | auto result = false; | ||
4722 | 5132 | | |||
4723 | d->mSelectAlbumQuery.bindValue(QStringLiteral(":albumId"), albumId); | 5133 | d->mSelectAlbumQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
4724 | 5134 | | |||
4725 | auto queryResult = d->mSelectAlbumQuery.exec(); | 5135 | auto queryResult = execQuery(d->mSelectAlbumQuery); | ||
4726 | 5136 | | |||
4727 | if (!queryResult || !d->mSelectAlbumQuery.isSelect() || !d->mSelectAlbumQuery.isActive()) { | 5137 | if (!queryResult || !d->mSelectAlbumQuery.isSelect() || !d->mSelectAlbumQuery.isActive()) { | ||
4728 | Q_EMIT databaseError(); | 5138 | Q_EMIT databaseError(); | ||
4729 | 5139 | | |||
4730 | qDebug() << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.lastQuery(); | 5140 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.lastQuery(); | ||
4731 | qDebug() << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.boundValues(); | 5141 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.boundValues(); | ||
4732 | qDebug() << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.lastError(); | 5142 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumFromId" << d->mSelectAlbumQuery.lastError(); | ||
4733 | 5143 | | |||
4734 | d->mSelectAlbumQuery.finish(); | 5144 | d->mSelectAlbumQuery.finish(); | ||
4735 | 5145 | | |||
4736 | return result; | 5146 | return result; | ||
4737 | } | 5147 | } | ||
4738 | 5148 | | |||
4739 | if (!d->mSelectAlbumQuery.next()) { | 5149 | if (!d->mSelectAlbumQuery.next()) { | ||
4740 | d->mSelectAlbumQuery.finish(); | 5150 | d->mSelectAlbumQuery.finish(); | ||
4741 | 5151 | | |||
4742 | return result; | 5152 | return result; | ||
4743 | } | 5153 | } | ||
4744 | 5154 | | |||
4745 | const auto ¤tRecord = d->mSelectAlbumQuery.record(); | 5155 | const auto ¤tRecord = d->mSelectAlbumQuery.record(); | ||
4746 | 5156 | | |||
4747 | result = !currentRecord.value(2).toString().isEmpty(); | 5157 | result = !currentRecord.value(2).toString().isEmpty(); | ||
4748 | 5158 | | |||
4749 | return result; | 5159 | return result; | ||
4750 | } | 5160 | } | ||
4751 | 5161 | | |||
4752 | qulonglong DatabaseInterface::internalSourceIdFromName(const QString &sourceName) | | |||
4753 | { | | |||
4754 | qulonglong sourceId = 0; | | |||
4755 | | ||||
4756 | d->mSelectMusicSource.bindValue(QStringLiteral(":name"), sourceName); | | |||
4757 | | ||||
4758 | auto queryResult = d->mSelectMusicSource.exec(); | | |||
4759 | | ||||
4760 | if (!queryResult || !d->mSelectMusicSource.isSelect() || !d->mSelectMusicSource.isActive()) { | | |||
4761 | Q_EMIT databaseError(); | | |||
4762 | | ||||
4763 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.lastQuery(); | | |||
4764 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.boundValues(); | | |||
4765 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.lastError(); | | |||
4766 | | ||||
4767 | d->mSelectMusicSource.finish(); | | |||
4768 | | ||||
4769 | return sourceId; | | |||
4770 | } | | |||
4771 | | ||||
4772 | if (!d->mSelectMusicSource.next()) { | | |||
4773 | return sourceId; | | |||
4774 | } | | |||
4775 | | ||||
4776 | sourceId = d->mSelectMusicSource.record().value(0).toULongLong(); | | |||
4777 | | ||||
4778 | d->mSelectMusicSource.finish(); | | |||
4779 | | ||||
4780 | return sourceId; | | |||
4781 | } | | |||
4782 | | ||||
4783 | QHash<QUrl, QDateTime> DatabaseInterface::internalAllFileNameFromSource(const QString &sourceName) | | |||
4784 | { | | |||
4785 | QHash<QUrl, QDateTime> allFileNames; | | |||
4786 | | ||||
4787 | d->mSelectAllTrackFilesFromSourceQuery.bindValue(QStringLiteral(":sourceName"), sourceName); | | |||
4788 | | ||||
4789 | auto queryResult = d->mSelectAllTrackFilesFromSourceQuery.exec(); | | |||
4790 | | ||||
4791 | if (!queryResult || !d->mSelectAllTrackFilesFromSourceQuery.isSelect() || !d->mSelectAllTrackFilesFromSourceQuery.isActive()) { | | |||
4792 | Q_EMIT databaseError(); | | |||
4793 | | ||||
4794 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesFromSourceQuery.lastQuery(); | | |||
4795 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesFromSourceQuery.boundValues(); | | |||
4796 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesFromSourceQuery.lastError(); | | |||
4797 | | ||||
4798 | d->mSelectAllTrackFilesFromSourceQuery.finish(); | | |||
4799 | | ||||
4800 | return allFileNames; | | |||
4801 | } | | |||
4802 | | ||||
4803 | while(d->mSelectAllTrackFilesFromSourceQuery.next()) { | | |||
4804 | auto fileName = d->mSelectAllTrackFilesFromSourceQuery.record().value(0).toUrl(); | | |||
4805 | auto fileModificationTime = d->mSelectAllTrackFilesFromSourceQuery.record().value(1).toDateTime(); | | |||
4806 | | ||||
4807 | allFileNames[fileName] = fileModificationTime; | | |||
4808 | } | | |||
4809 | | ||||
4810 | d->mSelectAllTrackFilesFromSourceQuery.finish(); | | |||
4811 | | ||||
4812 | return allFileNames; | | |||
4813 | } | | |||
4814 | | ||||
4815 | bool DatabaseInterface::internalGenericPartialData(QSqlQuery &query) | 5162 | bool DatabaseInterface::internalGenericPartialData(QSqlQuery &query) | ||
4816 | { | 5163 | { | ||
4817 | auto result = false; | 5164 | auto result = false; | ||
4818 | 5165 | | |||
4819 | auto queryResult = query.exec(); | 5166 | auto queryResult = execQuery(query); | ||
4820 | 5167 | | |||
4821 | if (!queryResult || !query.isSelect() || !query.isActive()) { | 5168 | if (!queryResult || !query.isSelect() || !query.isActive()) { | ||
4822 | Q_EMIT databaseError(); | 5169 | Q_EMIT databaseError(); | ||
4823 | 5170 | | |||
4824 | qDebug() << "DatabaseInterface::internalAllGenericPartialData" << query.lastQuery(); | 5171 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAllGenericPartialData" << query.lastQuery(); | ||
4825 | qDebug() << "DatabaseInterface::internalAllGenericPartialData" << query.boundValues(); | 5172 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAllGenericPartialData" << query.boundValues(); | ||
4826 | qDebug() << "DatabaseInterface::internalAllGenericPartialData" << query.lastError(); | 5173 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAllGenericPartialData" << query.lastError(); | ||
4827 | 5174 | | |||
4828 | query.finish(); | 5175 | query.finish(); | ||
4829 | 5176 | | |||
4830 | auto transactionResult = finishTransaction(); | 5177 | auto transactionResult = finishTransaction(); | ||
4831 | if (!transactionResult) { | 5178 | if (!transactionResult) { | ||
4832 | return result; | 5179 | return result; | ||
4833 | } | 5180 | } | ||
4834 | 5181 | | |||
Show All 10 Lines | 5191 | { | |||
4845 | auto result = qulonglong(0); | 5192 | auto result = qulonglong(0); | ||
4846 | 5193 | | |||
4847 | if (name.isEmpty()) { | 5194 | if (name.isEmpty()) { | ||
4848 | return result; | 5195 | return result; | ||
4849 | } | 5196 | } | ||
4850 | 5197 | | |||
4851 | d->mSelectLyricistByNameQuery.bindValue(QStringLiteral(":name"), name); | 5198 | d->mSelectLyricistByNameQuery.bindValue(QStringLiteral(":name"), name); | ||
4852 | 5199 | | |||
4853 | auto queryResult = d->mSelectLyricistByNameQuery.exec(); | 5200 | auto queryResult = execQuery(d->mSelectLyricistByNameQuery); | ||
4854 | 5201 | | |||
4855 | if (!queryResult || !d->mSelectLyricistByNameQuery.isSelect() || !d->mSelectLyricistByNameQuery.isActive()) { | 5202 | if (!queryResult || !d->mSelectLyricistByNameQuery.isSelect() || !d->mSelectLyricistByNameQuery.isActive()) { | ||
4856 | Q_EMIT databaseError(); | 5203 | Q_EMIT databaseError(); | ||
4857 | 5204 | | |||
4858 | qDebug() << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.lastQuery(); | 5205 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.lastQuery(); | ||
4859 | qDebug() << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.boundValues(); | 5206 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.boundValues(); | ||
4860 | qDebug() << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.lastError(); | 5207 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mSelectLyricistByNameQuery.lastError(); | ||
4861 | 5208 | | |||
4862 | d->mSelectLyricistByNameQuery.finish(); | 5209 | d->mSelectLyricistByNameQuery.finish(); | ||
4863 | 5210 | | |||
4864 | return result; | 5211 | return result; | ||
4865 | } | 5212 | } | ||
4866 | 5213 | | |||
4867 | if (d->mSelectLyricistByNameQuery.next()) { | 5214 | if (d->mSelectLyricistByNameQuery.next()) { | ||
4868 | result = d->mSelectLyricistByNameQuery.record().value(0).toULongLong(); | 5215 | result = d->mSelectLyricistByNameQuery.record().value(0).toULongLong(); | ||
4869 | 5216 | | |||
4870 | d->mSelectLyricistByNameQuery.finish(); | 5217 | d->mSelectLyricistByNameQuery.finish(); | ||
4871 | 5218 | | |||
4872 | return result; | 5219 | return result; | ||
4873 | } | 5220 | } | ||
4874 | 5221 | | |||
4875 | d->mSelectLyricistByNameQuery.finish(); | 5222 | d->mSelectLyricistByNameQuery.finish(); | ||
4876 | 5223 | | |||
4877 | d->mInsertLyricistQuery.bindValue(QStringLiteral(":lyricistId"), d->mLyricistId); | 5224 | d->mInsertLyricistQuery.bindValue(QStringLiteral(":lyricistId"), d->mLyricistId); | ||
4878 | d->mInsertLyricistQuery.bindValue(QStringLiteral(":name"), name); | 5225 | d->mInsertLyricistQuery.bindValue(QStringLiteral(":name"), name); | ||
4879 | 5226 | | |||
4880 | queryResult = d->mInsertLyricistQuery.exec(); | 5227 | queryResult = execQuery(d->mInsertLyricistQuery); | ||
4881 | 5228 | | |||
4882 | if (!queryResult || !d->mInsertLyricistQuery.isActive()) { | 5229 | if (!queryResult || !d->mInsertLyricistQuery.isActive()) { | ||
4883 | Q_EMIT databaseError(); | 5230 | Q_EMIT databaseError(); | ||
4884 | 5231 | | |||
4885 | qDebug() << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.lastQuery(); | 5232 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.lastQuery(); | ||
4886 | qDebug() << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.boundValues(); | 5233 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.boundValues(); | ||
4887 | qDebug() << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.lastError(); | 5234 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertLyricist" << d->mInsertLyricistQuery.lastError(); | ||
4888 | 5235 | | |||
4889 | d->mInsertLyricistQuery.finish(); | 5236 | d->mInsertLyricistQuery.finish(); | ||
4890 | 5237 | | |||
4891 | return result; | 5238 | return result; | ||
4892 | } | 5239 | } | ||
4893 | 5240 | | |||
4894 | result = d->mLyricistId; | 5241 | result = d->mLyricistId; | ||
4895 | 5242 | | |||
4896 | ++d->mLyricistId; | 5243 | ++d->mLyricistId; | ||
4897 | 5244 | | |||
4898 | d->mInsertLyricistQuery.finish(); | 5245 | d->mInsertLyricistQuery.finish(); | ||
4899 | 5246 | | |||
4900 | Q_EMIT lyricistsAdded(internalAllLyricistsPartialData()); | 5247 | Q_EMIT lyricistsAdded(internalAllLyricistsPartialData()); | ||
4901 | 5248 | | |||
4902 | return result; | 5249 | return result; | ||
4903 | } | 5250 | } | ||
4904 | 5251 | | |||
5252 | QHash<QUrl, QDateTime> DatabaseInterface::internalAllFileName() | ||||
5253 | { | ||||
5254 | auto allFileNames = QHash<QUrl, QDateTime>{}; | ||||
5255 | | ||||
5256 | auto queryResult = execQuery(d->mSelectAllTrackFilesQuery); | ||||
5257 | | ||||
5258 | if (!queryResult || !d->mSelectAllTrackFilesQuery.isSelect() || !d->mSelectAllTrackFilesQuery.isActive()) { | ||||
5259 | Q_EMIT databaseError(); | ||||
5260 | | ||||
5261 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesQuery.lastQuery(); | ||||
5262 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesQuery.boundValues(); | ||||
5263 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << d->mSelectAllTrackFilesQuery.lastError(); | ||||
5264 | | ||||
5265 | d->mSelectAllTrackFilesQuery.finish(); | ||||
5266 | | ||||
5267 | return allFileNames; | ||||
5268 | } | ||||
5269 | | ||||
5270 | while(d->mSelectAllTrackFilesQuery.next()) { | ||||
5271 | auto fileName = d->mSelectAllTrackFilesQuery.record().value(0).toUrl(); | ||||
5272 | auto fileModificationTime = d->mSelectAllTrackFilesQuery.record().value(1).toDateTime(); | ||||
5273 | | ||||
5274 | allFileNames[fileName] = fileModificationTime; | ||||
5275 | } | ||||
5276 | | ||||
5277 | d->mSelectAllTrackFilesQuery.finish(); | ||||
5278 | | ||||
5279 | return allFileNames; | ||||
5280 | } | ||||
5281 | | ||||
4905 | qulonglong DatabaseInterface::internalArtistIdFromName(const QString &name) | 5282 | qulonglong DatabaseInterface::internalArtistIdFromName(const QString &name) | ||
4906 | { | 5283 | { | ||
4907 | auto result = qulonglong(0); | 5284 | auto result = qulonglong(0); | ||
4908 | 5285 | | |||
4909 | if (name.isEmpty()) { | 5286 | if (name.isEmpty()) { | ||
4910 | return result; | 5287 | return result; | ||
4911 | } | 5288 | } | ||
4912 | 5289 | | |||
4913 | d->mSelectArtistByNameQuery.bindValue(QStringLiteral(":name"), name); | 5290 | d->mSelectArtistByNameQuery.bindValue(QStringLiteral(":name"), name); | ||
4914 | 5291 | | |||
4915 | auto queryResult = d->mSelectArtistByNameQuery.exec(); | 5292 | auto queryResult = execQuery(d->mSelectArtistByNameQuery); | ||
4916 | 5293 | | |||
4917 | if (!queryResult || !d->mSelectArtistByNameQuery.isSelect() || !d->mSelectArtistByNameQuery.isActive()) { | 5294 | if (!queryResult || !d->mSelectArtistByNameQuery.isSelect() || !d->mSelectArtistByNameQuery.isActive()) { | ||
4918 | Q_EMIT databaseError(); | 5295 | Q_EMIT databaseError(); | ||
4919 | 5296 | | |||
4920 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastQuery(); | 5297 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastQuery(); | ||
4921 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.boundValues(); | 5298 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.boundValues(); | ||
4922 | qDebug() << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastError(); | 5299 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertArtist" << d->mSelectArtistByNameQuery.lastError(); | ||
4923 | 5300 | | |||
4924 | d->mSelectArtistByNameQuery.finish(); | 5301 | d->mSelectArtistByNameQuery.finish(); | ||
4925 | 5302 | | |||
4926 | return result; | 5303 | return result; | ||
4927 | } | 5304 | } | ||
4928 | 5305 | | |||
4929 | if (!d->mSelectArtistByNameQuery.next()) { | 5306 | if (!d->mSelectArtistByNameQuery.next()) { | ||
4930 | d->mSelectArtistByNameQuery.finish(); | 5307 | d->mSelectArtistByNameQuery.finish(); | ||
4931 | 5308 | | |||
4932 | return result; | 5309 | return result; | ||
4933 | } | 5310 | } | ||
4934 | 5311 | | |||
4935 | result = d->mSelectArtistByNameQuery.record().value(0).toULongLong(); | 5312 | result = d->mSelectArtistByNameQuery.record().value(0).toULongLong(); | ||
4936 | 5313 | | |||
4937 | d->mSelectArtistByNameQuery.finish(); | 5314 | d->mSelectArtistByNameQuery.finish(); | ||
4938 | 5315 | | |||
4939 | return result; | 5316 | return result; | ||
4940 | } | 5317 | } | ||
4941 | 5318 | | |||
4942 | void DatabaseInterface::removeTrackInDatabase(qulonglong trackId) | 5319 | void DatabaseInterface::removeTrackInDatabase(qulonglong trackId) | ||
4943 | { | 5320 | { | ||
4944 | d->mRemoveTrackQuery.bindValue(QStringLiteral(":trackId"), trackId); | 5321 | d->mRemoveTrackQuery.bindValue(QStringLiteral(":trackId"), trackId); | ||
4945 | 5322 | | |||
4946 | auto result = d->mRemoveTrackQuery.exec(); | 5323 | auto result = execQuery(d->mRemoveTrackQuery); | ||
4947 | 5324 | | |||
4948 | if (!result || !d->mRemoveTrackQuery.isActive()) { | 5325 | if (!result || !d->mRemoveTrackQuery.isActive()) { | ||
4949 | Q_EMIT databaseError(); | 5326 | Q_EMIT databaseError(); | ||
4950 | 5327 | | |||
4951 | qDebug() << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.lastQuery(); | 5328 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.lastQuery(); | ||
4952 | qDebug() << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.boundValues(); | 5329 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.boundValues(); | ||
4953 | qDebug() << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.lastError(); | 5330 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeTrackInDatabase" << d->mRemoveTrackQuery.lastError(); | ||
4954 | } | 5331 | } | ||
4955 | 5332 | | |||
4956 | d->mRemoveTrackQuery.finish(); | 5333 | d->mRemoveTrackQuery.finish(); | ||
4957 | } | 5334 | } | ||
4958 | 5335 | | |||
4959 | void DatabaseInterface::updateTrackInDatabase(const MusicAudioTrack &oneTrack, const QString &albumPath) | 5336 | void DatabaseInterface::updateTrackInDatabase(const MusicAudioTrack &oneTrack, const QString &albumPath) | ||
4960 | { | 5337 | { | ||
4961 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | 5338 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":fileName"), oneTrack.resourceURI()); | ||
4962 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackId"), oneTrack.databaseId()); | 5339 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackId"), oneTrack.databaseId()); | ||
4963 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":title"), oneTrack.title()); | 5340 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":title"), oneTrack.title()); | ||
4964 | insertArtist(oneTrack.artist()); | 5341 | insertArtist(oneTrack.artist()); | ||
4965 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":artistName"), oneTrack.artist()); | 5342 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":artistName"), oneTrack.artist()); | ||
4966 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumTitle"), oneTrack.albumName()); | 5343 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumTitle"), oneTrack.albumName()); | ||
4967 | if (oneTrack.isValidAlbumArtist()) { | 5344 | if (oneTrack.isValidAlbumArtist()) { | ||
4968 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumArtistName"), oneTrack.albumArtist()); | 5345 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumArtistName"), oneTrack.albumArtist()); | ||
4969 | } else { | 5346 | } else { | ||
4970 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumArtistName"), {}); | 5347 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumArtistName"), {}); | ||
4971 | } | 5348 | } | ||
4972 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumPath"), albumPath); | 5349 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":albumPath"), albumPath); | ||
5350 | if (oneTrack.trackNumberIsValid()) { | ||||
4973 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackNumber"), oneTrack.trackNumber()); | 5351 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackNumber"), oneTrack.trackNumber()); | ||
5352 | } else { | ||||
5353 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackNumber"), {}); | ||||
5354 | } | ||||
5355 | if (oneTrack.discNumberIsValid()) { | ||||
4974 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":discNumber"), oneTrack.discNumber()); | 5356 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":discNumber"), oneTrack.discNumber()); | ||
5357 | } else { | ||||
5358 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":discNumber"), {}); | ||||
5359 | } | ||||
4975 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackDuration"), QVariant::fromValue<qlonglong>(oneTrack.duration().msecsSinceStartOfDay())); | 5360 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackDuration"), QVariant::fromValue<qlonglong>(oneTrack.duration().msecsSinceStartOfDay())); | ||
4976 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | 5361 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":trackRating"), oneTrack.rating()); | ||
4977 | if (insertGenre(oneTrack.genre()) != 0) { | 5362 | if (insertGenre(oneTrack.genre()) != 0) { | ||
4978 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":genre"), oneTrack.genre()); | 5363 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":genre"), oneTrack.genre()); | ||
4979 | } else { | 5364 | } else { | ||
4980 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":genre"), {}); | 5365 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":genre"), {}); | ||
4981 | } | 5366 | } | ||
4982 | if (insertComposer(oneTrack.composer()) != 0) { | 5367 | if (insertComposer(oneTrack.composer()) != 0) { | ||
4983 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":composer"), oneTrack.composer()); | 5368 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":composer"), oneTrack.composer()); | ||
4984 | } else { | 5369 | } else { | ||
4985 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":composer"), {}); | 5370 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":composer"), {}); | ||
4986 | } | 5371 | } | ||
4987 | if (insertLyricist(oneTrack.lyricist()) != 0) { | 5372 | if (insertLyricist(oneTrack.lyricist()) != 0) { | ||
4988 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":lyricist"), oneTrack.lyricist()); | 5373 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":lyricist"), oneTrack.lyricist()); | ||
4989 | } else { | 5374 | } else { | ||
4990 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":lyricist"), {}); | 5375 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":lyricist"), {}); | ||
4991 | } | 5376 | } | ||
4992 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | 5377 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":comment"), oneTrack.comment()); | ||
4993 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":year"), oneTrack.year()); | 5378 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":year"), oneTrack.year()); | ||
5379 | if (oneTrack.channelsIsValid()) { | ||||
4994 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":channels"), oneTrack.channels()); | 5380 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":channels"), oneTrack.channels()); | ||
5381 | } else { | ||||
5382 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":channels"), {}); | ||||
5383 | } | ||||
5384 | if (oneTrack.bitRateIsValid()) { | ||||
4995 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":bitRate"), oneTrack.bitRate()); | 5385 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":bitRate"), oneTrack.bitRate()); | ||
5386 | } else { | ||||
5387 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":bitRate"), {}); | ||||
5388 | } | ||||
5389 | if (oneTrack.sampleRateIsValid()) { | ||||
4996 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":sampleRate"), oneTrack.sampleRate()); | 5390 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":sampleRate"), oneTrack.sampleRate()); | ||
5391 | } else { | ||||
5392 | d->mUpdateTrackQuery.bindValue(QStringLiteral(":sampleRate"), {}); | ||||
5393 | } | ||||
4997 | 5394 | | |||
4998 | auto result = d->mUpdateTrackQuery.exec(); | 5395 | auto result = execQuery(d->mUpdateTrackQuery); | ||
4999 | 5396 | | |||
5000 | if (!result || !d->mUpdateTrackQuery.isActive()) { | 5397 | if (!result || !d->mUpdateTrackQuery.isActive()) { | ||
5001 | Q_EMIT databaseError(); | 5398 | Q_EMIT databaseError(); | ||
5002 | 5399 | | |||
5003 | qDebug() << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.lastQuery(); | 5400 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.lastQuery(); | ||
5004 | qDebug() << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.boundValues(); | 5401 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.boundValues(); | ||
5005 | qDebug() << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.lastError(); | 5402 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackInDatabase" << d->mUpdateTrackQuery.lastError(); | ||
5006 | } | 5403 | } | ||
5007 | 5404 | | |||
5008 | d->mUpdateTrackQuery.finish(); | 5405 | d->mUpdateTrackQuery.finish(); | ||
5009 | } | 5406 | } | ||
5010 | 5407 | | |||
5011 | void DatabaseInterface::removeAlbumInDatabase(qulonglong albumId) | 5408 | void DatabaseInterface::removeAlbumInDatabase(qulonglong albumId) | ||
5012 | { | 5409 | { | ||
5013 | d->mRemoveAlbumQuery.bindValue(QStringLiteral(":albumId"), albumId); | 5410 | d->mRemoveAlbumQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
5014 | 5411 | | |||
5015 | auto result = d->mRemoveAlbumQuery.exec(); | 5412 | auto result = execQuery(d->mRemoveAlbumQuery); | ||
5016 | 5413 | | |||
5017 | if (!result || !d->mRemoveAlbumQuery.isActive()) { | 5414 | if (!result || !d->mRemoveAlbumQuery.isActive()) { | ||
5018 | Q_EMIT databaseError(); | 5415 | Q_EMIT databaseError(); | ||
5019 | 5416 | | |||
5020 | qDebug() << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.lastQuery(); | 5417 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.lastQuery(); | ||
5021 | qDebug() << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.boundValues(); | 5418 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.boundValues(); | ||
5022 | qDebug() << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.lastError(); | 5419 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeAlbumInDatabase" << d->mRemoveAlbumQuery.lastError(); | ||
5023 | } | 5420 | } | ||
5024 | 5421 | | |||
5025 | d->mRemoveAlbumQuery.finish(); | 5422 | d->mRemoveAlbumQuery.finish(); | ||
5026 | } | 5423 | } | ||
5027 | 5424 | | |||
5028 | void DatabaseInterface::removeArtistInDatabase(qulonglong artistId) | 5425 | void DatabaseInterface::removeArtistInDatabase(qulonglong artistId) | ||
5029 | { | 5426 | { | ||
5030 | d->mRemoveArtistQuery.bindValue(QStringLiteral(":artistId"), artistId); | 5427 | d->mRemoveArtistQuery.bindValue(QStringLiteral(":artistId"), artistId); | ||
5031 | 5428 | | |||
5032 | auto result = d->mRemoveArtistQuery.exec(); | 5429 | auto result = execQuery(d->mRemoveArtistQuery); | ||
5033 | 5430 | | |||
5034 | if (!result || !d->mRemoveArtistQuery.isActive()) { | 5431 | if (!result || !d->mRemoveArtistQuery.isActive()) { | ||
5035 | Q_EMIT databaseError(); | 5432 | Q_EMIT databaseError(); | ||
5036 | 5433 | | |||
5037 | qDebug() << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.lastQuery(); | 5434 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.lastQuery(); | ||
5038 | qDebug() << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.boundValues(); | 5435 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.boundValues(); | ||
5039 | qDebug() << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.lastError(); | 5436 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::removeArtistInDatabase" << d->mRemoveArtistQuery.lastError(); | ||
5040 | } | 5437 | } | ||
5041 | 5438 | | |||
5042 | d->mRemoveArtistQuery.finish(); | 5439 | d->mRemoveArtistQuery.finish(); | ||
5043 | } | 5440 | } | ||
5044 | 5441 | | |||
5045 | void DatabaseInterface::reloadExistingDatabase() | 5442 | void DatabaseInterface::reloadExistingDatabase() | ||
5046 | { | 5443 | { | ||
5047 | qDebug() << "DatabaseInterface::reloadExistingDatabase"; | 5444 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::reloadExistingDatabase"; | ||
5048 | 5445 | | |||
5049 | d->mArtistId = initialId(DataUtils::DataType::AllArtists); | 5446 | d->mArtistId = initialId(DataUtils::DataType::AllArtists); | ||
5050 | d->mComposerId = initialId(DataUtils::DataType::AllComposers); | 5447 | d->mComposerId = initialId(DataUtils::DataType::AllComposers); | ||
5051 | d->mLyricistId = initialId(DataUtils::DataType::AllLyricists); | 5448 | d->mLyricistId = initialId(DataUtils::DataType::AllLyricists); | ||
5052 | d->mAlbumId = initialId(DataUtils::DataType::AllAlbums); | 5449 | d->mAlbumId = initialId(DataUtils::DataType::AllAlbums); | ||
5053 | d->mTrackId = initialId(DataUtils::DataType::AllTracks); | 5450 | d->mTrackId = initialId(DataUtils::DataType::AllTracks); | ||
5054 | d->mGenreId = initialId(DataUtils::DataType::AllGenres);; | 5451 | d->mGenreId = initialId(DataUtils::DataType::AllGenres);; | ||
5055 | } | 5452 | } | ||
Show All 24 Lines | |||||
5080 | { | 5477 | { | ||
5081 | auto result = qulonglong(0); | 5478 | auto result = qulonglong(0); | ||
5082 | 5479 | | |||
5083 | auto transactionResult = startTransaction(); | 5480 | auto transactionResult = startTransaction(); | ||
5084 | if (!transactionResult) { | 5481 | if (!transactionResult) { | ||
5085 | return result; | 5482 | return result; | ||
5086 | } | 5483 | } | ||
5087 | 5484 | | |||
5088 | auto queryResult = request.exec(); | 5485 | auto queryResult = execQuery(request); | ||
5089 | 5486 | | |||
5090 | if (!queryResult || !request.isSelect() || !request.isActive()) { | 5487 | if (!queryResult || !request.isSelect() || !request.isActive()) { | ||
5091 | Q_EMIT databaseError(); | 5488 | Q_EMIT databaseError(); | ||
5092 | 5489 | | |||
5093 | qDebug() << "DatabaseInterface::insertMusicSource" << request.lastQuery(); | 5490 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << request.lastQuery(); | ||
5094 | qDebug() << "DatabaseInterface::insertMusicSource" << request.boundValues(); | 5491 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << request.boundValues(); | ||
5095 | qDebug() << "DatabaseInterface::insertMusicSource" << request.lastError(); | 5492 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::insertMusicSource" << request.lastError(); | ||
5096 | 5493 | | |||
5097 | request.finish(); | 5494 | request.finish(); | ||
5098 | 5495 | | |||
5099 | transactionResult = finishTransaction(); | 5496 | transactionResult = finishTransaction(); | ||
5100 | if (!transactionResult) { | 5497 | if (!transactionResult) { | ||
5101 | return result; | 5498 | return result; | ||
5102 | } | 5499 | } | ||
5103 | 5500 | | |||
Show All 9 Lines | |||||
5113 | transactionResult = finishTransaction(); | 5510 | transactionResult = finishTransaction(); | ||
5114 | if (!transactionResult) { | 5511 | if (!transactionResult) { | ||
5115 | return result; | 5512 | return result; | ||
5116 | } | 5513 | } | ||
5117 | 5514 | | |||
5118 | return result; | 5515 | return result; | ||
5119 | } | 5516 | } | ||
5120 | 5517 | | |||
5121 | qulonglong DatabaseInterface::insertMusicSource(const QString &name) | | |||
5122 | { | | |||
5123 | qulonglong result = 0; | | |||
5124 | | ||||
5125 | d->mSelectMusicSource.bindValue(QStringLiteral(":name"), name); | | |||
5126 | | ||||
5127 | auto queryResult = d->mSelectMusicSource.exec(); | | |||
5128 | | ||||
5129 | if (!queryResult || !d->mSelectMusicSource.isSelect() || !d->mSelectMusicSource.isActive()) { | | |||
5130 | Q_EMIT databaseError(); | | |||
5131 | | ||||
5132 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.lastQuery(); | | |||
5133 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.boundValues(); | | |||
5134 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mSelectMusicSource.lastError(); | | |||
5135 | | ||||
5136 | d->mSelectMusicSource.finish(); | | |||
5137 | | ||||
5138 | return result; | | |||
5139 | } | | |||
5140 | | ||||
5141 | if (d->mSelectMusicSource.next()) { | | |||
5142 | result = d->mSelectMusicSource.record().value(0).toULongLong(); | | |||
5143 | | ||||
5144 | d->mSelectMusicSource.finish(); | | |||
5145 | | ||||
5146 | return result; | | |||
5147 | } | | |||
5148 | | ||||
5149 | d->mSelectMusicSource.finish(); | | |||
5150 | | ||||
5151 | d->mInsertMusicSource.bindValue(QStringLiteral(":discoverId"), d->mDiscoverId); | | |||
5152 | d->mInsertMusicSource.bindValue(QStringLiteral(":name"), name); | | |||
5153 | | ||||
5154 | queryResult = d->mInsertMusicSource.exec(); | | |||
5155 | | ||||
5156 | if (!queryResult || !d->mInsertMusicSource.isActive()) { | | |||
5157 | Q_EMIT databaseError(); | | |||
5158 | | ||||
5159 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mInsertMusicSource.lastQuery(); | | |||
5160 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mInsertMusicSource.boundValues(); | | |||
5161 | qDebug() << "DatabaseInterface::insertMusicSource" << d->mInsertMusicSource.lastError(); | | |||
5162 | | ||||
5163 | d->mInsertMusicSource.finish(); | | |||
5164 | | ||||
5165 | return d->mDiscoverId; | | |||
5166 | } | | |||
5167 | | ||||
5168 | d->mInsertMusicSource.finish(); | | |||
5169 | | ||||
5170 | ++d->mDiscoverId; | | |||
5171 | | ||||
5172 | return d->mDiscoverId - 1; | | |||
5173 | } | | |||
5174 | | ||||
5175 | QList<qulonglong> DatabaseInterface::fetchTrackIds(qulonglong albumId) | 5518 | QList<qulonglong> DatabaseInterface::fetchTrackIds(qulonglong albumId) | ||
5176 | { | 5519 | { | ||
5177 | auto allTracks = QList<qulonglong>(); | 5520 | auto allTracks = QList<qulonglong>(); | ||
5178 | 5521 | | |||
5179 | d->mSelectTrackQuery.bindValue(QStringLiteral(":albumId"), albumId); | 5522 | d->mSelectTrackIdQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
5180 | 5523 | | |||
5181 | auto result = d->mSelectTrackQuery.exec(); | 5524 | auto result = execQuery(d->mSelectTrackIdQuery); | ||
5182 | 5525 | | |||
5183 | if (!result || !d->mSelectTrackQuery.isSelect() || !d->mSelectTrackQuery.isActive()) { | 5526 | if (!result || !d->mSelectTrackIdQuery.isSelect() || !d->mSelectTrackIdQuery.isActive()) { | ||
5184 | Q_EMIT databaseError(); | 5527 | Q_EMIT databaseError(); | ||
5185 | 5528 | | |||
5186 | qDebug() << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackQuery.lastQuery(); | 5529 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackIdQuery.lastQuery(); | ||
5187 | qDebug() << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackQuery.boundValues(); | 5530 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackIdQuery.boundValues(); | ||
5188 | qDebug() << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackQuery.lastError(); | 5531 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::fetchTrackIds" << d->mSelectTrackIdQuery.lastError(); | ||
5189 | } | 5532 | } | ||
5190 | 5533 | | |||
5191 | while (d->mSelectTrackQuery.next()) { | 5534 | while (d->mSelectTrackIdQuery.next()) { | ||
5192 | const auto ¤tRecord = d->mSelectTrackQuery.record(); | 5535 | const auto ¤tRecord = d->mSelectTrackIdQuery.record(); | ||
5193 | 5536 | | |||
5194 | allTracks.push_back(currentRecord.value(0).toULongLong()); | 5537 | allTracks.push_back(currentRecord.value(0).toULongLong()); | ||
5195 | } | 5538 | } | ||
5196 | 5539 | | |||
5197 | d->mSelectTrackQuery.finish(); | 5540 | d->mSelectTrackIdQuery.finish(); | ||
5198 | 5541 | | |||
5199 | return allTracks; | 5542 | return allTracks; | ||
5200 | } | 5543 | } | ||
5201 | 5544 | | |||
5202 | qulonglong DatabaseInterface::internalAlbumIdFromTitleAndArtist(const QString &title, const QString &artist) | 5545 | qulonglong DatabaseInterface::internalAlbumIdFromTitleAndArtist(const QString &title, const QString &artist) | ||
5203 | { | 5546 | { | ||
5204 | auto result = qulonglong(0); | 5547 | auto result = qulonglong(0); | ||
5205 | 5548 | | |||
5206 | d->mSelectAlbumIdFromTitleQuery.bindValue(QStringLiteral(":title"), title); | 5549 | d->mSelectAlbumIdFromTitleQuery.bindValue(QStringLiteral(":title"), title); | ||
5207 | d->mSelectAlbumIdFromTitleQuery.bindValue(QStringLiteral(":artistName"), artist); | 5550 | d->mSelectAlbumIdFromTitleQuery.bindValue(QStringLiteral(":artistName"), artist); | ||
5208 | 5551 | | |||
5209 | auto queryResult = d->mSelectAlbumIdFromTitleQuery.exec(); | 5552 | auto queryResult = execQuery(d->mSelectAlbumIdFromTitleQuery); | ||
5210 | 5553 | | |||
5211 | if (!queryResult || !d->mSelectAlbumIdFromTitleQuery.isSelect() || !d->mSelectAlbumIdFromTitleQuery.isActive()) { | 5554 | if (!queryResult || !d->mSelectAlbumIdFromTitleQuery.isSelect() || !d->mSelectAlbumIdFromTitleQuery.isActive()) { | ||
5212 | Q_EMIT databaseError(); | 5555 | Q_EMIT databaseError(); | ||
5213 | 5556 | | |||
5214 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.lastQuery(); | 5557 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.lastQuery(); | ||
5215 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.boundValues(); | 5558 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.boundValues(); | ||
5216 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.lastError(); | 5559 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleQuery.lastError(); | ||
5217 | 5560 | | |||
5218 | d->mSelectAlbumIdFromTitleQuery.finish(); | 5561 | d->mSelectAlbumIdFromTitleQuery.finish(); | ||
5219 | 5562 | | |||
5220 | return result; | 5563 | return result; | ||
5221 | } | 5564 | } | ||
5222 | 5565 | | |||
5223 | if (d->mSelectAlbumIdFromTitleQuery.next()) { | 5566 | if (d->mSelectAlbumIdFromTitleQuery.next()) { | ||
5224 | result = d->mSelectAlbumIdFromTitleQuery.record().value(0).toULongLong(); | 5567 | result = d->mSelectAlbumIdFromTitleQuery.record().value(0).toULongLong(); | ||
5225 | } | 5568 | } | ||
5226 | 5569 | | |||
5227 | d->mSelectAlbumIdFromTitleQuery.finish(); | 5570 | d->mSelectAlbumIdFromTitleQuery.finish(); | ||
5228 | 5571 | | |||
5229 | if (result == 0) { | 5572 | if (result == 0) { | ||
5230 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":title"), title); | 5573 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.bindValue(QStringLiteral(":title"), title); | ||
5231 | 5574 | | |||
5232 | auto queryResult = d->mSelectAlbumIdFromTitleWithoutArtistQuery.exec(); | 5575 | auto queryResult = execQuery(d->mSelectAlbumIdFromTitleWithoutArtistQuery); | ||
5233 | 5576 | | |||
5234 | if (!queryResult || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isActive()) { | 5577 | if (!queryResult || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isSelect() || !d->mSelectAlbumIdFromTitleWithoutArtistQuery.isActive()) { | ||
5235 | Q_EMIT databaseError(); | 5578 | Q_EMIT databaseError(); | ||
5236 | 5579 | | |||
5237 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | 5580 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastQuery(); | ||
5238 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.boundValues(); | 5581 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.boundValues(); | ||
5239 | qDebug() << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | 5582 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalAlbumIdFromTitleAndArtist" << d->mSelectAlbumIdFromTitleWithoutArtistQuery.lastError(); | ||
5240 | 5583 | | |||
5241 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.finish(); | 5584 | d->mSelectAlbumIdFromTitleWithoutArtistQuery.finish(); | ||
5242 | 5585 | | |||
5243 | return result; | 5586 | return result; | ||
5244 | } | 5587 | } | ||
5245 | 5588 | | |||
5246 | if (d->mSelectAlbumIdFromTitleWithoutArtistQuery.next()) { | 5589 | if (d->mSelectAlbumIdFromTitleWithoutArtistQuery.next()) { | ||
5247 | result = d->mSelectAlbumIdFromTitleWithoutArtistQuery.record().value(0).toULongLong(); | 5590 | result = d->mSelectAlbumIdFromTitleWithoutArtistQuery.record().value(0).toULongLong(); | ||
Show All 14 Lines | 5600 | { | |||
5262 | } | 5605 | } | ||
5263 | 5606 | | |||
5264 | if (!d || !d->mTracksDatabase.isValid() || !d->mInitFinished) { | 5607 | if (!d || !d->mTracksDatabase.isValid() || !d->mInitFinished) { | ||
5265 | return result; | 5608 | return result; | ||
5266 | } | 5609 | } | ||
5267 | 5610 | | |||
5268 | d->mSelectTrackFromIdQuery.bindValue(QStringLiteral(":trackId"), id); | 5611 | d->mSelectTrackFromIdQuery.bindValue(QStringLiteral(":trackId"), id); | ||
5269 | 5612 | | |||
5270 | auto queryResult = d->mSelectTrackFromIdQuery.exec(); | 5613 | auto queryResult = execQuery(d->mSelectTrackFromIdQuery); | ||
5271 | 5614 | | |||
5272 | if (!queryResult || !d->mSelectTrackFromIdQuery.isSelect() || !d->mSelectTrackFromIdQuery.isActive()) { | 5615 | if (!queryResult || !d->mSelectTrackFromIdQuery.isSelect() || !d->mSelectTrackFromIdQuery.isActive()) { | ||
5273 | Q_EMIT databaseError(); | 5616 | Q_EMIT databaseError(); | ||
5274 | 5617 | | |||
5275 | qDebug() << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.lastQuery(); | 5618 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.lastQuery(); | ||
5276 | qDebug() << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.boundValues(); | 5619 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.boundValues(); | ||
5277 | qDebug() << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.lastError(); | 5620 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackFromDatabaseId" << d->mSelectTrackFromIdQuery.lastError(); | ||
5278 | 5621 | | |||
5279 | d->mSelectTrackFromIdQuery.finish(); | 5622 | d->mSelectTrackFromIdQuery.finish(); | ||
5280 | 5623 | | |||
5281 | return result; | 5624 | return result; | ||
5282 | } | 5625 | } | ||
5283 | 5626 | | |||
5284 | if (!d->mSelectTrackFromIdQuery.next()) { | 5627 | if (!d->mSelectTrackFromIdQuery.next()) { | ||
5285 | d->mSelectTrackFromIdQuery.finish(); | 5628 | d->mSelectTrackFromIdQuery.finish(); | ||
Show All 20 Lines | 5644 | { | |||
5306 | } | 5649 | } | ||
5307 | 5650 | | |||
5308 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":title"), title); | 5651 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":title"), title); | ||
5309 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":artist"), artist); | 5652 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":artist"), artist); | ||
5310 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album); | 5653 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album); | ||
5311 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackNumber"), trackNumber); | 5654 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackNumber"), trackNumber); | ||
5312 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":discNumber"), discNumber); | 5655 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":discNumber"), discNumber); | ||
5313 | 5656 | | |||
5314 | auto queryResult = d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.exec(); | 5657 | auto queryResult = execQuery(d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery); | ||
5315 | 5658 | | |||
5316 | if (!queryResult || !d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.isSelect() || !d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.isActive()) { | 5659 | if (!queryResult || !d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.isSelect() || !d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.isActive()) { | ||
5317 | Q_EMIT databaseError(); | 5660 | Q_EMIT databaseError(); | ||
5318 | 5661 | | |||
5319 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastQuery(); | 5662 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastQuery(); | ||
5320 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.boundValues(); | 5663 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.boundValues(); | ||
5321 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastError(); | 5664 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.lastError(); | ||
5322 | 5665 | | |||
5323 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.finish(); | 5666 | d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.finish(); | ||
5324 | 5667 | | |||
5325 | return result; | 5668 | return result; | ||
5326 | } | 5669 | } | ||
5327 | 5670 | | |||
5328 | if (d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.next()) { | 5671 | if (d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.next()) { | ||
5329 | result = d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.record().value(0).toULongLong(); | 5672 | result = d->mSelectTrackIdFromTitleArtistAlbumTrackDiscNumberQuery.record().value(0).toULongLong(); | ||
Show All 16 Lines | 5683 | { | |||
5346 | 5689 | | |||
5347 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":title"), title); | 5690 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":title"), title); | ||
5348 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackArtist"), trackArtist); | 5691 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":trackArtist"), trackArtist); | ||
5349 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album); | 5692 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":album"), album); | ||
5350 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | 5693 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":albumPath"), trackPath); | ||
5351 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":albumArtist"), albumArtist); | 5694 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":albumArtist"), albumArtist); | ||
5352 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":priority"), priority); | 5695 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.bindValue(QStringLiteral(":priority"), priority); | ||
5353 | 5696 | | |||
5354 | auto queryResult = d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.exec(); | 5697 | auto queryResult = execQuery(d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery); | ||
5355 | 5698 | | |||
5356 | if (!queryResult || !d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.isSelect() || !d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.isActive()) { | 5699 | if (!queryResult || !d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.isSelect() || !d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.isActive()) { | ||
5357 | Q_EMIT databaseError(); | 5700 | Q_EMIT databaseError(); | ||
5358 | 5701 | | |||
5359 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastQuery(); | 5702 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastQuery(); | ||
5360 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.boundValues(); | 5703 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.boundValues(); | ||
5361 | qDebug() << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastError(); | 5704 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::trackIdFromTitleAlbumArtist" << d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.lastError(); | ||
5362 | 5705 | | |||
5363 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.finish(); | 5706 | d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.finish(); | ||
5364 | 5707 | | |||
5365 | return result; | 5708 | return result; | ||
5366 | } | 5709 | } | ||
5367 | 5710 | | |||
5368 | if (d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.next()) { | 5711 | if (d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.next()) { | ||
5369 | result = d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.record().value(0).toULongLong(); | 5712 | result = d->mSelectTrackIdFromTitleAlbumTrackDiscNumberQuery.record().value(0).toULongLong(); | ||
Show All 9 Lines | 5721 | { | |||
5379 | auto result = qulonglong(0); | 5722 | auto result = qulonglong(0); | ||
5380 | 5723 | | |||
5381 | if (!d) { | 5724 | if (!d) { | ||
5382 | return result; | 5725 | return result; | ||
5383 | } | 5726 | } | ||
5384 | 5727 | | |||
5385 | d->mSelectTracksMapping.bindValue(QStringLiteral(":fileName"), fileName.toString()); | 5728 | d->mSelectTracksMapping.bindValue(QStringLiteral(":fileName"), fileName.toString()); | ||
5386 | 5729 | | |||
5387 | auto queryResult = d->mSelectTracksMapping.exec(); | 5730 | auto queryResult = execQuery(d->mSelectTracksMapping); | ||
5388 | 5731 | | |||
5389 | if (!queryResult || !d->mSelectTracksMapping.isSelect() || !d->mSelectTracksMapping.isActive()) { | 5732 | if (!queryResult || !d->mSelectTracksMapping.isSelect() || !d->mSelectTracksMapping.isActive()) { | ||
5390 | Q_EMIT databaseError(); | 5733 | Q_EMIT databaseError(); | ||
5391 | 5734 | | |||
5392 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.lastQuery(); | 5735 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.lastQuery(); | ||
5393 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.boundValues(); | 5736 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.boundValues(); | ||
5394 | qDebug() << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.lastError(); | 5737 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::internalTrackIdFromFileName" << d->mSelectTracksMapping.lastError(); | ||
5395 | 5738 | | |||
5396 | d->mSelectTracksMapping.finish(); | 5739 | d->mSelectTracksMapping.finish(); | ||
5397 | 5740 | | |||
5398 | return result; | 5741 | return result; | ||
5399 | } | 5742 | } | ||
5400 | 5743 | | |||
5401 | if (d->mSelectTracksMapping.next()) { | 5744 | if (d->mSelectTracksMapping.next()) { | ||
5402 | const auto ¤tRecordValue = d->mSelectTracksMapping.record().value(0); | 5745 | const auto ¤tRecordValue = d->mSelectTracksMapping.record().value(0); | ||
5403 | if (currentRecordValue.isValid()) { | 5746 | if (currentRecordValue.isValid()) { | ||
5404 | result = currentRecordValue.toULongLong(); | 5747 | result = currentRecordValue.toULongLong(); | ||
5405 | } | 5748 | } | ||
5406 | } | 5749 | } | ||
5407 | 5750 | | |||
5408 | d->mSelectTracksMapping.finish(); | 5751 | d->mSelectTracksMapping.finish(); | ||
5409 | 5752 | | |||
5410 | return result; | 5753 | return result; | ||
5411 | } | 5754 | } | ||
5412 | 5755 | | |||
5413 | DatabaseInterface::ListTrackDataType DatabaseInterface::internalTracksFromAuthor(const QString &ArtistName) | 5756 | DatabaseInterface::ListTrackDataType DatabaseInterface::internalTracksFromAuthor(const QString &ArtistName) | ||
5414 | { | 5757 | { | ||
5415 | auto allTracks = ListTrackDataType{}; | 5758 | auto allTracks = ListTrackDataType{}; | ||
5416 | 5759 | | |||
5417 | d->mSelectTracksFromArtist.bindValue(QStringLiteral(":artistName"), ArtistName); | 5760 | d->mSelectTracksFromArtist.bindValue(QStringLiteral(":artistName"), ArtistName); | ||
5418 | 5761 | | |||
5419 | auto result = d->mSelectTracksFromArtist.exec(); | 5762 | auto result = execQuery(d->mSelectTracksFromArtist); | ||
5420 | 5763 | | |||
5421 | if (!result || !d->mSelectTracksFromArtist.isSelect() || !d->mSelectTracksFromArtist.isActive()) { | 5764 | if (!result || !d->mSelectTracksFromArtist.isSelect() || !d->mSelectTracksFromArtist.isActive()) { | ||
5422 | Q_EMIT databaseError(); | 5765 | Q_EMIT databaseError(); | ||
5423 | 5766 | | |||
5424 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.lastQuery(); | 5767 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.lastQuery(); | ||
5425 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.boundValues(); | 5768 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.boundValues(); | ||
5426 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.lastError(); | 5769 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectTracksFromArtist.lastError(); | ||
5427 | 5770 | | |||
5428 | return allTracks; | 5771 | return allTracks; | ||
5429 | } | 5772 | } | ||
5430 | 5773 | | |||
5431 | while (d->mSelectTracksFromArtist.next()) { | 5774 | while (d->mSelectTracksFromArtist.next()) { | ||
5432 | const auto ¤tRecord = d->mSelectTracksFromArtist.record(); | 5775 | const auto ¤tRecord = d->mSelectTracksFromArtist.record(); | ||
5433 | 5776 | | |||
5434 | allTracks.push_back(buildTrackDataFromDatabaseRecord(currentRecord)); | 5777 | allTracks.push_back(buildTrackDataFromDatabaseRecord(currentRecord)); | ||
5435 | } | 5778 | } | ||
5436 | 5779 | | |||
5437 | d->mSelectTracksFromArtist.finish(); | 5780 | d->mSelectTracksFromArtist.finish(); | ||
5438 | 5781 | | |||
5439 | return allTracks; | 5782 | return allTracks; | ||
5440 | } | 5783 | } | ||
5441 | 5784 | | |||
5442 | QList<qulonglong> DatabaseInterface::internalAlbumIdsFromAuthor(const QString &ArtistName) | 5785 | QList<qulonglong> DatabaseInterface::internalAlbumIdsFromAuthor(const QString &ArtistName) | ||
5443 | { | 5786 | { | ||
5444 | auto allAlbumIds = QList<qulonglong>(); | 5787 | auto allAlbumIds = QList<qulonglong>(); | ||
5445 | 5788 | | |||
5446 | d->mSelectAlbumIdsFromArtist.bindValue(QStringLiteral(":artistName"), ArtistName); | 5789 | d->mSelectAlbumIdsFromArtist.bindValue(QStringLiteral(":artistName"), ArtistName); | ||
5447 | 5790 | | |||
5448 | auto result = d->mSelectAlbumIdsFromArtist.exec(); | 5791 | auto result = execQuery(d->mSelectAlbumIdsFromArtist); | ||
5449 | 5792 | | |||
5450 | if (!result || !d->mSelectAlbumIdsFromArtist.isSelect() || !d->mSelectAlbumIdsFromArtist.isActive()) { | 5793 | if (!result || !d->mSelectAlbumIdsFromArtist.isSelect() || !d->mSelectAlbumIdsFromArtist.isActive()) { | ||
5451 | Q_EMIT databaseError(); | 5794 | Q_EMIT databaseError(); | ||
5452 | 5795 | | |||
5453 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.lastQuery(); | 5796 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.lastQuery(); | ||
5454 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.boundValues(); | 5797 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.boundValues(); | ||
5455 | qDebug() << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.lastError(); | 5798 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::tracksFromAuthor" << d->mSelectAlbumIdsFromArtist.lastError(); | ||
5456 | 5799 | | |||
5457 | return allAlbumIds; | 5800 | return allAlbumIds; | ||
5458 | } | 5801 | } | ||
5459 | 5802 | | |||
5460 | while (d->mSelectAlbumIdsFromArtist.next()) { | 5803 | while (d->mSelectAlbumIdsFromArtist.next()) { | ||
5461 | const auto ¤tRecord = d->mSelectAlbumIdsFromArtist.record(); | 5804 | const auto ¤tRecord = d->mSelectAlbumIdsFromArtist.record(); | ||
5462 | 5805 | | |||
5463 | allAlbumIds.push_back(currentRecord.value(0).toULongLong()); | 5806 | allAlbumIds.push_back(currentRecord.value(0).toULongLong()); | ||
▲ Show 20 Lines • Show All 349 Lines • ▼ Show 20 Line(s) | |||||
5813 | } | 6156 | } | ||
5814 | 6157 | | |||
5815 | bool DatabaseInterface::prepareQuery(QSqlQuery &query, const QString &queryText) const | 6158 | bool DatabaseInterface::prepareQuery(QSqlQuery &query, const QString &queryText) const | ||
5816 | { | 6159 | { | ||
5817 | query.setForwardOnly(true); | 6160 | query.setForwardOnly(true); | ||
5818 | return query.prepare(queryText); | 6161 | return query.prepare(queryText); | ||
5819 | } | 6162 | } | ||
5820 | 6163 | | |||
6164 | bool DatabaseInterface::execQuery(QSqlQuery &query) | ||||
6165 | { | ||||
6166 | #if !defined NDEBUG | ||||
6167 | auto timer = QElapsedTimer{}; | ||||
6168 | timer.start(); | ||||
6169 | #endif | ||||
6170 | | ||||
6171 | auto result = query.exec(); | ||||
6172 | | ||||
6173 | #if !defined NDEBUG | ||||
6174 | if (timer.nsecsElapsed() > 10000000) { | ||||
6175 | qCDebug(orgKdeElisaDatabase) << "[[" << timer.nsecsElapsed() << "]]" << query.lastQuery(); | ||||
6176 | } | ||||
6177 | #endif | ||||
6178 | | ||||
6179 | return result; | ||||
6180 | } | ||||
6181 | | ||||
5821 | void DatabaseInterface::updateAlbumArtist(qulonglong albumId, const QString &title, | 6182 | void DatabaseInterface::updateAlbumArtist(qulonglong albumId, const QString &title, | ||
5822 | const QString &albumPath, | 6183 | const QString &albumPath, | ||
5823 | const QString &artistName) | 6184 | const QString &artistName) | ||
5824 | { | 6185 | { | ||
5825 | d->mUpdateAlbumArtistQuery.bindValue(QStringLiteral(":albumId"), albumId); | 6186 | d->mUpdateAlbumArtistQuery.bindValue(QStringLiteral(":albumId"), albumId); | ||
5826 | insertArtist(artistName); | 6187 | insertArtist(artistName); | ||
5827 | d->mUpdateAlbumArtistQuery.bindValue(QStringLiteral(":artistName"), artistName); | 6188 | d->mUpdateAlbumArtistQuery.bindValue(QStringLiteral(":artistName"), artistName); | ||
5828 | 6189 | | |||
5829 | auto queryResult = d->mUpdateAlbumArtistQuery.exec(); | 6190 | auto queryResult = execQuery(d->mUpdateAlbumArtistQuery); | ||
5830 | 6191 | | |||
5831 | if (!queryResult || !d->mUpdateAlbumArtistQuery.isActive()) { | 6192 | if (!queryResult || !d->mUpdateAlbumArtistQuery.isActive()) { | ||
5832 | Q_EMIT databaseError(); | 6193 | Q_EMIT databaseError(); | ||
5833 | 6194 | | |||
5834 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.lastQuery(); | 6195 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.lastQuery(); | ||
5835 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.boundValues(); | 6196 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.boundValues(); | ||
5836 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.lastError(); | 6197 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistQuery.lastError(); | ||
5837 | 6198 | | |||
5838 | d->mUpdateAlbumArtistQuery.finish(); | 6199 | d->mUpdateAlbumArtistQuery.finish(); | ||
5839 | 6200 | | |||
5840 | return; | 6201 | return; | ||
5841 | } | 6202 | } | ||
5842 | 6203 | | |||
5843 | d->mUpdateAlbumArtistQuery.finish(); | 6204 | d->mUpdateAlbumArtistQuery.finish(); | ||
5844 | 6205 | | |||
5845 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":albumTitle"), title); | 6206 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":albumTitle"), title); | ||
5846 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":albumPath"), albumPath); | 6207 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":albumPath"), albumPath); | ||
5847 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":artistName"), artistName); | 6208 | d->mUpdateAlbumArtistInTracksQuery.bindValue(QStringLiteral(":artistName"), artistName); | ||
5848 | 6209 | | |||
5849 | queryResult = d->mUpdateAlbumArtistInTracksQuery.exec(); | 6210 | queryResult = execQuery(d->mUpdateAlbumArtistInTracksQuery); | ||
5850 | 6211 | | |||
5851 | if (!queryResult || !d->mUpdateAlbumArtistInTracksQuery.isActive()) { | 6212 | if (!queryResult || !d->mUpdateAlbumArtistInTracksQuery.isActive()) { | ||
5852 | Q_EMIT databaseError(); | 6213 | Q_EMIT databaseError(); | ||
5853 | 6214 | | |||
5854 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.lastQuery(); | 6215 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.lastQuery(); | ||
5855 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.boundValues(); | 6216 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.boundValues(); | ||
5856 | qDebug() << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.lastError(); | 6217 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateAlbumArtist" << d->mUpdateAlbumArtistInTracksQuery.lastError(); | ||
5857 | 6218 | | |||
5858 | d->mUpdateAlbumArtistInTracksQuery.finish(); | 6219 | d->mUpdateAlbumArtistInTracksQuery.finish(); | ||
5859 | 6220 | | |||
5860 | return; | 6221 | return; | ||
5861 | } | 6222 | } | ||
5862 | 6223 | | |||
5863 | d->mUpdateAlbumArtistInTracksQuery.finish(); | 6224 | d->mUpdateAlbumArtistInTracksQuery.finish(); | ||
5864 | } | 6225 | } | ||
5865 | 6226 | | |||
5866 | void DatabaseInterface::updateTrackStatistics(const QUrl &fileName, const QDateTime &time) | 6227 | void DatabaseInterface::updateTrackStatistics(const QUrl &fileName, const QDateTime &time) | ||
5867 | { | 6228 | { | ||
5868 | d->mUpdateTrackStatistics.bindValue(QStringLiteral(":fileName"), fileName); | 6229 | d->mUpdateTrackStatistics.bindValue(QStringLiteral(":fileName"), fileName); | ||
5869 | d->mUpdateTrackStatistics.bindValue(QStringLiteral(":playDate"), time.toMSecsSinceEpoch()); | 6230 | d->mUpdateTrackStatistics.bindValue(QStringLiteral(":playDate"), time.toMSecsSinceEpoch()); | ||
5870 | 6231 | | |||
5871 | auto queryResult = d->mUpdateTrackStatistics.exec(); | 6232 | auto queryResult = execQuery(d->mUpdateTrackStatistics); | ||
5872 | 6233 | | |||
5873 | if (!queryResult || !d->mUpdateTrackStatistics.isActive()) { | 6234 | if (!queryResult || !d->mUpdateTrackStatistics.isActive()) { | ||
5874 | Q_EMIT databaseError(); | 6235 | Q_EMIT databaseError(); | ||
5875 | 6236 | | |||
5876 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.lastQuery(); | 6237 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.lastQuery(); | ||
5877 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.boundValues(); | 6238 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.boundValues(); | ||
5878 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.lastError(); | 6239 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackStatistics.lastError(); | ||
5879 | 6240 | | |||
5880 | d->mUpdateTrackStatistics.finish(); | 6241 | d->mUpdateTrackStatistics.finish(); | ||
5881 | 6242 | | |||
5882 | return; | 6243 | return; | ||
5883 | } | 6244 | } | ||
5884 | 6245 | | |||
5885 | d->mUpdateTrackStatistics.finish(); | 6246 | d->mUpdateTrackStatistics.finish(); | ||
5886 | 6247 | | |||
5887 | d->mUpdateTrackFirstPlayStatistics.bindValue(QStringLiteral(":fileName"), fileName); | 6248 | d->mUpdateTrackFirstPlayStatistics.bindValue(QStringLiteral(":fileName"), fileName); | ||
5888 | d->mUpdateTrackFirstPlayStatistics.bindValue(QStringLiteral(":playDate"), time.toMSecsSinceEpoch()); | 6249 | d->mUpdateTrackFirstPlayStatistics.bindValue(QStringLiteral(":playDate"), time.toMSecsSinceEpoch()); | ||
5889 | 6250 | | |||
5890 | queryResult = d->mUpdateTrackFirstPlayStatistics.exec(); | 6251 | queryResult = execQuery(d->mUpdateTrackFirstPlayStatistics); | ||
5891 | 6252 | | |||
5892 | if (!queryResult || !d->mUpdateTrackFirstPlayStatistics.isActive()) { | 6253 | if (!queryResult || !d->mUpdateTrackFirstPlayStatistics.isActive()) { | ||
5893 | Q_EMIT databaseError(); | 6254 | Q_EMIT databaseError(); | ||
5894 | 6255 | | |||
5895 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.lastQuery(); | 6256 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.lastQuery(); | ||
5896 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.boundValues(); | 6257 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.boundValues(); | ||
5897 | qDebug() << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.lastError(); | 6258 | qCDebug(orgKdeElisaDatabase) << "DatabaseInterface::updateTrackStatistics" << d->mUpdateTrackFirstPlayStatistics.lastError(); | ||
5898 | 6259 | | |||
5899 | d->mUpdateTrackFirstPlayStatistics.finish(); | 6260 | d->mUpdateTrackFirstPlayStatistics.finish(); | ||
5900 | 6261 | | |||
5901 | return; | 6262 | return; | ||
5902 | } | 6263 | } | ||
5903 | 6264 | | |||
5904 | d->mUpdateTrackFirstPlayStatistics.finish(); | 6265 | d->mUpdateTrackFirstPlayStatistics.finish(); | ||
5905 | } | 6266 | } | ||
5906 | 6267 | | |||
5907 | 6268 | | |||
5908 | #include "moc_databaseinterface.cpp" | 6269 | #include "moc_databaseinterface.cpp" |