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