From f9334d5210f5d4889b8863a05c4dbdbe5c7e9485 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Mon, 27 Jan 2025 21:09:46 +0100 Subject: [PATCH] [AB-xxx] always showing all emotes in emote stats output --- .../emote/repository/UsedEmoteRepository.java | 108 +++++++++++------- 1 file changed, 65 insertions(+), 43 deletions(-) diff --git a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/repository/UsedEmoteRepository.java b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/repository/UsedEmoteRepository.java index 1c48205ab..d1b818c6f 100644 --- a/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/repository/UsedEmoteRepository.java +++ b/abstracto-application/abstracto-modules/statistic/statistic-impl/src/main/java/dev/sheldan/abstracto/statistic/emote/repository/UsedEmoteRepository.java @@ -33,80 +33,102 @@ public interface UsedEmoteRepository extends JpaRepository findEmoteFromServerToday(@Param("emote_id") Long emoteId, @Param("server_id") Long server_id, @Param("used_emote_type") String usedEmoteType); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) and us.server_id = :server_id " + - "group by us.emote_id, us.server_id " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + + "where te.server_id = :server_id " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) and us.server_id = :server_id and te.external = true " + - "group by us.emote_id, us.server_id " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + + "where us.server_id = :server_id " + + "and te.external = true " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getExternalEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + - "and us.server_id = :server_id " + - "and te.external = true " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + "and us.type = :used_emote_type " + - "group by us.emote_id, us.server_id " + + "where te.server_id = :server_id " + + "and te.external = true " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getExternalEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since, @Param("used_emote_type") String usedEmoteType); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) and us.server_id = :server_id and te.deleted = true " + - "group by us.emote_id, us.server_id " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + + "and te.server_id = :server_id " + + "and te.deleted = true " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getDeletedEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + - "and us.server_id = :server_id " + - "and te.deleted = true " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + "and us.type = :used_emote_type " + - "group by us.emote_id, us.server_id " + + "where te.server_id = :server_id " + + "and te.deleted = true " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getDeletedEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since, @Param("used_emote_type") String usedEmoteType); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) and us.server_id = :server_id and te.external = false and te.deleted = false " + - "group by us.emote_id, us.server_id " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + + "where te.server_id = :server_id " + + "and te.external = false " + + "and te.deleted = false " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getCurrentlyExistingEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since); - @Query(value = "select us.emote_id as emoteId, us.server_id as serverId, sum(us.amount) as amount from used_emote us " + - "inner join tracked_emote te " + - "on us.emote_id = te.id and us.server_id = te.server_id " + - "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + - "and us.server_id = :server_id " + + @Query(value = "select te.id as emoteId, te.server_id as serverId, coalesce(sum(us.amount), 0) as amount " + + "from tracked_emote te " + + "left join used_emote us " + + "on us.emote_id = te.id " + + "and us.server_id = te.server_id " + + "and us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + + "and us.type = :used_emote_type " + + "where te.server_id = :server_id " + "and te.external = false " + "and te.deleted = false " + - "and us.type = :used_emote_type " + - "group by us.emote_id, us.server_id " + + "group by te.id, te.server_id " + "order by amount desc", nativeQuery = true) List getCurrentlyExistingEmoteStatsForServerSince(@Param("server_id") Long serverId, @Param("start_date") Instant since, @Param("used_emote_type") String usedEmoteType); - @Query(value = "select :tracked_emote_id as emoteId, :server_id as serverId, sum(us.amount) as amount " + + @Query(value = "select :tracked_emote_id as emoteId, :server_id as serverId, coalesce(sum(us.amount), 0) as amount " + "from used_emote us " + "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + "and us.server_id = :server_id " + "and us.emote_id = :tracked_emote_id", nativeQuery = true) EmoteStatsResult getEmoteStatForTrackedEmote(@Param("tracked_emote_id") Long trackedEmoteId, @Param("server_id") Long serverId, @Param("start_date") Instant since); - @Query(value = "select :tracked_emote_id as emoteId, :server_id as serverId, sum(us.amount) as amount " + + @Query(value = "select :tracked_emote_id as emoteId, :server_id as serverId, coalesce(sum(us.amount), 0) as amount " + "from used_emote us " + "where us.use_date >= date_trunc('day', cast(:start_date AS timestamp)) " + "and us.server_id = :server_id " +