feat: implement db provider

This commit is contained in:
Samsonium
2026-09-29 14:46:44 +03:00
parent e756bb1d73
commit 62f844a582
7 changed files with 181 additions and 6 deletions
+45
View File
@@ -0,0 +1,45 @@
#include <engine/core/engine_db_provider.hpp>
#include <stdexcept>
MscEngineDBProvider::MscEngineDBProvider() : MscEngineDBProvider(":memory:")
{
}
MscEngineDBProvider::MscEngineDBProvider(const std::string &filepath)
{
const int result = sqlite3_open(filepath.c_str(), &_db);
if (result != SQLITE_OK)
{
const std::string message = _db != nullptr
? sqlite3_errmsg(_db)
: "unknown SQLite error";
if (_db != nullptr)
{
sqlite3_close(_db);
_db = nullptr;
}
throw std::runtime_error("Failed to open SQLite database: " + message);
}
}
MscEngineDBProvider::~MscEngineDBProvider()
{
if (_db != nullptr)
sqlite3_close(_db);
}
void MscEngineDBProvider::execute(const std::string &sql)
{
char *errorMessage = nullptr;
const int result = sqlite3_exec(_db, sql.c_str(), nullptr, nullptr, &errorMessage);
if (result == SQLITE_OK)
return;
std::string message(errorMessage);
sqlite3_free(errorMessage);
throw std::runtime_error("Failed to execute SQL: " + message);
}