public:
DbStorage(QString path);
~DbStorage();
+ QList<QString> getDirectories();
QList<QString> getArtists();
- QList<QString> getAlbumsForArtist(QString artist);
+ QMap<QString, int> getAlbumsForArtist(QString artist);
QList<Track> getTracksForAlbum(QString album, QString artist); // hm...
Playlist getFavorites();
Playlist getNeverPlayed();
Playlist getRecentlyAdded();
+ QList<Track> searchTracks(QString pattern);
+
+ int getArtistsCount();
+ int getAlbumsCount();
+ int getTracksCount();
+
void removeTrack(Track track);
void addToFavorites(Track track);
void updateTrackCount(Track track);
+ Track updateTrack(Track);
void addTrack(Track track);
+ void deleteTracksFrom(QString path);
+ void checkTracksFrom(QString path);
+
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;
+ 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 *_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;
};
};
};