X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fdbstorage.h;h=60b63ee8b4b0af41767b78bf128e0992b5a84622;hb=1f0bd142f458b971974efdc05928151f63c0ef6d;hp=7b771b0f9b685435d96af530c65a7116beee4008;hpb=c92d96e01d110d72cee8e8d307667507bf5d6fff;p=someplayer diff --git a/src/dbstorage.h b/src/dbstorage.h index 7b771b0..60b63ee 100644 --- a/src/dbstorage.h +++ b/src/dbstorage.h @@ -1,3 +1,22 @@ +/* + * SomePlayer - An alternate music player for Maemo 5 + * Copyright (C) 2010 Nikolay (somebody) Tischenko + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + #ifndef DB_STORAGE #define DB_STORAGE @@ -23,8 +42,9 @@ namespace SomePlayer { public: DbStorage(QString path); ~DbStorage(); + QList getDirectories(); QList getArtists(); - QList getAlbumsForArtist(QString artist); + QMap getAlbumsForArtist(QString artist); QList getTracksForAlbum(QString album, QString artist); // hm... Playlist getFavorites(); @@ -32,38 +52,74 @@ namespace SomePlayer { Playlist getNeverPlayed(); Playlist getRecentlyAdded(); + QList searchTracks(QString pattern); + + int getArtistsCount(); + int getAlbumsCount(); + int getTracksCount(); + void removeTrack(Track track); void addToFavorites(Track track); + void removeFromFavorites(Track track); - void updateTrack(Track track); + void updateTrackCount(Track track); + Track updateTrack(Track); void addTrack(Track track); + void deleteTracksFrom(QString path); + void checkTracksFrom(QString path); + + bool isFavorite(Track); + private: QSqlDatabase db; void _create_database_structure(); void _prepare_queries(); int _check_add_artist(QString artist); - int _check_add_album(QString album, int artist_id); + int _check_add_album(QString album, int artist_id, int year); + int _check_add_directory(QString path); + + void _cleanup(); // queries QSqlQuery *_get_artists_query; - QSqlQuery *_get_albums_for_artist_query; + QSqlQuery *_get_albums_for_artist_sort_name_query; + QSqlQuery *_get_albums_for_artist_sort_year_query; QSqlQuery *_get_tracks_for_album_query; QSqlQuery *_get_favorites_query; QSqlQuery *_get_most_played_query; QSqlQuery *_get_never_played_query; QSqlQuery *_get_recently_added_query; + QSqlQuery *_get_track_count_query; + QSqlQuery *_get_tracks_by_pattern_query; + QSqlQuery *_get_track_id_by_source_query; + QSqlQuery *_get_directories_query; + QSqlQuery *_get_artists_count_query; + QSqlQuery *_get_albums_count_query; + QSqlQuery *_get_tracks_count_query; + QSqlQuery *_get_tracks_source_from_query; QSqlQuery *_check_artist_query; QSqlQuery *_check_album_query; - QSqlQuery *_check_track_query; + QSqlQuery *_check_directory_query; + QSqlQuery *_check_favorite_query; QSqlQuery *_insert_artist_query; QSqlQuery *_insert_album_query; - QSqlQuery *_insert_track_query; QSqlQuery *_insert_date_query; + QSqlQuery *_insert_favorites_query; + QSqlQuery *_insert_directory_query; + + QSqlQuery *_update_track_count_query; + + QSqlQuery *_remove_track_query; + QSqlQuery *_remove_empty_artists_query; + QSqlQuery *_remove_empty_albums_query; + QSqlQuery *_remove_tracks_from_query; + QSqlQuery *_remove_directory_query; + QSqlQuery *_remove_track_from_favorites_query; }; }; };