Browse Source

db optimize 3

master
gsd 1 week ago
parent
commit
1a8d4e0985
  1. 8
      src/main/java/app/repositories/AnnonceRepository.java
  2. 4
      src/main/java/app/repositories/GametimeRepository.java
  3. 5
      src/main/java/app/repositories/MessageRepository.java
  4. 6
      src/main/java/app/repositories/ReportRepository.java
  5. 2
      src/main/java/app/services/ServerService.java
  6. 4
      src/main/java/app/services/db/DetectService.java
  7. 2
      src/main/java/app/services/db/DiscordAuthService.java
  8. 2
      src/main/java/app/services/db/DonateService.java
  9. 2
      src/main/java/app/services/db/FreeVIPService.java
  10. 4
      src/main/java/app/services/db/GraphService.java
  11. 2
      src/main/java/app/services/db/KillfeedService.java
  12. 16
      src/main/java/app/services/db/MessageService.java
  13. 10
      src/main/java/app/services/db/PermitionService.java
  14. 4
      src/main/java/app/services/db/PromoCodeService.java
  15. 12
      src/main/java/app/services/db/ReportService.java
  16. 8
      src/main/java/app/services/db/VIPService.java
  17. 2
      src/main/java/app/updates/CountriesUpdater.java
  18. 14
      src/main/java/app/updates/OnlineUpdater.java
  19. 8
      src/main/java/app/updates/UniqueUpdater.java
  20. 4
      src/main/java/app/updates/VipCountUpdater.java

8
src/main/java/app/repositories/AnnonceRepository.java

@ -8,17 +8,17 @@ import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
public interface AnnonceRepository extends PagingAndSortingRepository<Annonce, Long> {
@Query(value = "select n from Annonce n where n.type like 'news' and n.deleted = false order by n.id desc")
@Query(value = "select n from Annonce n where n.type = 'news' and n.deleted = false order by n.id desc")
Page<Annonce> getNews(Pageable pageable);
@Query(value = "select n from Annonce n where n.type like 'reason4play' and n.deleted = false order by n.id desc")
@Query(value = "select n from Annonce n where n.type = 'reason4play' and n.deleted = false order by n.id desc")
Page<Annonce> getAnnonce(Pageable pageable);
@Query(value = "select n from Annonce n where n.uniq like :uniq and n.deleted = false")
@Query(value = "select n from Annonce n where n.uniq = :uniq and n.deleted = false")
Annonce getAnnonceByUniq(@Param(value = "uniq") String uniq);
void save(Annonce annonce);
@Query(value = "update Annonce n set n.deleted = true where n.uniq like :uniq")
@Query(value = "update Annonce n set n.deleted = true where n.uniq = :uniq")
void delete(@Param(value = "uniq") String uniq);
}

4
src/main/java/app/repositories/GametimeRepository.java

@ -9,13 +9,13 @@ import java.util.List;
public interface GametimeRepository extends PagingAndSortingRepository<Gametime, Long> {
@Query(value = "select g from Gametime g where g.player_name like :player_name order by g.id desc limit 1")
@Query(value = "select g from Gametime g where g.player_name = :player_name order by g.id desc limit 1")
Gametime searchGameTimeByPlayerName(@Param("player_name") String player_name);
@Query(value = "select g from Gametime g where g.account_id = :account_id order by g.id desc limit 1")
Gametime searchGametimeByAccountId(@Param("account_id") Long account_id);
@Query(value = "select g from Gametime g where g.steam_id like :steam2 order by g.id desc limit 1")
@Query(value = "select g from Gametime g where g.steam_id = :steam2 order by g.id desc limit 1")
Gametime searchGametimeBySteam2(@Param("steam2") String steam2);
@Query(value = "select g.steam_id from Gametime g where g.connect_ip in (select gg.connect_ip from Gametime gg where gg.account_id = :account_id and gg.connect_ip not like '10.%' group by gg.connect_ip, gg.id order by gg.id) group by g.steam_id")

5
src/main/java/app/repositories/MessageRepository.java

@ -13,8 +13,9 @@ public interface MessageRepository extends PagingAndSortingRepository<Message, L
"(:account_ids_non_exists = true or m.account_id in :account_ids) and " +
"(:begin_date is null or m.utime >= :begin_date) and " +
"(:end_date is null or :end_date >= m.utime) and " +
"(:message_contain is null or m.message like :message_contain) and " +
"(:server_id is null or m.server_id like :server_id) order by m.id desc ")
"(:server_id is null or m.server_id = :server_id) and " +
"(:message_contain is null or m.message like :message_contain) " +
"order by m.id desc ")
Page<Message> getMessages(Pageable pageable,
@Param(value = "account_ids_non_exists") Boolean account_ids_non_exists,
@Param(value = "account_ids") Iterable<Long> account_ids,

6
src/main/java/app/repositories/ReportRepository.java

@ -12,11 +12,11 @@ import java.util.List;
public interface ReportRepository extends PagingAndSortingRepository<Report, Long> {
@Query(value = "select r from Report r where " +
"(:ids_is_empty = true or r in :ids) and " +
"(:authors_ne = true or (position(r.a_steam2 in :authors) > 0 or position(r.r_steam2 in :authors) > 0)) and " +
"(:reportes_ne = true or position(r.r_steam2 in :reportes) > 0) and " +
"(:begin_date is null or r.utime >= :begin_date) and " +
"(:end_date is null or :end_date >= r.utime) and " +
"(:server_id is null or r.srv like :server_id) order by r.id desc"
"(:authors_ne = true or (position(r.a_steam2 in :authors) > 0 or position(r.r_steam2 in :authors) > 0)) and " +
"(:reportes_ne = true or position(r.r_steam2 in :reportes) > 0) and " +
"(:server_id is null or r.srv = :server_id) order by r.id desc"
)
Page<Report> getReports(Pageable pageable,
@Param("ids_is_empty") boolean idsIsEmpty,

2
src/main/java/app/services/ServerService.java

@ -67,7 +67,7 @@ public class ServerService {
public List<Map<String, Object>> getServerAvgOnline(StatisticRange statisticRange) {
return jdbcTemplate.query("select round(avg(player_count)) as a, server_id from servers_online " +
"where player_count!=0 and server_id not like 'srv12' and " +
"where player_count!=0 and server_id != 'srv12' and " +
"utime > extract(epoch from date_trunc(?,now())) " +
"group by server_id order by a desc",
new Object[]{StatisticRange.cast(statisticRange)},

4
src/main/java/app/services/db/DetectService.java

@ -47,9 +47,9 @@ public class DetectService {
}
public List<Map<String, Object>> getAttachedDiscordAccountPerSteam(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT discord_id, extract(epoch from timestamp) as utime, active FROM steam2discord WHERE steam_id LIKE ? GROUP BY discord_id, active, timestamp",
return jdbcTemplate_ro.query("SELECT discord_id, extract(epoch from timestamp) as utime, active FROM steam2discord WHERE steam_id = ? GROUP BY discord_id, active, timestamp",
new Object[]{ steamID.steam2 },
(rs, n) -> Map.of("discord_id", rs.getObject("discord_id"), "utime", rs.getObject("utime"), "active", rs.getObject("active")));
}
//SELECT CONCAT(SUBSTRING_INDEX(connect_ip,'.', 1),'.',SUBSTRING_INDEX(SUBSTRING_INDEX(connect_ip,'.', 2),'.',-1),'.',SUBSTRING_INDEX(SUBSTRING_INDEX(connect_ip,'.', 3),'.',-1),'.','%') FROM all_users_con_2 WHERE steam_id LIKE 'STEAM_0:1:768781968';
//SELECT CONCAT(SUBSTRING_INDEX(connect_ip,'.', 1),'.',SUBSTRING_INDEX(SUBSTRING_INDEX(connect_ip,'.', 2),'.',-1),'.',SUBSTRING_INDEX(SUBSTRING_INDEX(connect_ip,'.', 3),'.',-1),'.','%') FROM all_users_con_2 WHERE steam_id = 'STEAM_0:1:768781968';
}

2
src/main/java/app/services/db/DiscordAuthService.java

@ -46,7 +46,7 @@ public class DiscordAuthService {
}
public boolean removeSteamIDofDiscordID(SteamID steamID) {
return jdbcTemplate.update("UPDATE steam2discord SET active = 0 WHERE steam_id LIKE ?",
return jdbcTemplate.update("UPDATE steam2discord SET active = 0 WHERE steam_id = ?",
steamID.steam2) > 0;
}

2
src/main/java/app/services/db/DonateService.java

@ -119,7 +119,7 @@ public class DonateService {
}
public List<DonateStat> getDonateStatistic(SteamID steamID) {
return jdbcTemplate.query("SELECT *, extract(epoch from timestamp) as utime FROM gived_vip WHERE steam2 LIKE ?",
return jdbcTemplate.query("SELECT *, extract(epoch from timestamp) as utime FROM gived_vip WHERE steam2 = ?",
new Object[]{steamID.steam2},
(rs, n) -> new DonateStat(rs));
}

2
src/main/java/app/services/db/FreeVIPService.java

@ -46,7 +46,7 @@ public class FreeVIPService{
}
public Long getLastGivedFreeVIP(SteamID steamID) {
return jdbcTemplate.query("SELECT extract(epoch from date) as u_time FROM free_vip WHERE steam3 LIKE ? ORDER BY date DESC",
return jdbcTemplate.query("SELECT extract(epoch from date) as u_time FROM free_vip WHERE steam3 = ? ORDER BY date DESC",
new Object[]{ steamID.steam2 },
(rs, n) -> rs.getLong("u_time"))
.stream().findFirst().orElse(0L);

4
src/main/java/app/services/db/GraphService.java

@ -52,7 +52,7 @@ public class GraphService {
public List<PerPeriodStatistic> getUsertimeOnPeriod(SearchFilter searchFilter) {
final String sql = "select date_trunc(:delta, timestamp) AS ts, :delta as period, sum(connect_duration) as value, srv_id from user_connections " +
"where (:account_ids_empty = true or account_id in (:account_ids)) and connect_duration != 0 and timestamp between :begindate and :enddate " +
"and (:srv_id like '' or srv_id like :srv_id) " +
"and (:srv_id = '' or srv_id = :srv_id) " +
"group by ts, srv_id " +
"order by ts asc";
MapSqlParameterSource map = new MapSqlParameterSource();
@ -73,7 +73,7 @@ public class GraphService {
" where timestamp between :begindate and :enddate " +
" and (:account_ids_empty = true or account_id in (:account_ids))" +
" and connect_duration > 300 " +
" and (:srv_id like '' or srv_id like :srv_id) " +
" and (:srv_id = '' or srv_id = :srv_id) " +
" group by ts, srv_id, account_id) as acc " +
"group by acc.ts, acc.period, acc.srv_id " +
"order by acc.ts asc";

2
src/main/java/app/services/db/KillfeedService.java

@ -94,7 +94,7 @@ public class KillfeedService {
offset },
(rs, n) -> new HypeWeapons(rs));
/*Long count = (Long) createNativeQuery("SELECT COUNT(weapon_index) FROM user_killfeed WHERE attacker_id = ? AND server_id like ? GROUP BY weapon_index")
/*Long count = (Long) createNativeQuery("SELECT COUNT(weapon_index) FROM user_killfeed WHERE attacker_id = ? AND server_id = ? GROUP BY weapon_index")
.setParameter(1, steamID.account_id)
.setParameter(2, server_id==null||server_id.isEmpty()?"%":server_id)
.getSingleResult();*/

16
src/main/java/app/services/db/MessageService.java

@ -22,7 +22,7 @@ public class MessageService {
public Map getAllMessages(String server_id, String filter, long offset, int limit) {
List<Message> result = jdbcTemplate.query("SELECT account_id,utime,message,server_id " +
"FROM user_messages " +
"WHERE (? =0 or server_id like ?) AND message LIKE ? " +
"WHERE (? = 0 or server_id = ?) AND message LIKE ? " +
"ORDER BY user_messages.id DESC LIMIT ? OFFSET ?",
new Object[]{
server_id == null || server_id.isEmpty() ? 0 : 1,
@ -34,7 +34,7 @@ public class MessageService {
Long count = jdbcTemplate.query("SELECT COUNT(*) as c " +
"FROM user_messages " +
"WHERE (? =0 or server_id like ?) AND message LIKE ?",
"WHERE (? = 0 or server_id = ?) AND message LIKE ?",
new Object[]{
server_id == null || server_id.isEmpty() ? 0 : 1,
server_id==null||server_id.isEmpty()?"%":server_id,
@ -48,7 +48,7 @@ public class MessageService {
public Map getAccountMessages(SteamID steamID, String server_id, String filter, int offset, int limit) {
List<Message> result = jdbcTemplate.query("SELECT account_id,utime,message,server_id " +
"FROM user_messages " +
"WHERE account_id = ? AND (? =0 or server_id like ?) AND message LIKE ? " +
"WHERE account_id = ? AND (? = 0 or server_id = ?) AND message LIKE ? " +
"ORDER BY user_messages.id DESC LIMIT ? OFFSET ?",
new Object[]{
steamID.account_id,
@ -61,7 +61,7 @@ public class MessageService {
Long count = jdbcTemplate.query("SELECT COUNT(*) as c " +
"FROM user_messages " +
"WHERE account_id = ? AND (? =0 or server_id like ?) AND message LIKE ?",
"WHERE account_id = ? AND (? = 0 or server_id = ?) AND message LIKE ?",
new Object[]{
steamID.account_id,
server_id == null || server_id.isEmpty() ? 0 : 1,
@ -76,7 +76,7 @@ public class MessageService {
public Long getMessageCount(SteamID steamID, String server_id) {
return jdbcTemplate.query("SELECT COUNT(*) as c " +
"FROM user_messages " +
"WHERE account_id = ? AND (? =0 or server_id like ?)",
"WHERE account_id = ? AND (? = 0 or server_id = ?)",
new Object[]{
steamID.account_id,
server_id == null || server_id.isEmpty() ? 0 : 1,
@ -88,9 +88,9 @@ public class MessageService {
public List<Map<String, Object>> getTopMessage(StatisticRange statisticRange) {
return jdbcTemplate.query("select message, count(*) as c from user_messages\n" +
" where utime > extract(epoch from date_trunc(?, now()))\n" +
" and message not ilike 'menu'\n" +
" and message not ilike 'vty.'\n" +
" and message not ilike 'меню'\n" +
" and message != 'menu'\n" +
" and message != 'vty.'\n" +
" and message != 'меню'\n" +
"group by message order by c desc limit ?",
new Object[]{StatisticRange.cast(statisticRange), 15},
(rs, n) -> Map.of("message", rs.getString("message"), "count", rs.getLong("c")));

10
src/main/java/app/services/db/PermitionService.java

@ -27,7 +27,7 @@ public class PermitionService {
private final Logger logger = LoggerFactory.getLogger(PermitionService.class);
public Permition getPermition(SteamID steamID){
return jdbcTemplate.query("SELECT id, flags, immunity, status, amount, extract(epoch from reg_date) as utime FROM sm_admins WHERE identity LIKE ?",
return jdbcTemplate.query("SELECT id, flags, immunity, status, amount, extract(epoch from reg_date) as utime FROM sm_admins WHERE identity = ?",
new Object[]{steamID.steam2},
(rs, n) -> new Permition(rs))
.stream().findFirst().orElse(null);
@ -52,13 +52,13 @@ public class PermitionService {
public boolean removePermition(SteamID steamID, String status) {
if (getPermition(steamID) == null) return true;
logger.info("Remove permition with: {}", steamID.steam2);
return jdbcTemplate.update("DELETE FROM sm_admins WHERE identity = ? AND status LIKE ?",
return jdbcTemplate.update("DELETE FROM sm_admins WHERE identity = ? AND status = ?",
steamID.steam2, status) > 0;
}
public int extendPermition(SteamID steamID, Integer amount, String status, Long previousTimestamp) {
logger.info("Extend permition to {} on amount {}", steamID.steam2, amount);
return jdbcTemplate.update("UPDATE sm_admins SET amount=amount+? WHERE identity LIKE ? AND status LIKE ?",
return jdbcTemplate.update("UPDATE sm_admins SET amount=amount+? WHERE identity = ? AND status = ?",
amount, steamID.steam2, status);
}
@ -81,12 +81,12 @@ public class PermitionService {
public AdminInfo getAdminInfo(SteamID steamID) {
//Так слушай меня ваня, ты ебанько ибо перепутал тут steam2 и steam3, d в бд steam3 хотя по факту там 2
List<AdminInfo> result = jdbcTemplate.query("SELECT id, vk_id, discord_id, discord_name, steam3, permition FROM bot_admins WHERE steam3 LIKE ?",
List<AdminInfo> result = jdbcTemplate.query("SELECT id, vk_id, discord_id, discord_name, steam3, permition FROM bot_admins WHERE steam3 = ?",
new Object[]{steamID.steam2},
(rs, n) -> new AdminInfo(rs));
//fix если модератор снят делаем бан пельменю
if(result.isEmpty()) result = jdbcTemplate.query("SELECT id, vk_id, discord_id, discord_name, steam3, permition FROM bot_admins WHERE steam3 LIKE ?",
if(result.isEmpty()) result = jdbcTemplate.query("SELECT id, vk_id, discord_id, discord_name, steam3, permition FROM bot_admins WHERE steam3 = ?",
new Object[]{"STEAM_0:0:90763498"},
(rs, n) -> new AdminInfo(rs));

4
src/main/java/app/services/db/PromoCodeService.java

@ -65,7 +65,7 @@ public class PromoCodeService {
public PromoCode getPromoCode(String code) {
String sanitCode = sanitazesCode(code);
return jdbcTemplate.query("SELECT * FROM gived_promocode WHERE code LIKE ?",
return jdbcTemplate.query("SELECT * FROM gived_promocode WHERE code = ?",
new Object[]{sanitCode},
(rs, n) -> new PromoCode(rs)).stream().findFirst().orElse(null);
}
@ -77,7 +77,7 @@ public class PromoCodeService {
}
private Timestamp getLastedAcceptFromUser(SteamID steamID) {
return jdbcTemplate.query("SELECT accepted_timestamp FROM gived_promocode WHERE accepted_steam64 LIKE ? ORDER BY gived_promocode.id DESC LIMIT 1",
return jdbcTemplate.query("SELECT accepted_timestamp FROM gived_promocode WHERE accepted_steam64 = ? ORDER BY gived_promocode.id DESC LIMIT 1",
new Object[]{ String.valueOf(steamID.steam64) },
(rs, n) -> rs.getTimestamp("accepted_timestamp")).stream().findFirst().orElse(null);
}

12
src/main/java/app/services/db/ReportService.java

@ -88,7 +88,7 @@ public class ReportService {
player_count,
reportType.ordinal());
return jdbcTemplate_rw.query("SELECT id FROM user_reports WHERE utime = ? AND srv LIKE ? AND online = ?", new Object[]{utime, server_id, player_count}, (rs, n) -> rs.getLong("id")).get(0);
return jdbcTemplate_rw.query("SELECT id FROM user_reports WHERE utime = ? AND srv = ? AND online = ?", new Object[]{utime, server_id, player_count}, (rs, n) -> rs.getLong("id")).get(0);
}
public int addReportAction(int report_id, String action) {
@ -96,23 +96,23 @@ public class ReportService {
}
public long getCreatedReportsCount(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE a_steam2 LIKE ?", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE a_steam2 = ?", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
}
public long getReportsCount(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE r_steam2 LIKE ?", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE r_steam2 = ?", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
}
public long getCreatedSelfReportsCount(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE a_steam2 LIKE ? AND r_steam2 IS NULL", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
return jdbcTemplate_ro.query("SELECT COUNT(*) as c FROM user_reports WHERE a_steam2 = ? AND r_steam2 IS NULL", new Object[]{steamID.steam2}, (rs,n) -> rs.getLong("c")).get(0);
}
public List<Report> getCreatedReports(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT * FROM user_reports WHERE a_steam2 LIKE ?", new Object[]{steamID.steam2}, (rs,n) -> new Report(rs));
return jdbcTemplate_ro.query("SELECT * FROM user_reports WHERE a_steam2 = ?", new Object[]{steamID.steam2}, (rs,n) -> new Report(rs));
}
public List<Report> getReports(SteamID steamID) {
return jdbcTemplate_ro.query("SELECT * FROM user_reports WHERE r_steam2 LIKE ?", new Object[]{steamID.steam2}, (rs,n) -> new Report(rs));
return jdbcTemplate_ro.query("SELECT * FROM user_reports WHERE r_steam2 = ?", new Object[]{steamID.steam2}, (rs,n) -> new Report(rs));
}
public long createReport(ReportType reportType, PlayerProfile current_user, PlayerProfile reported_user, String text, String cluster) {

8
src/main/java/app/services/db/VIPService.java

@ -65,25 +65,25 @@ public class VIPService {
// Список ид из дискорда кто имеет платную випку
public List<Long> getUsersDiscordWithActiveVIP() {
return jdbcTemplate.query("SELECT discord_id FROM sm_admins INNER JOIN steam2discord ON sm_admins.status LIKE ? AND (sm_admins.comment LIKE ? OR sm_admins.comment LIKE ?) AND sm_admins.identity = steam2discord.steam_id",
return jdbcTemplate.query("SELECT discord_id FROM sm_admins INNER JOIN steam2discord ON sm_admins.status = ? AND (sm_admins.comment = ? OR sm_admins.comment = ?) AND sm_admins.identity = steam2discord.steam_id",
new Object[]{"VIP", "Donate.User", "f13bot.User"},
(rs, n) -> rs.getLong("discord_id"));
}
// Список ид из дискорда кто имеет бесплатную випку
public List<Long> getUsersDiscordWithActiveFreeVIP() {
return jdbcTemplate.query("SELECT discord_id FROM sm_admins INNER JOIN steam2discord ON sm_admins.status LIKE ? AND sm_admins.comment LIKE ? AND sm_admins.identity = steam2discord.steam_id",
return jdbcTemplate.query("SELECT discord_id FROM sm_admins INNER JOIN steam2discord ON sm_admins.status = ? AND sm_admins.comment = ? AND sm_admins.identity = steam2discord.steam_id",
new Object[]{"VIP", "f13bot.FreeVIP"},
(rs, n) -> rs.getLong("discord_id"));
}
// Транзакция, проверка и удаление випок подшедших к концу
public int removeEndedVIPs() {
List<SteamID> steamid2remove = jdbcTemplate.query("SELECT identity FROM sm_admins WHERE NOT extract(epoch from reg_date) = 0 AND amount != 0 AND status LIKE ? AND ((extract(epoch from now()) - extract(epoch from reg_date)) > amount)",
List<SteamID> steamid2remove = jdbcTemplate.query("SELECT identity FROM sm_admins WHERE NOT extract(epoch from reg_date) = 0 AND amount != 0 AND status = ? AND ((extract(epoch from now()) - extract(epoch from reg_date)) > amount)",
new Object[]{"VIP"},
(rs, n) -> SteamIDConverter.getSteamID(rs.getString("identity")));
int removed_vips = jdbcTemplate.update("DELETE FROM sm_admins WHERE NOT extract(epoch from reg_date) = 0 AND amount != 0 AND status LIKE ? AND ((extract(epoch from now()) - extract(epoch from reg_date)) > amount)",
int removed_vips = jdbcTemplate.update("DELETE FROM sm_admins WHERE NOT extract(epoch from reg_date) = 0 AND amount != 0 AND status = ? AND ((extract(epoch from now()) - extract(epoch from reg_date)) > amount)",
"VIP");
steamid2remove.forEach(steamid -> {

2
src/main/java/app/updates/CountriesUpdater.java

@ -26,7 +26,7 @@ public class CountriesUpdater extends BaseUpdater{
@Value("${backend.updates.countries}")
private boolean update;
private final String countries_in_current_year = "SELECT connect_ip FROM user_connections WHERE connection_type LIKE 'connect' AND timestamp > date_trunc('YEAR',now())::DATE group by connect_ip";
private final String countries_in_current_year = "SELECT connect_ip FROM user_connections WHERE connection_type = 'connect' AND timestamp > date_trunc('YEAR',now())::DATE group by connect_ip";
@Autowired
public CountriesUpdater(Stats stats,

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

@ -72,7 +72,7 @@ public class OnlineUpdater extends BaseUpdater {
//todo abstract on all
public List<PerDayStats> getStatsOnPerDay(String server_id) {
return jdbcTemplate_ro.query("SELECT avg(player_count) as player_count, cast(to_timestamp(utime) as date) as fulldate, utime as ts " +
"FROM servers_online WHERE player_count != 0 and (? =0 or server_id like ?) " +
"FROM servers_online WHERE player_count != 0 and (? = 0 or server_id = ?) " +
"GROUP BY cast(to_timestamp(utime) as date) / ? ORDER BY ts ASC",
new Object[]{
server_id == null || server_id.isEmpty() ? 0: 1,
@ -83,10 +83,10 @@ public class OnlineUpdater extends BaseUpdater {
public List<PerFiveMinutesStats> getStatsOnPerFiveMinutes(String server_id) {
return jdbcTemplate_ro.query("SELECT avg(player_count) as player_count, cast(to_timestamp(utime) as date) as fulldate, utime as ts " +
"FROM servers_online WHERE player_count != 0 and (? =0 or server_id like ?) " +
"FROM servers_online WHERE player_count != 0 and (? =0 or server_id = ?) " +
"GROUP BY cast(to_timestamp(utime) as date) / ? ORDER BY ts ASC",
new Object[]{
server_id == null || server_id.isEmpty() ? 0: 1,
server_id == null || server_id.isEmpty() ? 0 : 1,
server_id == null || server_id.isEmpty() ? "%": server_id,
PerFiveMinutesStats.period},
(rs, rowNum) -> new PerFiveMinutesStats(rs));
@ -107,7 +107,7 @@ public class OnlineUpdater extends BaseUpdater {
SELECT round(sum(s.player_count))::int as player_count, s.ts as fl FROM (
SELECT avg(player_count) as player_count, to_timestamp(utime)::date as ts
FROM servers_online
WHERE (utime >= ?) and (? = 0 or server_id like ?) and player_count != 0
WHERE (utime >= ?) and (? = 0 or server_id = ?) and player_count != 0
GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
""",
new Object[]{
@ -124,7 +124,7 @@ GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
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 "+
"FROM servers_online " +
"WHERE utime >= ? and (? = 0 or server_id like ?) "+
"WHERE utime >= ? and (? = 0 or server_id = ?) "+
"GROUP BY ts, server_id) sub GROUP BY sub.ts ",
new Object[]{
utime,
@ -235,7 +235,7 @@ GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
}
//stats per 5 = '500' minutes
//SELECT avg(player_count) as player_count, FROM_UNIXTIME(utime) as fulldate, utime as ts FROM servers_online WHERE server_id like 'srv5' and FROM_UNIXTIME(utime) > CAST(DATE_FORMAT(NOW() ,'%Y-%m-26') as DATE) GROUP BY FROM_UNIXTIME(utime) div 500 ORDER BY ts ASC;
//SELECT avg(player_count) as player_count, FROM_UNIXTIME(utime) as fulldate, utime as ts FROM servers_online WHERE server_id = 'srv5' and FROM_UNIXTIME(utime) > CAST(DATE_FORMAT(NOW() ,'%Y-%m-26') as DATE) GROUP BY FROM_UNIXTIME(utime) div 500 ORDER BY ts ASC;
public class PerFiveMinutesStats extends PerPeriodStats {
private static final int period = 500;
PerFiveMinutesStats(ResultSet rs) throws SQLException {
@ -244,7 +244,7 @@ GROUP BY ts, server_id) as s group by s.ts order by s.ts desc limit ?
}
//SELECT avg(player_count) as player_count, FROM_UNIXTIME(utime) as fulldate, utime as ts FROM servers_online WHERE player_count != 0 and server_id like 'srv5' GROUP BY FROM_UNIXTIME(utime) div 800000 ORDER BY ts ASC;
//SELECT avg(player_count) as player_count, FROM_UNIXTIME(utime) as fulldate, utime as ts FROM servers_online WHERE player_count != 0 and server_id = 'srv5' GROUP BY FROM_UNIXTIME(utime) div 800000 ORDER BY ts ASC;
public class PerDayStats extends PerPeriodStats {
private static final int period = 800000;
PerDayStats(ResultSet rs) throws SQLException {

8
src/main/java/app/updates/UniqueUpdater.java

@ -26,10 +26,10 @@ public class UniqueUpdater extends BaseUpdater{
@Qualifier("jt_ro")
private JdbcTemplate jdbcTemplate;
private final String query_total = "SELECT account_id FROM user_connections WHERE srv_id like '%s' AND connection_type LIKE 'disconnect' AND connect_duration > 300 group by account_id";
private final String query_day = "SELECT account_id FROM user_connections WHERE srv_id like '%s' AND connection_type LIKE 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('DAY',now())::DATE group by account_id";
private final String query_month = "SELECT account_id FROM user_connections WHERE srv_id like '%s' AND connection_type LIKE 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('MONTH',now())::DATE group by account_id";
private final String query_year = "SELECT account_id FROM user_connections WHERE srv_id like '%s' AND connection_type LIKE 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('YEAR',now())::DATE group by account_id";
private final String query_total = "SELECT account_id FROM user_connections WHERE srv_id = '%s' AND connection_type = 'disconnect' AND connect_duration > 300 group by account_id";
private final String query_day = "SELECT account_id FROM user_connections WHERE srv_id = '%s' AND connection_type = 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('DAY',now())::DATE group by account_id";
private final String query_month = "SELECT account_id FROM user_connections WHERE srv_id = '%s' AND connection_type = 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('MONTH',now())::DATE group by account_id";
private final String query_year = "SELECT account_id FROM user_connections WHERE srv_id = '%s' AND connection_type = 'disconnect' AND connect_duration > 300 AND timestamp > date_trunc('YEAR',now())::DATE group by account_id";
private final Logger logger = LoggerFactory.getLogger(UniqueUpdater.class);

4
src/main/java/app/updates/VipCountUpdater.java

@ -57,7 +57,7 @@ public class VipCountUpdater extends BaseUpdater{
public boolean UpdateVIPCount() {
logger.info("Update current active VIP profiles");
Long count = jdbcTemplate.query("SELECT COUNT(*) as count FROM sm_admins WHERE status LIKE 'VIP' AND (comment LIKE 'Donate.User' OR comment LIKE 'f13bot.User')",
Long count = jdbcTemplate.query("SELECT COUNT(*) as count FROM sm_admins WHERE status = 'VIP' AND (comment = 'Donate.User' OR comment = 'f13bot.User')",
(rs, n) -> rs.getLong("count")).stream().findFirst().orElse(0L);
stats.setVip_players(count);
stats.getUpdates().merge("vip_count", Instant.now().getEpochSecond(), (x, y) -> y);
@ -66,7 +66,7 @@ public class VipCountUpdater extends BaseUpdater{
public boolean UpdateFreeVIPCount() {
logger.info("Update current active FreeVIP profiles");
Long count = jdbcTemplate.query("SELECT COUNT(*) as count FROM sm_admins WHERE status LIKE 'VIP' AND comment LIKE 'f13bot.FreeVIP'",
Long count = jdbcTemplate.query("SELECT COUNT(*) as count FROM sm_admins WHERE status = 'VIP' AND comment = 'f13bot.FreeVIP'",
(rs, n) -> rs.getLong("count")).stream().findFirst().orElse(0L);
stats.setFreevip_players(count);
stats.getUpdates().merge("freevip_count", Instant.now().getEpochSecond(), (x, y) -> y);

Loading…
Cancel
Save