/ desktop / datalake / cartographer.cpp
cartographer.cpp
 1  #include "cartographer.hpp"
 2  
 3  Cartographer::Cartographer()
 4      : i_albums(QHash<QUuid, KotoAlbum*>()),
 5        i_artists(QHash<QUuid, KotoArtist*>()),
 6        i_artists_by_name(QHash<QString, KotoArtist*>()),
 7        i_tracks(QHash<QUuid, KotoTrack*>()) {}
 8  
 9  Cartographer& Cartographer::instance() {
10    static Cartographer _instance;
11    return _instance;
12  }
13  
14  void Cartographer::addAlbum(KotoAlbum* album) {
15    this->i_albums.insert(album->uuid, album);
16  }
17  
18  void Cartographer::addArtist(KotoArtist* artist) {
19    this->i_artists.insert(artist->uuid, artist);
20    this->i_artists_by_name.insert(artist->getName(), artist);
21  }
22  
23  void Cartographer::addTrack(KotoTrack* track) {
24    this->i_tracks.insert(track->uuid, track);
25  }
26  
27  std::optional<KotoAlbum*> Cartographer::getAlbum(QUuid uuid) {
28    auto album = this->i_albums.value(uuid, nullptr);
29    return album ? std::optional {album} : std::nullopt;
30  }
31  
32  QList<KotoAlbum*> Cartographer::getAlbums() {
33    return this->i_albums.values();
34  }
35  
36  std::optional<KotoArtist*> Cartographer::getArtist(QUuid uuid) {
37    auto artist = this->i_artists.value(uuid, nullptr);
38    return artist ? std::optional {artist} : std::nullopt;
39  }
40  
41  QList<KotoArtist*> Cartographer::getArtists() {
42    return this->i_artists.values();
43  }
44  
45  std::optional<KotoArtist*> Cartographer::getArtist(QString name) {
46    auto artist = this->i_artists_by_name.value(name, nullptr);
47    return artist ? std::optional {artist} : std::nullopt;
48  }
49  
50  std::optional<KotoTrack*> Cartographer::getTrack(QUuid uuid) {
51    auto track = this->i_tracks.value(uuid, nullptr);
52    return track ? std::optional {track} : std::nullopt;
53  }
54  
55  QList<KotoTrack*> Cartographer::getTracks() {
56    return this->i_tracks.values();
57  }