geostat/ocdb.h

55 wiersze
1.3 KiB
C
Czysty Zwykły widok Historia

#pragma once
2019-10-03 22:43:39 +00:00
#include "cache.h"
#include "api.h"
#include <string>
#include <map>
#include <nlohmann/json_fwd.hpp>
typedef struct sqlite3 sqlite3;
typedef struct sqlite3_stmt sqlite3_stmt;
class Okapi;
using json = nlohmann::json;
2019-10-03 22:43:39 +00:00
class OCdb : public Api {
private:
sqlite3* db;
mutable sqlite3_stmt* stmt;
mutable std::string sql;
2019-10-06 00:46:07 +00:00
int revision;
bool request(const std::string& req) const;
bool init_part(const std::string& json_file); // read db dump
bool parse_item(const json& j);
bool update_cache(const json& j);
bool update_log(const json& j);
2019-09-30 23:48:49 +00:00
bool read_revision();
Caches parse_sql_caches() const;
2019-11-04 20:44:08 +00:00
enum LogType {
found = 1,
dnf = 0,
other = -1
};
2023-08-30 14:40:12 +00:00
constexpr static auto Database_pl = "ocpl.sqlite";
constexpr static auto Database_de = "ocde.sqlite";
constexpr static auto Database_us = "ocus.sqlite";
public:
2023-08-30 14:40:12 +00:00
explicit OCdb(const Service service);
~OCdb();
2020-07-06 15:15:53 +00:00
bool init(const std::string& dump_path); // read db dump
bool update(const Okapi& oc); // apply changelog
int get_revision() const;
2019-10-06 00:46:07 +00:00
void set_revision(int rev);
2019-10-03 22:43:39 +00:00
Caches get_user_caches_not_found(const std::string& uuid) const;
2020-02-11 16:37:01 +00:00
Caches get_user_caches(const std::string& uuid, int count = 0) const override;
Caches get_user_caches_owned(const std::string& uuid) const;
std::map<std::string, int> get_region_stats();
};