#include "cartographer.hpp" Cartographer::Cartographer() : i_albums(QHash()), i_artists(QHash()), i_artists_by_name(QHash()), i_tracks(QHash()) {} Cartographer& Cartographer::instance() { static Cartographer _instance; return _instance; } void Cartographer::addAlbum(KotoAlbum* album) { this->i_albums.insert(album->uuid, album); } void Cartographer::addArtist(KotoArtist* artist) { this->i_artists.insert(artist->uuid, artist); this->i_artists_by_name.insert(artist->getName(), artist); } void Cartographer::addTrack(KotoTrack* track) { this->i_tracks.insert(track->uuid, track); } std::optional Cartographer::getAlbum(QUuid uuid) { auto album = this->i_albums.value(uuid, nullptr); return album ? std::optional {album} : std::nullopt; } std::optional Cartographer::getArtist(QUuid uuid) { auto artist = this->i_artists.value(uuid, nullptr); return artist ? std::optional {artist} : std::nullopt; } std::optional Cartographer::getArtist(QString name) { auto artist = this->i_artists_by_name.value(name, nullptr); return artist ? std::optional {artist} : std::nullopt; } std::optional Cartographer::getTrack(QUuid uuid) { auto track = this->i_tracks.value(uuid, nullptr); return track ? std::optional {track} : std::nullopt; }