2017-10-20 11:26:15 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
#include <boost/filesystem.hpp>
|
|
|
|
#include "Types.h"
|
|
|
|
#include "Singleton.h"
|
|
|
|
#include "sqlite/SqliteDb.h"
|
2017-10-20 12:23:10 -04:00
|
|
|
#include "sqlite/SqliteStatement.h"
|
2017-10-20 11:26:15 -04:00
|
|
|
|
|
|
|
namespace BootablesDb
|
|
|
|
{
|
|
|
|
struct Bootable
|
|
|
|
{
|
|
|
|
boost::filesystem::path path;
|
|
|
|
std::string discId;
|
2017-10-20 12:23:10 -04:00
|
|
|
std::string title;
|
|
|
|
std::string coverUrl;
|
2017-10-20 11:26:15 -04:00
|
|
|
time_t lastBootedTime = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CClient : public CSingleton<CClient>
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CClient();
|
|
|
|
virtual ~CClient() = default;
|
|
|
|
|
|
|
|
Bootable GetBootable(const boost::filesystem::path&);
|
|
|
|
std::vector<Bootable> GetBootables();
|
|
|
|
|
|
|
|
void RegisterBootable(const boost::filesystem::path&);
|
2017-10-27 18:06:59 -04:00
|
|
|
void UnregisterBootable(const boost::filesystem::path&);
|
2017-10-20 11:26:15 -04:00
|
|
|
|
|
|
|
void SetDiscId(const boost::filesystem::path&, const char*);
|
2017-10-20 12:23:10 -04:00
|
|
|
void SetTitle(const boost::filesystem::path&, const char*);
|
2017-10-23 07:27:42 -04:00
|
|
|
void SetCoverUrl(const boost::filesystem::path&, const char*);
|
2017-10-20 11:26:15 -04:00
|
|
|
void SetLastBootedTime(const boost::filesystem::path&, time_t);
|
|
|
|
|
|
|
|
private:
|
2017-10-20 12:23:10 -04:00
|
|
|
static Bootable ReadBootable(Framework::CSqliteStatement&);
|
|
|
|
|
2017-10-20 11:26:15 -04:00
|
|
|
void CheckDbVersion();
|
|
|
|
|
|
|
|
boost::filesystem::path m_dbPath;
|
|
|
|
Framework::CSqliteDb m_db;
|
|
|
|
};
|
|
|
|
};
|