Mockup for the core database classes.

This commit is contained in:
Relintai 2020-12-01 14:00:49 +01:00
parent 5559b663b5
commit 026513c0ff
4 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,7 @@
#include "database.h"
Database::Database() {
}
Database::~Database() {
}

View File

@ -0,0 +1,31 @@
#ifndef DATABASE_H
#define DATABASE_H
#include <string>
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

View File

@ -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;

View File

@ -0,0 +1,23 @@
#ifndef DATABASE_MANAGER_H
#define DATABASE_MANAGER_H
#include <vector>
#include "database.h"
class DatabaseManager {
public:
std::vector<Database *> databases;
void load();
DatabaseManager *get_singleton();
DatabaseManager();
~DatabaseManager();
private:
static DatabaseManager * _instance;
};
#endif