1 #pragma once
2 
3 #include <QSqlDatabase>
4 #include <QUrl>
5 
6 class BansheeDbConnection
7 {
8 public:
9 
10     struct Playlist {
11         QString playlistId;
12         QString name;
13     };
14 
15     struct Track {
16         QString title;
17         QUrl uri;
18         int duration;
19         int year;
20         int rating;
21         QString genre;
22         QString grouping;
23         int tracknumber;
24         int dateadded;
25         int bpm;
26         int bitrate;
27         QString comment;
28         int playcount;
29         QString composer;
30     };
31 
32     struct Artist {
33         QString name;
34     };
35 
36     struct Album {
37         QString title;
38     };
39 
40     struct PlaylistEntry {
41         int trackId;
42         int viewOrder;
43         struct Track* pTrack;
44         struct Artist* pArtist;
45         struct Album* pAlbum;
46         struct Artist* pAlbumArtist;
47     };
48 
49     BansheeDbConnection();
50     virtual ~BansheeDbConnection();
51 
52     static QString getDatabaseFile();
53 
54     bool open(const QString& databaseFile);
55     int getSchemaVersion();
56     QList<Playlist> getPlaylists();
57     QList<PlaylistEntry> getPlaylistEntries(int playlistId);
58 
59 private:
60     QSqlDatabase m_database;
61     QMap<int, Track> m_trackMap;
62     QMap<int, Artist> m_artistMap;
63     QMap<int, Album> m_albumMap;
64 
65 };
66