#include "../../include/odhtdb/sql/Sql.hpp" #include #include #include namespace odhtdb { int SqlArg::bind(sqlite3_stmt *stmt, int paramIndex) const { switch(type) { case Type::DATA_VIEW: return sqlite3_bind_blob(stmt, paramIndex, dataView.data, dataView.size, SQLITE_STATIC); case Type::INT: return sqlite3_bind_int(stmt, paramIndex, integer); case Type::INT64: return sqlite3_bind_int64(stmt, paramIndex, integer64); case Type::UINT64: // TODO: Find a way to use u64 in sqlite return sqlite3_bind_int64(stmt, paramIndex, uinteger64); } return SQLITE_OK; } std::string SqlArg::toString() const { switch(type) { case Type::DATA_VIEW: return std::string((const char*)dataView.data, dataView.size); case Type::INT: return std::to_string(integer); case Type::INT64: return std::to_string(integer64); case Type::UINT64: // TODO: Find a way to use u64 in sqlite return std::to_string(uinteger64); default: return ""; } } SqlTransaction::SqlTransaction(sqlite3 *_db) : db(_db) { assert(db); sqlite3_exec(db, "BEGIN", 0, 0, 0); } SqlTransaction::~SqlTransaction() { if(std::uncaught_exception()) sqlite3_exec(db, "ROLLBACK", 0, 0, 0); } void SqlTransaction::commit() { sqlite3_exec(db, "COMMIT", 0, 0, 0); } }