More efficient way to delete expired auth tokens

This commit is contained in:
emeric
2019-07-31 13:29:07 +02:00
parent 71cc901932
commit 8409184511
2 changed files with 4 additions and 10 deletions
+3 -9
View File
@@ -50,18 +50,12 @@ AuthToken::create(Session& session, const std::string& value, const Wt::WDateTim
}
void
AuthToken::removeExpiredTokens(Session& session, Wt::WDateTime now)
AuthToken::removeExpiredTokens(Session& session, const Wt::WDateTime& now)
{
session.checkUniqueLocked();
Wt::Dbo::collection<AuthToken::pointer> res = session.getDboSession().find<AuthToken>();
std::vector<AuthToken::pointer> expiredTokens;
for (auto& token : res)
{
if (token->_expiry < now)
token.remove();
}
session.getDboSession().execute
("DELETE FROM auth_token WHERE expiry < ?").bind(now);
}
AuthToken::pointer
+1 -1
View File
@@ -59,7 +59,7 @@ class AuthToken
// Utility
static pointer create(Session& session, const std::string& value, const Wt::WDateTime&expiry, Wt::Dbo::ptr<User> user);
static void removeExpiredTokens(Session& session, Wt::WDateTime now);
static void removeExpiredTokens(Session& session, const Wt::WDateTime& now);
static pointer getByValue(Session& session, const std::string& value);
static pointer getById(Session& session, IdType tokenId);