TemporaryTokenCleanupService.java
/*
* Copyright (C) 2025 B3Partners B.V.
*
* SPDX-License-Identifier: MIT
*/
package org.tailormap.api.configuration;
import java.lang.invoke.MethodHandles;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.tailormap.api.repository.TemporaryTokenRepository;
@Service
public class TemporaryTokenCleanupService {
private static final Logger logger =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final TemporaryTokenRepository temporaryTokenRepository;
public TemporaryTokenCleanupService(TemporaryTokenRepository temporaryTokenRepository) {
this.temporaryTokenRepository = temporaryTokenRepository;
}
@Scheduled(fixedDelay = 1, timeUnit = TimeUnit.MINUTES, initialDelay = 1)
@Transactional
public void cleanExpiredTokens() {
logger.trace("Running expired token cleanup...");
temporaryTokenRepository.deleteByExpirationTimeBefore(ZonedDateTime.now(ZoneId.of("UTC")));
}
}