Sayonara Player
Loading...
Searching...
No Matches
Albums.h
1/* DatabaseAlbums.h */
2
3/* Copyright (C) 2011-2024 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 "Database/Utils.h"
25#include "Utils/typedefs.h"
26
27namespace Library
28{
29 class Filter;
30}
31
32class Album;
33class AlbumList;
34class QSqlQuery;
35
36namespace DB
37{
38 class Module;
39 class Albums
40 {
41 public:
42 Albums();
43 virtual ~Albums();
44
45 virtual void initViews();
46
47 virtual bool dbFetchAlbums(QSqlQuery& q, AlbumList& result) const;
48
49 virtual bool getAlbumByID(AlbumId id, Album& album) const;
50 virtual bool getAlbumByID(AlbumId id, Album& album, bool alsoEmpty) const;
51
52 virtual bool getAllAlbums(AlbumList& result, bool alsoEmpty) const;
53 virtual bool
54 getAllAlbumsByArtist(const IdList& artists, AlbumList& result, const ::Library::Filter& filter) const;
55
56 virtual bool getAllAlbumsBySearchString(const ::Library::Filter& filter, AlbumList& result) const;
57
58 virtual AlbumId updateAlbumRating(AlbumId id, Rating rating);
59 virtual void deleteOrphanedAlbums();
60
61 protected:
62 // too dangerous to call it directly because multiple insertions
63 // may occur
64 virtual AlbumId insertAlbumIntoDatabase(const QString& album);
65 virtual AlbumId insertAlbumIntoDatabase(const Album& album);
66 virtual void deleteAllAlbums();
67
68 [[nodiscard]] virtual ArtistIdInfo artistIdInfo() const = 0;
69 [[nodiscard]] virtual QString trackView() const = 0;
70 [[nodiscard]] virtual QString trackSearchView() const = 0;
71 [[nodiscard]] virtual LibraryId libraryId() const = 0;
72
73 [[nodiscard]] virtual Module* module() = 0;
74 [[nodiscard]] virtual const Module* module() const = 0;
75
76 virtual void updateAlbumCissearch();
77
78 private:
79 [[nodiscard]] virtual QString fetchQueryAlbums(bool alsoEmpty) const;
80 };
81}
82
83#endif // DATABASEALBUMS_H
Definition Album.h:91
Definition Album.h:37
Definition Module.h:32
Definition Filter.h:34
Definition Utils.h:48