Add region histogram for caches not found

sql-rework
Tomasz Golinski 2020-05-24 16:56:10 +02:00
rodzic 6d1852c4f7
commit 3901dfafc7
2 zmienionych plików z 19 dodań i 12 usunięć

Wyświetl plik

@ -226,6 +226,7 @@ int main(int argc, char** argv) {
if (!ocpl_user.empty()) {
Okapi OCpl(ocpl_url, ocpl_key);
ocpl_user_uuid = OCpl.get_uuid(ocpl_user);
ocpl_user_profile = OCpl.get_profile_url(ocpl_user_uuid);
}
if (get_not_found) {
Caches tmp = db.get_user_caches_not_found(ocpl_user_uuid);
@ -690,6 +691,9 @@ int main(int argc, char** argv) {
std::cout << "<div class=\"basic_stats\">\n";
std::cout << "Still <span class=\"value\">" << cc.size() << "</span> caches to be found...<br>\n";
std::cout << "</div>\n";
show_histogram(cc, &Cache::region, "Regions", 1);
}
std::cout << "<footer>\n";

Wyświetl plik

@ -316,7 +316,7 @@ Caches OCdb::get_user_caches_not_found(const std::string& uuid) const {
Caches cc;
Cache c;
std::string sql = "SELECT code, location, name FROM caches WHERE status = 'Available' AND NOT EXISTS (SELECT cache_code FROM logs WHERE cache_code = code AND type = 1 and user = ?1) AND owner != ?1;";
std::string sql = "SELECT code, location, name, region FROM caches WHERE status = 'Available' AND NOT EXISTS (SELECT cache_code FROM logs WHERE cache_code = code AND type = 1 and user = ?1) AND owner != ?1;";
res = sqlite3_prepare_v2(db, sql.c_str(), sql.length() + 1, &stmt, NULL);
if (res != SQLITE_OK) {
@ -328,9 +328,10 @@ Caches OCdb::get_user_caches_not_found(const std::string& uuid) const {
res = sqlite3_step(stmt);
while (res == SQLITE_ROW) {
c.code = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0));
c.pos = get_lat_lon(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1)));
c.name = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 2));
if (sqlite3_column_text(stmt, 0)) c.code = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0));
if (sqlite3_column_text(stmt, 1)) c.pos = get_lat_lon(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1)));
if (sqlite3_column_text(stmt, 2)) c.name = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 2));
if (sqlite3_column_text(stmt, 3)) c.region = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 3));
c.status = ok;
cc.push_back(c);
res = sqlite3_step(stmt);
@ -362,18 +363,19 @@ Caches OCdb::get_user_caches(const std::string& uuid, __attribute__((unused)) in
res = sqlite3_step(stmt);
while (res == SQLITE_ROW) {
c.code = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0));
c.pos = get_lat_lon(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1)));
c.type = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 2));
c.size = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 3));
if (sqlite3_column_text(stmt, 0)) c.code = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0));
if (sqlite3_column_text(stmt, 1)) c.pos = get_lat_lon(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1)));
if (sqlite3_column_text(stmt, 2)) c.type = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 2));
if (sqlite3_column_text(stmt, 3)) c.size = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 3));
c.diff = sqlite3_column_int(stmt, 4)/2.0;
c.terr = sqlite3_column_int(stmt, 5)/2.0;
//c.country = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 6));
c.region = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 7));
c.owner_uuid = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 8)); // TODO: we don't know owner's nick
if (sqlite3_column_text(stmt, 7)) c.region = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 7));
if (sqlite3_column_text(stmt, 8)) c.owner_uuid = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 8)); // TODO: we don't know owner's nick
std::string tmp = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 9));
if (tmp == "Available")
if (sqlite3_column_text(stmt, 9)) {
std::string tmp = reinterpret_cast<const char*>(sqlite3_column_text(stmt, 9));
if (tmp == "Available")
c.status = ok;
else if (tmp == "Temporarily unavailable")
c.status = disabled;
@ -381,6 +383,7 @@ Caches OCdb::get_user_caches(const std::string& uuid, __attribute__((unused)) in
c.status = archived;
else
c.status = unknown;
}
cc.push_back(c);
res = sqlite3_step(stmt);