Add: UserCleanupJob as runnable to remove all expired users

This commit is contained in:
Lars Simon Winzer
2026-03-15 19:29:25 +01:00
parent 1223e1a4a9
commit 8dd99726ce
@@ -0,0 +1,39 @@
package ch.unibas.dmi.dbis.cs108.casono.server.domain.user;
import java.time.Duration;
import java.time.Instant;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class UserCleanupJob implements Runnable {
private static final Logger logger = LogManager.getLogger(UserCleanupJob.class);
private final UserRegistry registry;
private final Duration reconnectThreshold;
public UserCleanupJob(UserRegistry registry, Duration reconnectThreshold) {
this.registry = registry;
this.reconnectThreshold = reconnectThreshold;
}
@Override
public void run() {
logger.debug("Job started.");
Instant threshold = Instant.now().minus(reconnectThreshold);
for (User user : registry.getAllUsers()) {
if (user.getDisconnectedAt().isEmpty()) {
continue;
}
Instant disconnectedAt = user.getDisconnectedAt().get();
if (disconnectedAt.isBefore(threshold)) {
if (registry.removeIfStillDisconnected(user.getId())) {
logger.info("Removed expired user {} ({})", user.getName(), user.getId().value());
}
}
}
logger.debug("Job finished.");
}
}