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:
parent
8246efa358
commit
c0509932f4
1 changed files with 24 additions and 1 deletions
25
main.cpp
25
main.cpp
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue