Sayonara Player
Albums.h
1/* DatabaseAlbums.h */
2
3/* Copyright (C) 2011-2020 Michael Lugmair (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 DATABASEALBUMS_H
22#define DATABASEALBUMS_H
23
24#include "Query.h"
25
26namespace Library {class Filter;}
27class Album;
28class AlbumList;
29
30namespace DB
31{
32 class Albums
33 {
34 public:
35 Albums();
36 virtual ~Albums();
37
38 virtual void initViews();
39
40 virtual bool dbFetchAlbums(Query& q, AlbumList& result) const;
41
42 virtual AlbumId getAlbumID (const QString& album) const;
43
44 virtual bool getAlbumByID(AlbumId id, Album& album) const;
45 virtual bool getAlbumByID(AlbumId id, Album& album, bool alsoEmpty) const;
46
47 virtual bool getAllAlbums(AlbumList& result, bool alsoEmpty) const;
48 virtual bool getAllAlbumsByArtist(const IdList& artists, AlbumList& result, const ::Library::Filter& filter) const;
49
50 virtual bool getAllAlbumsBySearchString(const ::Library::Filter& filter, AlbumList& result) const;
51
52 virtual AlbumId updateAlbumRating(AlbumId id, Rating rating);
53
54 protected:
55 // too dangerous to call it directly because multiple insertions
56 // may occur
57 virtual AlbumId insertAlbumIntoDatabase (const QString& album);
58 virtual AlbumId insertAlbumIntoDatabase (const Album& album);
59 virtual void deleteAllAlbums();
60
61 virtual QString artistIdField() const=0;
62 virtual QString trackView() const=0;
63 virtual QString trackSearchView() const=0;
64 virtual LibraryId libraryId() const=0;
65
66 virtual Module* module()=0;
67 virtual const Module* module() const=0;
68
69 virtual void updateAlbumCissearch();
70
71 private:
72 virtual QString fetchQueryAlbums(bool alsoEmpty) const;
73 };
74}
75
76#endif // DATABASEALBUMS_H
Definition: Album.h:88
Definition: Album.h:37
Definition: Albums.h:33
Definition: Module.h:33
Definition: Query.h:37
Definition: EngineUtils.h:33
An interface class needed when implementing a library plugin.
Definition: LocalLibraryWatcher.h:31