koto/desktop/datalake/cartographer.hpp
Joshua Strobl 62c99ee67c feat: initial database creation, loading
fixes for cartographer and automatically add track to album when adding to artist
2024-10-05 00:03:50 +03:00

32 lines
981 B
C++

#pragma once
#include <QHash>
#include <QString>
#include <QUuid>
#include <optional>
#include "structs.hpp"
class Cartographer {
public:
Cartographer();
static Cartographer& instance();
static Cartographer* create() { return &instance(); }
void addAlbum(KotoAlbum* album);
void addArtist(KotoArtist* artist);
void addTrack(KotoTrack* track);
std::optional<KotoAlbum*> getAlbum(QUuid uuid);
QList<KotoAlbum*> getAlbums();
std::optional<KotoArtist*> getArtist(QUuid uuid);
QList<KotoArtist*> getArtists();
std::optional<KotoArtist*> getArtist(QString name);
std::optional<KotoTrack*> getTrack(QUuid uuid);
QList<KotoTrack*> getTracks();
private:
QHash<QUuid, KotoAlbum*> i_albums;
QHash<QUuid, KotoArtist*> i_artists;
QHash<QString, KotoArtist*> i_artists_by_name;
QHash<QUuid, KotoTrack*> i_tracks;
};