_remove_track_query = new QSqlQuery(db);
_remove_track_query->prepare("DELETE FROM tracks WHERE id = :id");
+
+ _remove_empty_albums_query = new QSqlQuery(db);
+ _remove_empty_albums_query->prepare("DELETE FROM album WHERE album.id IN "
+ "(SELECT id FROM "
+ "(SELECT COUNT(tracks.id) AS cnt, album.id FROM "
+ "album LEFT OUTER JOIN tracks ON album.id = tracks.album_id "
+ "GROUP BY album.id) WHERE cnt = 0)");
+
+ _remove_empty_artists_query = new QSqlQuery(db);
+ _remove_empty_artists_query->prepare("DELETE FROM artist WHERE artist.id IN "
+ "(SELECT id FROM "
+ "(SELECT COUNT(tracks.id) AS cnt, artist.id FROM "
+ "artist LEFT OUTER JOIN tracks ON artist.id = tracks.artist_id "
+ "GROUP BY artist.id) WHERE cnt = 0)");
}
void DbStorage::_create_database_structure() {
query->exec();
if (query->next()) { // found track in library
int id = query->value(0).toInt();
- qWarning() << "found " << id;
query = _remove_track_query;
query->bindValue(":id", id);
query->exec();
addTrack(track);
+ _cleanup();
}
return track;
}
}
return found;
}
+
+void DbStorage::_cleanup() {
+ _remove_empty_albums_query->exec();
+ _remove_empty_artists_query->exec();
+}
int _check_add_artist(QString artist);
int _check_add_album(QString album, int artist_id, int year);
+ void _cleanup();
+
// queries
QSqlQuery *_get_artists_query;
QSqlQuery *_get_albums_for_artist_sort_name_query;
QSqlQuery *_update_track_count_query;
QSqlQuery *_remove_track_query;
+ QSqlQuery *_remove_empty_artists_query;
+ QSqlQuery *_remove_empty_albums_query;
};
};
};
void MainWindow::library() {
ui->menuBar->setEnabled(true);
+ _library_form->refresh();
ui->stackedWidget->setCurrentIndex(1);
setWindowTitle("SomePlayer Library");
_orientation_changed(); // workaround