Files
treender/shared/src/values/DnaDB.cpp
2026-02-16 23:07:22 +01:00

70 lines
1.6 KiB
C++

#include "values/DnaDB.hpp"
#include <sql.hpp>
void DnaDB::init(const char * db_name)
{
sql::init();
int res = sql::open(db_name, &db);
constexpr char create_user_table[] = "CREATE TABLE IF NOT EXISTS user_table ( ID INTEGER PRIMARY KEY, USER_ID INTEGER, MAX_GENERATION INTEGER);";
res = sql::exec(db, create_user_table, nullptr, nullptr, nullptr);
}
void DnaDB::deinit()
{
sql::close(db);
sql::shutdown();
}
std::vector<int64_t> DnaDB::getUserIds()
{
constexpr char sql[] = "SELECT USER_ID FROM user_table;";
sqlite3_stmt *stmt;
sql::prepare_v2(db, sql, -1, &stmt, nullptr);
std::vector<int64_t> ids;
while (sql::step(stmt) != SQL_DONE)
{
int64_t id = sql::column_int64(stmt, 0);
ids.push_back(id);
}
sql::finalize(stmt);
return ids;
}
int DnaDB::insertUser(int64_t id, int64_t max_gen){
constexpr char sql[] = "INSERT INTO user_table (USER_ID, MAX_GENERATION) VALUES (?,?);";
sqlite3_stmt *stmt;
sql::prepare_v2(db, sql, -1, &stmt, nullptr);
sql::bind_int64(stmt, 1, id);
sql::bind_int64(stmt, 2, max_gen);
int ret = sql::step(stmt);
sql::finalize(stmt);
return ret;
}
int DnaDB::updateUser(int64_t id, int64_t max_gen){
constexpr char sql[] = "UPDATE user_table SET MAX_GENERATION = ? WHERE USER_ID = ?;";
sqlite3_stmt *stmt;
sql::prepare_v2(db, sql, -1, &stmt, nullptr);
sql::bind_int64(stmt, 1, max_gen);
sql::bind_int64(stmt, 2, id);
int ret = sql::step(stmt);
sql::finalize(stmt);
return ret;
}
void DnaDB::getGenerations()
{
}
void DnaDB::getLikesForGeneration()
{
}
void DnaDB::getVectorForGeneration()
{
}