Refactoring

This commit is contained in:
Jonas Kvinge
2024-10-22 18:12:33 +02:00
parent dfcf715291
commit 8da2b9cd94
623 changed files with 9071 additions and 5126 deletions

View File

@@ -38,8 +38,7 @@
#include <QUrl>
#include <QSqlDatabase>
#include "core/shared_ptr.h"
#include "core/application.h"
#include "includes/shared_ptr.h"
#include "core/database.h"
#include "core/logging.h"
#include "core/scopedtransaction.h"
@@ -60,10 +59,14 @@ namespace {
constexpr int kSongTableJoins = 2;
}
PlaylistBackend::PlaylistBackend(Application *app, QObject *parent)
PlaylistBackend::PlaylistBackend(const SharedPtr<Database> database,
const SharedPtr<TagReaderClient> tagreader_client,
const SharedPtr<CollectionBackend> collection_backend,
QObject *parent)
: QObject(parent),
app_(app),
db_(app_->database()),
database_(database),
tagreader_client_(tagreader_client),
collection_backend_(collection_backend),
original_thread_(nullptr) {
setObjectName(QLatin1String(metaObject()->className()));
@@ -74,9 +77,9 @@ PlaylistBackend::PlaylistBackend(Application *app, QObject *parent)
void PlaylistBackend::Close() {
if (db_) {
QMutexLocker l(db_->Mutex());
db_->Close();
if (database_) {
QMutexLocker l(database_->Mutex());
database_->Close();
}
}
@@ -108,8 +111,8 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetAllFavoritePlaylists() {
PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(const GetPlaylistsFlags flags) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
PlaylistList ret;
@@ -128,7 +131,7 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(const GetPlaylistsFl
SqlQuery q(db);
q.prepare(u"SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists "_s + condition + u" ORDER BY ui_order"_s);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return ret;
}
@@ -152,15 +155,15 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(const GetPlaylistsFl
PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(const int id) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
SqlQuery q(db);
q.prepare(u"SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists WHERE ROWID=:id"_s);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return Playlist();
}
@@ -187,8 +190,8 @@ PlaylistItemPtrList PlaylistBackend::GetPlaylistItems(const int playlist) {
{
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
QString query = QStringLiteral("SELECT %1, %2, p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist").arg(Song::JoinSpec(QStringLiteral("songs")), Song::JoinSpec(QStringLiteral("p")));
@@ -198,7 +201,7 @@ PlaylistItemPtrList PlaylistBackend::GetPlaylistItems(const int playlist) {
q.prepare(query);
q.BindValue(u":playlist"_s, playlist);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return PlaylistItemPtrList();
}
@@ -223,8 +226,8 @@ SongList PlaylistBackend::GetPlaylistSongs(const int playlist) {
SongList songs;
{
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
QString query = QStringLiteral("SELECT %1, %2, p.type FROM playlist_items AS p LEFT JOIN songs ON p.collection_id = songs.ROWID WHERE p.playlist = :playlist").arg(Song::JoinSpec(u"songs"_s), Song::JoinSpec(u"p"_s));
@@ -234,7 +237,7 @@ SongList PlaylistBackend::GetPlaylistSongs(const int playlist) {
q.prepare(query);
q.BindValue(u":playlist"_s, playlist);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return SongList();
}
@@ -282,7 +285,7 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, SharedPtr<
// We need collection to run a CueParser; also, this method applies only to file-type PlaylistItems
if (item->source() != Song::Source::LocalFile) return item;
CueParser cue_parser(app_->collection_backend());
CueParser cue_parser(tagreader_client_, collection_backend_);
Song song = item->Metadata();
// We're only interested in .cue songs here
@@ -334,8 +337,8 @@ void PlaylistBackend::SavePlaylistAsync(int playlist, const PlaylistItemPtrList
void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &items, int last_played, PlaylistGeneratorPtr dynamic) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
qLog(Debug) << "Saving playlist" << playlist;
@@ -347,7 +350,7 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item
q.prepare(u"DELETE FROM playlist_items WHERE playlist = :playlist"_s);
q.BindValue(u":playlist"_s, playlist);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -360,7 +363,7 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item
item->BindToQuery(&q);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -382,7 +385,7 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item
}
q.BindValue(u":playlist"_s, playlist);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -393,15 +396,15 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemPtrList &item
int PlaylistBackend::CreatePlaylist(const QString &name, const QString &special_type) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
SqlQuery q(db);
q.prepare(u"INSERT INTO playlists (name, special_type) VALUES (:name, :special_type)"_s);
q.BindValue(u":name"_s, name);
q.BindValue(u":special_type"_s, special_type);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return -1;
}
@@ -411,8 +414,8 @@ int PlaylistBackend::CreatePlaylist(const QString &name, const QString &special_
void PlaylistBackend::RemovePlaylist(int id) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
ScopedTransaction transaction(&db);
@@ -421,7 +424,7 @@ void PlaylistBackend::RemovePlaylist(int id) {
q.prepare(u"DELETE FROM playlists WHERE ROWID=:id"_s);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -431,7 +434,7 @@ void PlaylistBackend::RemovePlaylist(int id) {
q.prepare(u"DELETE FROM playlist_items WHERE playlist=:id"_s);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -442,44 +445,44 @@ void PlaylistBackend::RemovePlaylist(int id) {
void PlaylistBackend::RenamePlaylist(const int id, const QString &new_name) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
SqlQuery q(db);
q.prepare(u"UPDATE playlists SET name=:name WHERE ROWID=:id"_s);
q.BindValue(u":name"_s, new_name);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
}
}
void PlaylistBackend::FavoritePlaylist(const int id, const bool is_favorite) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
SqlQuery q(db);
q.prepare(u"UPDATE playlists SET is_favorite=:is_favorite WHERE ROWID=:id"_s);
q.BindValue(u":is_favorite"_s, is_favorite ? 1 : 0);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
}
}
void PlaylistBackend::SetPlaylistOrder(const QList<int> &ids) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
ScopedTransaction transaction(&db);
SqlQuery q(db);
q.prepare(u"UPDATE playlists SET ui_order=-1"_s);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
@@ -488,7 +491,7 @@ void PlaylistBackend::SetPlaylistOrder(const QList<int> &ids) {
q.BindValue(u":index"_s, i);
q.BindValue(u":id"_s, ids[i]);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}
}
@@ -499,8 +502,8 @@ void PlaylistBackend::SetPlaylistOrder(const QList<int> &ids) {
void PlaylistBackend::SetPlaylistUiPath(const int id, const QString &path) {
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
QMutexLocker l(database_->Mutex());
QSqlDatabase db(database_->Connect());
SqlQuery q(db);
q.prepare(u"UPDATE playlists SET ui_path=:path WHERE ROWID=:id"_s);
@@ -509,7 +512,7 @@ void PlaylistBackend::SetPlaylistUiPath(const int id, const QString &path) {
q.BindValue(u":path"_s, path);
q.BindValue(u":id"_s, id);
if (!q.Exec()) {
db_->ReportErrors(q);
database_->ReportErrors(q);
return;
}