Browse Source

graph cache 2

master
gsd 1 month ago
parent
commit
48510e2c54
  1. 6
      src/main/java/app/controllers/StatsController.java
  2. 7
      src/main/java/app/updates/OnlineUpdater.java

6
src/main/java/app/controllers/StatsController.java

@ -76,7 +76,8 @@ public class StatsController {
@RequestParam(required = false, defaultValue = "%") String server_id) {
if (limit > 366) return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
return new ResponseEntity<>(onlineUpdater.getPeakOfDays(server_id, limit), HttpStatus.OK);
return new ResponseEntity<>(onlineUpdater.getPeakOfDays(server_id, limit,
"online;sid=" + server_id + ";limit=" + limit), HttpStatus.OK);
}
@GetMapping("/graph/peak/of/minutes")
@ -88,7 +89,8 @@ public class StatsController {
@RequestParam(required = false, defaultValue = "%") String server_id
) {
if (limit > 31) return new ResponseEntity<>(HttpStatus.NOT_ACCEPTABLE);
return new ResponseEntity<>(onlineUpdater.getMaxPeakOfFiveMinutes(server_id, limit, minutes), HttpStatus.OK);
return new ResponseEntity<>(onlineUpdater.getMaxPeakOfFiveMinutes(server_id, limit, minutes,
"online;sid=" + server_id + ";limit=" + limit + ";minutes=" + minutes), HttpStatus.OK);
}

7
src/main/java/app/updates/OnlineUpdater.java

@ -7,6 +7,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.context.event.EventListener;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@ -131,7 +132,8 @@ GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
(rs, rowNum) -> new AvgPeakOfDay(rs));
}
public List<StatsOfPeakOfPerFiveMinutes> getMaxPeakOfFiveMinutes(String server_id, int limit, Integer minutes) {
@Cacheable(value = "graphs", key = "#cacheKey")
public List<StatsOfPeakOfPerFiveMinutes> getMaxPeakOfFiveMinutes(String server_id, int limit, Integer minutes, String cacheKey) {
long utime = LocalDate.now().minusDays(limit -1).toEpochSecond(LocalTime.MIN, ZoneOffset.ofHours(3));
return jdbcTemplate_ro.query("select round(sum(sub.player_count))::int as player_count, sub.ts as fulldate from ("+
"SELECT round(avg(player_count), 4) as player_count, date_bin('"+minutes+" minutes'"+",to_timestamp(utime)::timestamp, '2001-01-01 00:02:30') as ts "+
@ -145,7 +147,8 @@ GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
(rs, rowNum) -> new StatsOfPeakOfPerFiveMinutes(rs));
}
public List<StatsOfPeakOfDay> getPeakOfDays(String server_id, int limit) {
@Cacheable(value = "graphs", key = "#cacheKey")
public List<StatsOfPeakOfDay> getPeakOfDays(String server_id, int limit, String cacheKey) {
List<MaxPeakOfDay> maxPeakOfDays = getMaxPeakOfDays(server_id, limit);
List<AvgPeakOfDay> avgPeakOfDays = getAvgPeakOfDays(server_id, limit);
List<StatsOfPeakOfDay> statsOfPeakOfDays = new ArrayList<>();

Loading…
Cancel
Save