From 026513c0ffa70e10ba5d8d74e87283dc084d645e Mon Sep 17 00:00:00 2001 From: Relintai Date: Tue, 1 Dec 2020 14:00:49 +0100 Subject: [PATCH] Mockup for the core database classes. --- core/database.cpp | 7 +++++++ core/database.h | 31 +++++++++++++++++++++++++++++++ core/database_manager.cpp | 23 +++++++++++++++++++++++ core/database_manager.h | 23 +++++++++++++++++++++++ 4 files changed, 84 insertions(+) diff --git a/core/database.cpp b/core/database.cpp index e69de29..7f00d7a 100644 --- a/core/database.cpp +++ b/core/database.cpp @@ -0,0 +1,7 @@ +#include "database.h" + +Database::Database() { +} + +Database::~Database() { +} \ No newline at end of file diff --git a/core/database.h b/core/database.h index e69de29..cddd6f7 100644 --- a/core/database.h +++ b/core/database.h @@ -0,0 +1,31 @@ +#ifndef DATABASE_H +#define DATABASE_H + +#include + +enum QueryErrorCode { + OK, + ERROR +}; + +class QueryResult { +public: +}; + +class Database { +public: + //probably needs refcount, depending on what db engines do, todo + virtual QueryResult *query(const std::string &sql); + virtual QueryResult *query_async(const std::string &sql); + //or + virtual QueryErrorCode query(QueryResult *result, const std::string &sql); + virtual QueryErrorCode query_async(QueryResult *result, const std::string &sql); + + //also + //virtual QueryResult *query_prepared(const std::string &sql, param1, param2, ...); + + Database(); + ~Database(); +}; + +#endif \ No newline at end of file diff --git a/core/database_manager.cpp b/core/database_manager.cpp index e69de29..a01844b 100644 --- a/core/database_manager.cpp +++ b/core/database_manager.cpp @@ -0,0 +1,23 @@ +#include "database_manager.h" + +void DatabaseManager::load() { + //go thourgh settings, and create all the defined db backends +} + +DatabaseManager *DatabaseManager::get_singleton() { + return _instance; +} + +DatabaseManager::DatabaseManager() { + _instance = this; +} + +DatabaseManager::~DatabaseManager() { + _instance = nullptr; + + for (uint32_t i = 0; i < databases.size(); ++i) { + delete databases[i]; + } +} + +DatabaseManager *DatabaseManager::_instance = nullptr; \ No newline at end of file diff --git a/core/database_manager.h b/core/database_manager.h index e69de29..cb05863 100644 --- a/core/database_manager.h +++ b/core/database_manager.h @@ -0,0 +1,23 @@ +#ifndef DATABASE_MANAGER_H +#define DATABASE_MANAGER_H + +#include + +#include "database.h" + +class DatabaseManager { +public: + std::vector databases; + + void load(); + + DatabaseManager *get_singleton(); + + DatabaseManager(); + ~DatabaseManager(); + +private: + static DatabaseManager * _instance; +}; + +#endif \ No newline at end of file