34 lines
1.2 KiB
Java
34 lines
1.2 KiB
Java
package ru.serega6531.packmate.tasks;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
import org.springframework.stereotype.Component;
|
|
import ru.serega6531.packmate.properties.PackmateProperties;
|
|
import ru.serega6531.packmate.service.StreamService;
|
|
|
|
import java.time.ZonedDateTime;
|
|
|
|
@Component
|
|
@Slf4j
|
|
@ConditionalOnExpression("${packmate.cleanup.enabled:false} && '${packmate.capture-mode}' == 'LIVE'")
|
|
public class OldStreamsCleanupTask {
|
|
|
|
private final StreamService service;
|
|
private final int oldStreamsThreshold;
|
|
|
|
public OldStreamsCleanupTask(StreamService service, PackmateProperties properties) {
|
|
this.service = service;
|
|
this.oldStreamsThreshold = properties.cleanup().threshold();
|
|
}
|
|
|
|
@Scheduled(fixedDelayString = "PT${packmate.cleanup.interval}M", initialDelayString = "PT1M")
|
|
public void cleanup() {
|
|
ZonedDateTime before = ZonedDateTime.now().minusMinutes(oldStreamsThreshold);
|
|
log.info("Cleaning up old non-favorite streams (before {})", before);
|
|
long deleted = service.cleanupOldStreams(before);
|
|
log.info("Deleted {} rows", deleted);
|
|
}
|
|
|
|
}
|