From e90c5a46f1d00e6f926399fadc6877e1d9242bed Mon Sep 17 00:00:00 2001 From: Antonis Lempesis Date: Fri, 26 Jan 2024 14:41:21 +0200 Subject: [PATCH] Less verbose stats, more stats --- .../repositories/StatsDBRepository.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/DBAccess/src/main/java/gr/uoa/di/madgik/statstool/repositories/StatsDBRepository.java b/DBAccess/src/main/java/gr/uoa/di/madgik/statstool/repositories/StatsDBRepository.java index 27e75d6..ceb4a05 100644 --- a/DBAccess/src/main/java/gr/uoa/di/madgik/statstool/repositories/StatsDBRepository.java +++ b/DBAccess/src/main/java/gr/uoa/di/madgik/statstool/repositories/StatsDBRepository.java @@ -193,26 +193,23 @@ public void deleteEntry(String key) { public Map stats() { DatasourceContext.setContext(CACHE_DB_NAME); - Map stats = new HashMap<>(); + Map stats = new LinkedHashMap<>(); stats.put("total", jdbcTemplate.queryForObject("select count(*) from cache_entry",new Object[] {}, Integer.class)); stats.put("with_shadow", jdbcTemplate.queryForObject("select count(*) from cache_entry where shadow is not null",new Object[] {}, Integer.class)); - stats.put("top10", jdbcTemplate.query("select * from cache_entry where key not in ('SHADOW_STATS_NUMBERS', 'STATS_NUMBERS') order by total_hits", (rs, rowNum) -> { + stats.put("total.top10", jdbcTemplate.query("select * from cache_entry where key not in ('SHADOW_STATS_NUMBERS', 'STATS_NUMBERS') order by total_hits limit 10", (rs, rowNum) -> { CacheEntry entry = null; try { QueryWithParameters query = new ObjectMapper().readValue(rs.getString("query"), QueryWithParameters.class); String key = rs.getString("key"); - Result result = new ObjectMapper().readValue(rs.getString("result"), Result.class); - entry = new CacheEntry(key, query, result); + entry = new CacheEntry(key, query, null); if (rs.getTimestamp("created") != null) entry.setCreated(new Date(rs.getTimestamp("created").getTime())); if (rs.getTimestamp("updated") != null) entry.setUpdated(new Date(rs.getTimestamp("updated").getTime())); - if (rs.getString("shadow") != null) - entry.setShadowResult(new ObjectMapper().readValue(rs.getString("shadow"), Result.class)); entry.setTotalHits(rs.getInt("total_hits")); entry.setSessionHits(rs.getInt("session_hits")); @@ -223,7 +220,29 @@ public Map stats() { return entry; })); + stats.put("session.top10", jdbcTemplate.query("select * from cache_entry where key not in ('SHADOW_STATS_NUMBERS', 'STATS_NUMBERS') order by session_hits limit 10", (rs, rowNum) -> { + CacheEntry entry = null; + + try { + QueryWithParameters query = new ObjectMapper().readValue(rs.getString("query"), QueryWithParameters.class); + String key = rs.getString("key"); + + entry = new CacheEntry(key, query, null); + + if (rs.getTimestamp("created") != null) + entry.setCreated(new Date(rs.getTimestamp("created").getTime())); + if (rs.getTimestamp("updated") != null) + entry.setUpdated(new Date(rs.getTimestamp("updated").getTime())); + + entry.setTotalHits(rs.getInt("total_hits")); + entry.setSessionHits(rs.getInt("session_hits")); + entry.setPinned(rs.getBoolean("pinned")); + } catch (IOException e) { + log.error("Error reading entry", e); + } + return entry; + })); return stats; } }