Big commit:
[someplayer] / src / dbstorage.h
1 #ifndef DB_STORAGE
2 #define DB_STORAGE
3
4 #include "someplayer.h"
5 #include "storage.h"
6 #include <QSqlDatabase>
7 #include <QSqlQuery>
8 #include "track.h"
9 #include "playlist.h"
10
11 #define _DATABASE_NAME_ "/library.sqlite3"
12
13 // represents database storage
14 // it store date into some database (e.g. tracks)
15
16 using SomePlayer::DataObjects::Playlist;
17 using SomePlayer::DataObjects::Track;
18
19 namespace SomePlayer {
20         namespace Storage {
21
22                 class DbStorage {
23                 public:
24                         DbStorage(QString path);
25                         ~DbStorage();
26                         QList<QString> getArtists();
27                         QList<QString> getAlbumsForArtist(QString artist);
28                         QList<Track> getTracksForAlbum(QString album, QString artist); // hm...
29
30                         Playlist getFavorites();
31                         Playlist getMostPlayed();
32                         Playlist getNeverPlayed();
33                         Playlist getRecentlyAdded();
34
35                         void removeTrack(Track track);
36                         void addToFavorites(Track track);
37
38                         void updateTrackCount(Track track);
39                         void addTrack(Track track);
40
41                 private:
42                         QSqlDatabase db;
43                         void _create_database_structure();
44                         void _prepare_queries();
45
46                         int _check_add_artist(QString artist);
47                         int _check_add_album(QString album, int artist_id);
48
49                         // queries
50                         QSqlQuery *_get_artists_query;
51                         QSqlQuery *_get_albums_for_artist_query;
52                         QSqlQuery *_get_tracks_for_album_query;
53                         QSqlQuery *_get_favorites_query;
54                         QSqlQuery *_get_most_played_query;
55                         QSqlQuery *_get_never_played_query;
56                         QSqlQuery *_get_recently_added_query;
57                         QSqlQuery *_get_track_count;
58
59                         QSqlQuery *_check_artist_query;
60                         QSqlQuery *_check_album_query;
61                         QSqlQuery *_check_track_query;
62
63                         QSqlQuery *_insert_artist_query;
64                         QSqlQuery *_insert_album_query;
65                         QSqlQuery *_insert_track_query;
66                         QSqlQuery *_insert_date_query;
67                         QSqlQuery *_insert_favorites_query;
68
69                         QSqlQuery *_update_track_count_query;
70                 };
71         };
72 };
73
74 #endif