Program Listing for File dbState.cpp
↰ Return to documentation for file (include/db/dbState.cpp
)
#include "dbState.hpp"
#include <cstring>
#include "PDJE_LOG_SETTER.hpp"
stmt::stmt()
{
}
stmt::~stmt()
{
if(S != nullptr){
sqlite3_finalize(S);
}
}
int
stmt::bind_null(int idx)
{
return sqlite3_bind_null(S, idx);
}
int
stmt::bind_text(int idx, SANITIZED_ORNOT& str)
{
return sqlite3_bind_text(S, idx, str.c_str(), str.size(), SQLITE_TRANSIENT);
}
int
stmt::bind_blob(int idx, BIN& bin)
{
return sqlite3_bind_blob(S, idx, bin.data(), bin.size(), SQLITE_TRANSIENT);
}
int
stmt::bind_double(int idx, double num)
{
return sqlite3_bind_double(S, idx, num);
}
int
stmt::bind_int(int idx, double num)
{
return sqlite3_bind_int(S, idx, num);
}
bool
stmt::activate(sqlite3* db)
{
bool activate_Res = (sqlite3_prepare_v2(db, placeHold.c_str(), -1, &S, nullptr) == SQLITE_OK);
if(!activate_Res){
critlog("failed to activate sql. from stmt activate. sqliteErr: ");
std::string sqlLog = sqlite3_errmsg(db);
critlog(sqlLog);
}
return activate_Res;
}
template<>
int
stmt::colGet<COL_TYPE::PDJE_INT>(int idx)
{
return sqlite3_column_int(S, idx);
}
template<>
double
stmt::colGet<COL_TYPE::PDJE_DOUBLE>(int idx)
{
return sqlite3_column_double(S, idx);
}
template<>
SANITIZED_ORNOT
stmt::colGet<COL_TYPE::PDJE_TEXT>(int idx)
{
auto ptr = sqlite3_column_text(S, idx);
auto sz = sqlite3_column_bytes(S, idx);
return SANITIZED_ORNOT(ptr, ptr + sz);
}
template<>
BIN
stmt::colGet<COL_TYPE::PDJE_BLOB>(int idx)
{
auto ptr = sqlite3_column_blob(S, idx);
auto sz = sqlite3_column_bytes(S, idx);
if(sz != 0){
return BIN(static_cast<const u_int8_t*>(ptr), static_cast<const u_int8_t*>(ptr) + sz);
}
warnlog("colget cannot return valid binary. from stmt colget-blob");
return BIN();
}