#include "../shared/ContainerThread.h" #include "../shared/DatabaseForThread.h" #include "../shared/ThreadMonitor.h" #include "RecordLanguage.h" static std::string s_recordLanguage = "recordLanguage"; void recordLanguageInThread(UserId userId, std::string language) { ThreadMonitor::SetState tm(s_recordLanguage); tm.increment(s_recordLanguage); const std::string sql = "INSERT IGNORE INTO client_use_case SET date=CURDATE(), user_id=" + ntoa(userId) + ", description='AutoLanguage." + mysqlEscapeString(language) + "', count=1"; DatabaseForThread(DatabaseWithRetry::MASTER)->tryQueryUntilSuccess(sql, s_recordLanguage); } void recordLanguage(UserId userId, std::string language) { ThreadMonitor::find().increment(s_recordLanguage); if (!userId) return; if (language.empty()) return; IContainerThread::batch()->addLambdaToQueue([=]() {recordLanguageInThread(userId, language);}); }