Implemented SQLite starting with saving the user's credentials. Next is to save the access token and then the host uri

This commit is contained in:
kdeng00
2019-10-06 23:17:06 -04:00
parent fe15ea221f
commit bb6b08cf1a
38 changed files with 981 additions and 171 deletions
+122
View File
@@ -0,0 +1,122 @@
//
// Created by brahmix on 10/6/19.
//
#include "UserRepository.h"
#include <SQLiteCpp/SQLiteCpp.h>
namespace repository { namespace local {
UserRepository::UserRepository()
{
m_tableName = userTable();
}
model::User UserRepository::retrieveUserCredentials(const std::string &appPath)
{
model::User user;
try {
const auto dbPath = pathOfDatabase(appPath);
SQLite::Database db(dbPath, SQLite::OPEN_READONLY);
//SQLite::Database db(m_tableName, SQLite::OPEN_READONLY);
std::string queryString("SELECT * FROM ");
queryString.append(m_tableName);
queryString.append(" LIMIT 1");
SQLite::Statement query(db, queryString);
auto result = query.executeStep();
auto valZero = query.getColumn(1);
auto valOne = query.getColumn(2);
user.username = valZero.getString();
user.password = valOne.getString();
return user;
} catch (std::exception& ex) {
auto msg = ex.what();
}
return user;
}
bool UserRepository::doesUserTableExist(const std::string &appPath)
{
try {
const auto dbPath = pathOfDatabase(appPath);
SQLite::Database db(dbPath, SQLite::OPEN_READONLY);
//SQLite::Database db(m_tableName, SQLite::OPEN_READONLY);
return db.tableExists(m_tableName);
} catch (std::exception& ex) {
auto msg = ex.what();
}
return false;
}
void UserRepository::createUserTable(const std::string &appPath)
{
try {
const auto dbPath = pathOfDatabase(appPath);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
//SQLite::Database db(m_tableName, SQLite::OPEN_READWRITE);
std::string queryString("CREATE TABLE ");
queryString.append(m_tableName);
queryString.append(" (Id INTEGER PRIMARY KEY, Username TEXT, Password TEXT)");
db.exec(queryString);
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
void UserRepository::deleteUserTable(const std::string& appPath)
{
try {
const auto dbPath = pathOfDatabase(appPath);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
std::string queryStr("DELETE FROM ");
queryStr.append(m_tableName);
db.exec(queryStr);
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
void UserRepository::saveUserCred(const model::User & user, const std::string& appPath)
{
try {
const auto dbPath = pathOfDatabase(appPath);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
//SQLite::Database db(m_tableName, SQLite::OPEN_READWRITE);
std::string queryString("INSERT INTO ");
queryString.append(m_tableName);
queryString.append(" (Username, Password) VALUES (?, ?)");
SQLite::Statement query(db, queryString);
query.bind(1, user.username);
query.bind(2, user.password);
query.exec();
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
std::string UserRepository::userTable()
{
constexpr auto table = "User";
return table;
}
}}