2 * SomePlayer - An alternate music player for Maemo 5
3 * Copyright (C) 2010 Nikolay (somebody) Tischenko <niktischenko@gmail.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 #include "someplayer.h"
25 #include <QSqlDatabase>
30 #define _DATABASE_NAME_ "/library.sqlite3"
32 // represents database storage
33 // it store date into some database (e.g. tracks)
35 using SomePlayer::DataObjects::Playlist;
36 using SomePlayer::DataObjects::Track;
38 namespace SomePlayer {
43 DbStorage(QString path);
45 QList<QString> getDirectories();
46 QList<QString> getArtists();
47 QMap<QString, int> getAlbumsForArtist(QString artist);
48 QList<Track> getTracksForAlbum(QString album, QString artist); // hm...
50 Playlist getFavorites();
51 Playlist getMostPlayed();
52 Playlist getNeverPlayed();
53 Playlist getRecentlyAdded();
55 QList<Track> searchTracks(QString pattern);
57 int getArtistsCount();
61 void removeTrack(Track track);
62 void addToFavorites(Track track);
63 void removeFromFavorites(Track track);
65 void updateTrackCount(Track track);
66 Track updateTrack(Track);
67 void addTrack(Track track);
69 void deleteTracksFrom(QString path);
70 void checkTracksFrom(QString path);
72 bool isFavorite(Track);
76 void _create_database_structure();
77 void _prepare_queries();
79 int _check_add_artist(QString artist);
80 int _check_add_album(QString album, int artist_id, int year);
81 int _check_add_directory(QString path);
86 QSqlQuery *_get_artists_query;
87 QSqlQuery *_get_albums_for_artist_sort_name_query;
88 QSqlQuery *_get_albums_for_artist_sort_year_query;
89 QSqlQuery *_get_tracks_for_album_query;
90 QSqlQuery *_get_favorites_query;
91 QSqlQuery *_get_most_played_query;
92 QSqlQuery *_get_never_played_query;
93 QSqlQuery *_get_recently_added_query;
94 QSqlQuery *_get_track_count_query;
95 QSqlQuery *_get_tracks_by_pattern_query;
96 QSqlQuery *_get_track_id_by_source_query;
97 QSqlQuery *_get_directories_query;
98 QSqlQuery *_get_artists_count_query;
99 QSqlQuery *_get_albums_count_query;
100 QSqlQuery *_get_tracks_count_query;
101 QSqlQuery *_get_tracks_source_from_query;
103 QSqlQuery *_check_artist_query;
104 QSqlQuery *_check_album_query;
105 QSqlQuery *_check_directory_query;
106 QSqlQuery *_check_favorite_query;
108 QSqlQuery *_insert_artist_query;
109 QSqlQuery *_insert_album_query;
110 QSqlQuery *_insert_track_query;
111 QSqlQuery *_insert_date_query;
112 QSqlQuery *_insert_favorites_query;
113 QSqlQuery *_insert_directory_query;
115 QSqlQuery *_update_track_count_query;
117 QSqlQuery *_remove_track_query;
118 QSqlQuery *_remove_empty_artists_query;
119 QSqlQuery *_remove_empty_albums_query;
120 QSqlQuery *_remove_tracks_from_query;
121 QSqlQuery *_remove_directory_query;
122 QSqlQuery *_remove_track_from_favorites_query;