Files
mear/app/src/main/cpp/APIRepository.cpp
T

96 lines
2.8 KiB
C++

//
// Created by brahmix on 10/12/19.
//
#include "APIRepository.h"
#include <SQLiteCpp/Database.h>
namespace repository { namespace local {
APIRepository::APIRepository()
{
m_tableName = apiInfoTable();
}
model::APIInfo APIRepository::retrieveAPIInfo(const std::string& path)
{
model::APIInfo apiInfo;
try {
const auto dbPath = pathOfDatabase(path);
SQLite::Database db(dbPath, 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();
apiInfo.uri = query.getColumn(1).getString();
apiInfo.endpoint = query.getColumn(2).getString();
apiInfo.version = query.getColumn(3).getInt();
return apiInfo;
} catch (std::exception ex) {
auto msg = ex.what();
}
return apiInfo;
}
void APIRepository::createAPiInfoTable(const std::string& path)
{
try {
const auto dbPath = pathOfDatabase(path);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
std::string queryString("CREATE TABLE ");
queryString.append(m_tableName);
queryString.append(" (Id INTEGER PRIMARY KEY, Uri TEXT, Endpoint TEXT, Version INT");
db.exec(queryString);
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
void APIRepository::deleteAPIInfo(const model::APIInfo& apiInfo, const std::string& path)
{
try {
const auto dbPath = pathOfDatabase(path);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
std::string queryString("DELETE FROM ");
queryString.append(m_tableName);
db.exec(queryString);
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
void APIRepository::saveAPIInfo(const model::APIInfo& apiInfo, const std::string& path)
{
try {
const auto dbPath = pathOfDatabase(path);
SQLite::Database db(dbPath, SQLite::OPEN_READWRITE);
std::string queryString("INSERT INTO ");
queryString.append(m_tableName);
queryString.append(" (Uri, Endpoint, Version) VALUES (?, ?, ?)");
SQLite::Statement query(db, queryString);
query.bind(1, apiInfo.uri);
query.bind(2, apiInfo.endpoint);
query.bind(3, apiInfo.version);
query.exec();
} catch (std::exception& ex) {
auto msg = ex.what();
}
}
std::string APIRepository::apiInfoTable() noexcept { return "APIInfo"; }
}}