package app.updates; import app.entities.Stats; import jakarta.annotation.PostConstruct; import org.jobrunr.jobs.annotations.Job; import org.jobrunr.scheduling.JobScheduler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @Component public class PlayersUpdater { Stats stats; ApplicationContext context; JobScheduler jobScheduler; @Value("${backend.updates.a2s}") private boolean update = false; @Autowired public PlayersUpdater(Stats stats, ApplicationContext context, JobScheduler jobScheduler) { this.stats = stats; this.context = context; this.jobScheduler = jobScheduler; } @PostConstruct public void updateValues() { if (update) { stats.getServers().forEach((server_name, server) -> { jobScheduler.enqueue(() -> UpdatePlayersOnServer(server_name)); jobScheduler.scheduleRecurrently("backend.stats.info.update." + server_name, "* * * * *", () -> UpdatePlayersOnServer(server_name)); }); } } @Job(name = "Update A2S data on: %0") public void UpdatePlayersOnServer(String server_name) { stats.RefreshServerA2SData(context, server_name); } }