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 QStringList &tracks, bool isOverwriting);
38  bool insertIntoTablePlaylistTracks(uint playlistId, const QStringList &tracks, bool isOverwriting = false);
39  bool insertIntoTableTracks(const TrackDAO &track);
40  bool insertIntoTableTracks(const std::list<TrackDAO> &tracks);
41 
42  void removeCoverForAlbum(bool internalCover, const QString &artistNorm, const QString &albumNorm);
43  bool removePlaylist(uint playlistId);
44  void removePlaylistsFromHost(const QString &host);
45  void removeRecordsFromHost(const QString &host);
46 
47  Cover *selectCoverFromURI(const QString &uri);
48  QStringList selectPlaylistTracks(uint playlistID, bool withPrefix = true);
49  PlaylistDAO selectPlaylist(uint playlistId);
50  QList<PlaylistDAO> selectPlaylists();
51 
52  TrackDAO selectTrackByURI(const QString &uri);
53 
54  bool playlistHasBackgroundImage(uint playlistID);
55  bool updateTablePlaylist(const PlaylistDAO &playlist);
56  void updateTablePlaylistWithBackgroundImage(uint playlistID, const QString &backgroundImagePath);
57  void updateTableAlbumWithCoverImage(const QString &coverPath, const QString &album, const QString &artist);
58 
60  void updateTracks(const QStringList &oldPaths, const QStringList &newPaths);
61 
62  QString normalizeField(const QString &s) const;
63 
64 private:
65  void init();
66 
67  void setPragmas();
68 
69  void updateTrack(const QString &absFilePath);
70 
71 public slots:
73  void saveCoverRef(const QString &coverPath, const QString &track);
74 
76  void saveFileRef(const QString &absFilePath);
77 
78 signals:
79  void aboutToUpdateView();
80 };
81 
82 #endif // SQLDATABASE_H
unsigned int uint
Definition: taglib.h:68
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:11