store id in DB
This commit is contained in:
@@ -33,7 +33,7 @@ constexpr char DB_NAME[] = "data.db";
|
||||
struct sqlite3;
|
||||
struct sqlite3_stmt;
|
||||
|
||||
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
|
||||
#define SQLITE_ROW 100 /* sqlite3_step() has another row ready */
|
||||
#define SQL_DONE 101
|
||||
#define SQL_NULL 5
|
||||
#define SQLITE_OK 0
|
||||
@@ -44,6 +44,7 @@ namespace sql
|
||||
void init();
|
||||
void shutdown();
|
||||
int open(const char *filename, sqlite3 **ppDb);
|
||||
int exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **), void *first_arg, char **errmsg);
|
||||
int prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **pStmt, const char **pzTail);
|
||||
int bind_int64(sqlite3_stmt *pStmt, int column, int64_t value);
|
||||
int step(sqlite3_stmt *pStmt);
|
||||
|
||||
20
shared/inc/values/DnaDB.hpp
Normal file
20
shared/inc/values/DnaDB.hpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include <cinttypes>
|
||||
#include <vector>
|
||||
|
||||
struct sqlite3;
|
||||
|
||||
class DnaDB
|
||||
{
|
||||
sqlite3 *db;
|
||||
|
||||
public:
|
||||
void init(const char *db_name = "data.db");
|
||||
void deinit();
|
||||
std::vector<int64_t> getUserIds();
|
||||
int insertUser(int64_t id, int64_t max_gen);
|
||||
int updateUser(int64_t id, int64_t max_gen);
|
||||
|
||||
void getGenerations();
|
||||
void getLikesForGeneration();
|
||||
void getVectorForGeneration();
|
||||
};
|
||||
@@ -7,9 +7,9 @@
|
||||
|
||||
enum Liked
|
||||
{
|
||||
tbd,
|
||||
yes,
|
||||
no
|
||||
tbd = 0,
|
||||
yes = 1,
|
||||
no = 2,
|
||||
};
|
||||
|
||||
struct UiUnit
|
||||
|
||||
@@ -78,6 +78,10 @@ namespace sql
|
||||
{
|
||||
return sqlite3_open(filename, ppDb);
|
||||
}
|
||||
int exec(sqlite3 *db, const char *sql, int (*callback)(void *, int, char **, char **), void *first, char **errmsg)
|
||||
{
|
||||
return sqlite3_exec(db, sql, callback, first, errmsg);
|
||||
}
|
||||
int prepare_v2(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **pStmt, const char **pzTail)
|
||||
{
|
||||
return sqlite3_prepare_v2(db, zSql, nByte, pStmt, pzTail);
|
||||
|
||||
69
shared/src/values/DnaDB.cpp
Normal file
69
shared/src/values/DnaDB.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
#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()
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user