1
0
Fork 0
mirror of https://gitlab.com/niansa/dpplogger.git synced 2025-03-06 20:48:29 +01:00

Seperate database files for each session

This commit is contained in:
niansa 2023-01-09 00:39:43 +01:00
parent 8246efa358
commit c0509932f4

View file

@ -97,6 +97,13 @@ static inline std::optional<std::string> GetJSONAsOptionalString(const Json::Val
static inline std::optional<int> GetJSONAsOptionalInt(const Json::Value& data) {
return data.isString()?data.asInt():std::optional<int>();
}
static void reverseString(std::string& str) {
int len = str.length();
for (int i = 0; i < len / 2; i++) {
std::swap(str[i], str[len - i - 1]);
}
}
class MyClient final : public Discord::Client {
@ -105,10 +112,16 @@ class MyClient final : public Discord::Client {
Json::Value *me;
static inline std::string getDatabaseFileName() {
auto time_str = std::to_string(time(nullptr));
reverseString(time_str);
return "log-"+time_str+".sqlite3";
}
public:
MyClient(boost::asio::io_service& io, const ChatFuse::Discord::Settings& settings = {})
: ChatFuse::Discord::Client(io, settings),
db("log.sqlite3")
db(getDatabaseFileName())
{
// Improve database performance
db << "pragma journal_mode = WAL;";
@ -424,9 +437,19 @@ protected:
virtual boost::asio::awaitable<void> intentHandler(std::string intent, Json::Value data) override {
std::ofstream(intent+".json") << data;
if (intent == "READY") [[unlikely]] {
// Get own user
const auto& user = cache.store(std::move(data["user"])).data;
logger.log(Loglevel::info, "Connected to Discord as: "+user["username"].asString()+'#'+user["discriminator"].asString());
// Get guilds
co_await fetchAllGuilds(std::move(data["guilds"]));
// Get users
auto& users = data["users"];
if (users.isArray()) {
for (const auto& user_data : users) {
insertUserUpdate(user_data, true);
cache.store(std::move(user_data));
}
}
}
else if (intent == "GUILD_CREATE") [[unlikely]] {
fixGuild(data);