Miam-Player  0.8.0
A nice music player
sqldatabase.h
Go to the documentation of this file.
1 #ifndef SQLDATABASE_H
2 #define SQLDATABASE_H
3 
4 #include "../miamcore_global.h"
5 #include "settings.h"
6 #include "trackdao.h"
7 #include "playlistdao.h"
8 
9 #include <QFileInfo>
10 #include <QSqlDatabase>
11 #include <QSqlTableModel>
12 #include <QThread>
13 #include <QUrl>
14 
16 class Cover;
17 class FileHelper;
18 
24 class MIAMCORE_LIBRARY SqlDatabase : public QObject, public QSqlDatabase
25 {
26  Q_OBJECT
27 private:
28  QHash<uint, GenericDAO*> _cache;
29 
30 public:
31  explicit SqlDatabase(QObject *parent = nullptr);
32 
33  ~SqlDatabase();
34 
35  void reset();
36 
37  uint insertIntoTablePlaylists(const PlaylistDAO &playlist, const std::list<TrackDAO> &tracks, bool isOverwriting);
38  bool insertIntoTablePlaylistTracks(uint playlistId, const std::list<TrackDAO> &tracks, bool isOverwriting = false);
39  bool insertIntoTableTracks(const TrackDAO &track);
40  bool insertIntoTableTracks(const std::list<TrackDAO> &tracks);
41 
42  bool removePlaylist(uint playlistId);
43  void removePlaylistsFromHost(const QString &host);
44  void removeRecordsFromHost(const QString &host);
45 
46  Cover *selectCoverFromURI(const QString &uri);
47  QList<TrackDAO> selectPlaylistTracks(uint playlistID);
48  PlaylistDAO selectPlaylist(uint playlistId);
49  QList<PlaylistDAO> selectPlaylists();
50 
51  TrackDAO selectTrackByURI(const QString &uri);
52 
53  bool playlistHasBackgroundImage(uint playlistID);
54  bool updateTablePlaylist(const PlaylistDAO &playlist);
55  void updateTablePlaylistWithBackgroundImage(uint playlistID, const QString &backgroundImagePath);
56  void updateTableAlbumWithCoverImage(const QString &coverPath, const QString &album, const QString &artist);
57 
59  void updateTracks(const QStringList &oldPaths, const QStringList &newPaths);
60 
61  QString normalizeField(const QString &s) const;
62 
63 private:
64  void init();
65 
66  void setPragmas();
67 
68  void updateTrack(const QString &absFilePath);
69 
70 public slots:
72  void saveCoverRef(const QString &coverPath, const QString &track);
73 
75  void saveFileRef(const QString &absFilePath);
76 
77 signals:
78  void aboutToUpdateView();
79 };
80 
81 #endif // SQLDATABASE_H
The SqlDatabase class uses SQLite to store few but useful tables for tracks, playlists, etc.
Definition: sqldatabase.h:24
The Cover class.
Definition: cover.h:14
The PlaylistDAO class is a simple wrapper which contains basic informations about a playlist...
Definition: playlistdao.h:12
The TrackDAO class is a simple wrapper which contains basic informations about a file.
Definition: trackdao.h:12
The FileHelper class is used to extract various but relevant fields in all types of tags (MP3...
Definition: filehelper.h:32
#define MIAMCORE_LIBRARY
Definition: miamcore_global.h:10