added sqlite query result and enhanced column generator and value extractor

This commit is contained in:
2023-11-14 20:21:51 +01:00
parent 4ed01a617d
commit d76ac60278
44 changed files with 1052 additions and 192 deletions
+28 -2
View File
@@ -1,8 +1,11 @@
#include "sqlite_connection.hpp"
#include "sqlite_error.hpp"
#include "sqlite_query_result.hpp"
#include <utility>
#include <memory>
namespace matador::backends::sqlite {
sqlite_connection::sqlite_connection(const sql::connection_info &info)
@@ -32,14 +35,37 @@ bool sqlite_connection::is_open()
return sqlite_db_ != nullptr;
}
void sqlite_connection::execute(const std::string &stmt)
int sqlite_connection::parse_result(void* param, int column_count, char** values, char** columns)
{
auto *result = static_cast<sqlite_query_result*>(param);
result->push_back(values, column_count);
return 0;
}
size_t sqlite_connection::execute(const std::string &stmt)
{
char *errmsg = nullptr;
int ret = sqlite3_exec(sqlite_db_, stmt.c_str(), nullptr, nullptr, &errmsg);
throw_sqlite_error(ret, sqlite_db_, "sqlite", stmt);
return sqlite3_changes(sqlite_db_);
}
std::unique_ptr<sql::query_result_impl> sqlite_connection::fetch(const std::string &stmt)
{
auto result = std::make_unique<sqlite_query_result>();
char *errmsg = nullptr;
int ret = sqlite3_exec(sqlite_db_, stmt.c_str(), parse_result, result.get(), &errmsg);
throw_sqlite_error(ret, sqlite_db_, "sqlite", stmt);
return std::move(result);
}
void sqlite_connection::prepare(const std::string &stmt)
{
}
}