Files
fegger 05bd44a354 Refactor tagging and add library scanning
- Replace `Tag` class with utility helpers for hashing and file type parsing
- Change `Track.artwork` from `std::string` to `TagLib::VariantMap`
- Add `importArtwork`, rename `importFolder` to `scanFolder`
- Add `scanLibrary`, `updateLibrary`, `editMetadata`, and `seek` methods to `Player` hierarchy
- Remove obsolete `Tag.h`/`Tag.cpp` files
2026-06-22 11:00:06 +02:00

39 lines
1.2 KiB
C++

#pragma once
#include "Containers.h"
#include <cstdint>
#include <optional>
#include <set>
#include <sqlite3.h>
using queue = std::vector<Track>;
class Database {
public:
Database( const char* filename );
~Database();
void fetch( const std::string& query ) const;
void fetchAlbum( const std::string& album ) const;
void fetchAll( std::vector<Track>& entries ) const;
void fetchAll( std::map<std::string, Track>& entries ) const;
void fetchHashes( std::set<uint_fast64_t>& hashes );
std::set<const char*> fetchFilePaths();
std::optional<int> getArtistId( const std::string& artistName );
std::optional<int> getAlbumId( const std::string& albumTitle );
std::optional<int> getGenreId( const std::string& genre );
void addTrack( Track t);
void addArtist( const std::string& artistName );
void addAlbum( Track t);
void addGenre( const std::string& genre );
void setActive( bool active );
void updateFilePath( const std::string& filePath );
sqlite3* getDb() { return db_; };
private:
sqlite3* db_;
sqlite3_stmt* stmnt;
};