05bd44a354
- 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
39 lines
1.2 KiB
C++
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;
|
|
};
|