Sayonara Player
DatabaseTracks.h
1 /* DatabaseTracks.h */
2 
3 /* Copyright (C) 2011-2017 Lucio Carreras
4  *
5  * This file is part of sayonara player
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11 
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16 
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20 
21 #ifndef DATABASETRACKS_H
22 #define DATABASETRACKS_H
23 
24 #include "Database/DatabaseSearchMode.h"
25 #include "Database/DatabaseModule.h"
26 #include "Helper/typedefs.h"
27 #include "Helper/Library/Sortorder.h"
28 
29 #include <QString>
30 
31 namespace Library {class Filter;}
32 
33 class MetaData;
34 class MetaDataList;
35 
37  private DatabaseModule,
38  private DatabaseSearchMode
39 
40 {
41 private:
42  QString _artistid_field;
43 
44  virtual QString fetch_query_tracks() const;
45 
46 protected:
47  void change_artistid_field(const QString& field);
48 
49 protected:
50  QString append_track_sort_string(QString querytext, Library::SortOrder sort);
51 
52 public:
53 
54  DatabaseTracks(const QSqlDatabase& db, quint8 db_id);
55 
56  virtual bool db_fetch_tracks(SayonaraQuery& q, MetaDataList& result);
57 
58  virtual bool getAllTracksByAlbum(int album, MetaDataList& result);
59  virtual bool getAllTracksByAlbum(int album, MetaDataList& result, const Library::Filter& filter, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc, int discnumber=-1);
60  virtual bool getAllTracksByAlbum(IDList albums, MetaDataList& result);
61  virtual bool getAllTracksByAlbum(IDList albums, MetaDataList& result, const Library::Filter& filter, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc);
62 
63  virtual bool getAllTracksByArtist(int artist, MetaDataList& result);
64  virtual bool getAllTracksByArtist(int artist, MetaDataList& result, const Library::Filter& filter, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc);
65  virtual bool getAllTracksByArtist(IDList artists, MetaDataList& result);
66  virtual bool getAllTracksByArtist(IDList artists, MetaDataList& result, const Library::Filter& filter, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc);
67 
68  virtual bool getAllTracksBySearchString(const Library::Filter& filter, MetaDataList& result, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc);
69 
70  virtual bool insertTrackIntoDatabase (const MetaData& data,int artist_id, int album_id);
71  virtual bool insertTrackIntoDatabase (const MetaData& data,int artist_id, int album_id, int album_artist_id);
72  virtual bool updateTrack(const MetaData& data);
73  virtual bool updateTracks(const MetaDataList& lst);
74 
75  virtual bool getAllTracks(MetaDataList& returndata, Library::SortOrder sortorder = Library::SortOrder::TrackArtistAsc);
76  virtual MetaData getTrackById(int id);
77  virtual MetaData getTrackByPath(const QString& path);
78  virtual bool getMultipleTracksByPath(const QStringList& paths, MetaDataList& v_md);
79 
80  virtual bool deleteTrack(int id);
81  virtual bool deleteTracks(const MetaDataList&);
82  virtual bool deleteTracks(const IDList& ids);
83  virtual bool deleteInvalidTracks();
84 
85  virtual QStringList getAllGenres();
86  virtual void updateTrackCissearch();
87 
88  bool updateTrackDates();
89 };
90 
91 #endif // DATABASETRACKS_H
The MetaData class MetaDataHelper.
Definition: MetaData.h:55
Definition: DatabaseSearchMode.h:28
The Filter class.
Definition: Filter.h:43
Definition: MetaDataList.h:39
Definition: SayonaraQuery.h:30
Definition: DatabaseModule.h:47
Definition: DatabaseTracks.h:36
Definition: DatabaseAlbums.h:29