From 227a9df1e85bf64946af5a04e6755fc47cc12fe7 Mon Sep 17 00:00:00 2001 From: malloc Date: Fri, 27 Apr 2018 16:29:30 -0500 Subject: [PATCH] sqlite doesn't have a datetime type :childish: --- server/src/db/database.cpp | 4 ++-- server/src/db/database.hpp | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/server/src/db/database.cpp b/server/src/db/database.cpp index 3440713..48baed7 100644 --- a/server/src/db/database.cpp +++ b/server/src/db/database.cpp @@ -16,7 +16,7 @@ void sosc::db::init_databases() { sqlite3_exec(_ctx.mem_db, _mem_db_sql, nullptr, nullptr, nullptr); sqlite3_open("scape.db", &_ctx.hard_db); - + _ctx.ready = true; } @@ -28,4 +28,4 @@ void sosc::db::close_databases() { sqlite3_close(_ctx.mem_db); sqlite3_close(_ctx.hard_db); _ctx.ready = false; -} \ No newline at end of file +} diff --git a/server/src/db/database.hpp b/server/src/db/database.hpp index 87bc75b..4382e3e 100644 --- a/server/src/db/database.hpp +++ b/server/src/db/database.hpp @@ -2,27 +2,60 @@ #define SOSC_DATABASE_H #include "sqlite/sqlite3.h" +#include "../utils/time.hpp" #include #include +#define DB_COL_TEXT 1 +#define DB_COL_BLOB 2 + namespace sosc { namespace db { +class Query; + class ResultSet { public: + bool IsOpen() const; + bool IsReadable() const; + bool Step(); + template + T Get(int column); + std::string Get(int column, int type = DB_COL_TEXT); private: + ResultSet(Query* query, sqlite3_stmt* stmt); + sqlite3_stmt* statement; + Query* query; + bool readable; + friend class Query; }; +double ResultSet::Get(int column); +int32_t ResultSet::Get(int column); +int64_t ResultSet::Get(int column); +sosc::time ResultSet::Get(int column); + class Query { public: Query(); Query(const std::string& query); void SetQuery(const std::string& query); + void NonQuery(); + + ResultSet* GetResults() const; + + inline bool IsOpen() const { + return this->open; + } + void Reset(); void Close(); private: + ResultSet results; + sqlite3_stmt* statement; + std::string query; bool open; };