Add API endpoint to retrieve total punishment counts

Introduced a new API endpoint `/history/total` for fetching the total counts of bans, mutes, kicks, and warnings. Added database mapping and DTO classes to support this functionality, along with necessary schema and controller updates.
This commit is contained in:
2025-04-11 23:27:20 +02:00
parent 807569a0a1
commit 44d28494e5
6 changed files with 107 additions and 7 deletions
@@ -0,0 +1,11 @@
package com.alttd.altitudeweb.database.litebans;
import lombok.Data;
@Data
public class HistoryCount {
private int bans;
private int mutes;
private int warnings;
private int kicks;
}
@@ -0,0 +1,20 @@
package com.alttd.altitudeweb.database.litebans;
import org.apache.ibatis.annotations.Select;
public interface HistoryCountMapper {
/**
* Gets the total count of punishments from all LiteBans tables.
*
* @return A PunishmentCount object containing counts from each table
*/
@Select({"""
SELECT
(SELECT COUNT(*) FROM litebans_bans) AS bans,
(SELECT COUNT(*) FROM litebans_mutes) AS mutes,
(SELECT COUNT(*) FROM litebans_warnings) AS warnings,
(SELECT COUNT(*) FROM litebans_kicks) AS kicks
"""
})
HistoryCount getPunishmentCounts();
}
@@ -1,9 +1,7 @@
package com.alttd.altitudeweb.setup;
import com.alttd.altitudeweb.database.Databases;
import com.alttd.altitudeweb.database.litebans.NameHistoryMapper;
import com.alttd.altitudeweb.database.litebans.RecentNamesMapper;
import com.alttd.altitudeweb.database.litebans.UUIDHistoryMapper;
import com.alttd.altitudeweb.database.litebans.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSession;
@@ -19,6 +17,7 @@ public class InitializeLiteBans {
configuration.addMapper(RecentNamesMapper.class);
configuration.addMapper(NameHistoryMapper.class);
configuration.addMapper(UUIDHistoryMapper.class);
configuration.addMapper(HistoryCountMapper.class);
}).join()
.runQuery(sqlSession -> {
createAllPunishmentsView(sqlSession);