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) {
|
static inline std::optional<int> GetJSONAsOptionalInt(const Json::Value& data) {
|
||||||
return data.isString()?data.asInt():std::optional<int>();
|
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 {
|
class MyClient final : public Discord::Client {
|
||||||
|
@ -105,10 +112,16 @@ class MyClient final : public Discord::Client {
|
||||||
|
|
||||||
Json::Value *me;
|
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:
|
public:
|
||||||
MyClient(boost::asio::io_service& io, const ChatFuse::Discord::Settings& settings = {})
|
MyClient(boost::asio::io_service& io, const ChatFuse::Discord::Settings& settings = {})
|
||||||
: ChatFuse::Discord::Client(io, settings),
|
: ChatFuse::Discord::Client(io, settings),
|
||||||
db("log.sqlite3")
|
db(getDatabaseFileName())
|
||||||
{
|
{
|
||||||
// Improve database performance
|
// Improve database performance
|
||||||
db << "pragma journal_mode = WAL;";
|
db << "pragma journal_mode = WAL;";
|
||||||
|
@ -424,9 +437,19 @@ protected:
|
||||||
virtual boost::asio::awaitable<void> intentHandler(std::string intent, Json::Value data) override {
|
virtual boost::asio::awaitable<void> intentHandler(std::string intent, Json::Value data) override {
|
||||||
std::ofstream(intent+".json") << data;
|
std::ofstream(intent+".json") << data;
|
||||||
if (intent == "READY") [[unlikely]] {
|
if (intent == "READY") [[unlikely]] {
|
||||||
|
// Get own user
|
||||||
const auto& user = cache.store(std::move(data["user"])).data;
|
const auto& user = cache.store(std::move(data["user"])).data;
|
||||||
logger.log(Loglevel::info, "Connected to Discord as: "+user["username"].asString()+'#'+user["discriminator"].asString());
|
logger.log(Loglevel::info, "Connected to Discord as: "+user["username"].asString()+'#'+user["discriminator"].asString());
|
||||||
|
// Get guilds
|
||||||
co_await fetchAllGuilds(std::move(data["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]] {
|
else if (intent == "GUILD_CREATE") [[unlikely]] {
|
||||||
fixGuild(data);
|
fixGuild(data);
|
||||||
|
|
Loading…
Add table
Reference in a new issue