db.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "db.h"
  2. #include <SQLiteCpp/VariadicBind.h>
  3. #include <iostream>
  4. DBData::DBData(void)
  5. : db("space-data.db", SQLite::OPEN_READWRITE | SQLite::OPEN_CREATE) {
  6. init();
  7. }
  8. // DBData::DBData(void) : sql(std::string(DB_CONNECT_STRING)) {}
  9. DBData::~DBData() {}
  10. void DBData::init(void) {
  11. db.exec("CREATE TABLE IF NOT EXISTS \
  12. settings(username TEXT, setting TEXT, value TEXT, \
  13. PRIMARY KEY(username, setting));");
  14. }
  15. void DBData::setUser(std::string currentUser) { user = currentUser; }
  16. std::string DBData::getSetting(const std::string &setting,
  17. std::string ifMissing) {
  18. SQLite::Statement query(
  19. db, "SELECT value FROM settings WHERE username=? AND setting=?");
  20. query.reset();
  21. query.bind(1, user);
  22. query.bind(2, setting);
  23. if (query.executeStep()) {
  24. std::string value = query.getColumn(0);
  25. return value;
  26. };
  27. return ifMissing;
  28. }
  29. void DBData::setSetting(const std::string &setting, const std::string &value) {
  30. SQLite::Statement stmt(
  31. db, "REPLACE INTO settings(username, setting, value) VALUES(?,?,?);");
  32. stmt.reset();
  33. stmt.bind(1, user);
  34. stmt.bind(2, setting);
  35. stmt.bind(3, value);
  36. stmt.exec();
  37. }