From 840918451198d5bf59c45ec1ad0c9d3170158ac4 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 31 Jul 2019 13:29:07 +0200 Subject: [PATCH] More efficient way to delete expired auth tokens --- src/database/User.cpp | 12 +++--------- src/database/User.hpp | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/database/User.cpp b/src/database/User.cpp index 15892136..18434e7c 100644 --- a/src/database/User.cpp +++ b/src/database/User.cpp @@ -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 res = session.getDboSession().find(); - - std::vector expiredTokens; - for (auto& token : res) - { - if (token->_expiry < now) - token.remove(); - } + session.getDboSession().execute + ("DELETE FROM auth_token WHERE expiry < ?").bind(now); } AuthToken::pointer diff --git a/src/database/User.hpp b/src/database/User.hpp index 4d61c13a..40c2bf50 100644 --- a/src/database/User.hpp +++ b/src/database/User.hpp @@ -59,7 +59,7 @@ class AuthToken // Utility static pointer create(Session& session, const std::string& value, const Wt::WDateTime&expiry, Wt::Dbo::ptr 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);