diff --git a/pom.xml b/pom.xml
index aed25af..8127508 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,23 +13,24 @@
18
18
UTF-8
+ 3.0.2
org.springframework.boot
spring-boot-starter-web
- 3.0.2
+ ${spring.version}
org.springframework.boot
spring-boot-starter
- 3.0.2
+ ${spring.version}
org.springframework.boot
spring-boot-starter-websocket
- 3.0.2
+ ${spring.version}
com.fasterxml.jackson.core
@@ -50,7 +51,7 @@
org.springframework.boot
spring-boot-starter-data-jpa
- 3.0.2
+ ${spring.version}
org.postgresql
@@ -61,7 +62,7 @@
org.springframework.boot
spring-boot-starter-actuator
- 3.0.2
+ ${spring.version}
com.ibasco.agql
diff --git a/src/main/java/app/controllers/user/MessagesController.java b/src/main/java/app/controllers/user/MessagesController.java
index de31118..dc1bb11 100644
--- a/src/main/java/app/controllers/user/MessagesController.java
+++ b/src/main/java/app/controllers/user/MessagesController.java
@@ -21,6 +21,8 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
/**
* котроллер для пользователя, чтоб смотреть сообщения
*/
@@ -65,9 +67,12 @@ public class MessagesController {
public Page getMessagesWithFilters(Pageable pageable,
@RequestBody(required = false) MessageSearchFilter filter) {
if (filter == null) filter = new MessageSearchFilter();
+ List account_ids = filter.getAccounts(profileService);
+
Page messages = messageRepository.getMessages(
pageable,
- filter.getAccounts(profileService),
+ account_ids.isEmpty(),
+ account_ids,
filter.getBeginUnixTime(),
filter.getEndUnixTime(),
filter.getMessage(),
diff --git a/src/main/java/app/controllers/user/PublicController.java b/src/main/java/app/controllers/user/PublicController.java
index 0c321bf..1a88d73 100644
--- a/src/main/java/app/controllers/user/PublicController.java
+++ b/src/main/java/app/controllers/user/PublicController.java
@@ -19,6 +19,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
+import java.util.List;
/**
* контролллер для просмотра всякой хуйни, например банлиста (нахуя он отдельный, незнаю, захотел)
@@ -64,14 +65,18 @@ public class PublicController {
public ResponseEntity> getBanListWithFilters(Pageable pageable, @RequestBody(required = false) BanSearchFilter banSearchFilter) {
if (banSearchFilter == null) banSearchFilter = new BanSearchFilter();
+ List ban_ids = banSearchFilter.getBan_ids();
+ List account_ids = banSearchFilter.getAccounts(profileService);
+ List admin_ids = banSearchFilter.getAdminIds(profileService);
+
return new ResponseEntity<>(
banRepository.getBans(pageable,
- banSearchFilter.getBan_ids(),
- banSearchFilter.getAccounts(profileService),
+ ban_ids.isEmpty(), ban_ids,
+ account_ids.isEmpty(), account_ids,
banSearchFilter.getBeginUnixTime(),
banSearchFilter.getEndUnixTime(),
banSearchFilter.getActive(),
- banSearchFilter.getAdminIds(profileService))
+ admin_ids.isEmpty(), admin_ids)
, HttpStatus.OK);
}
}
diff --git a/src/main/java/app/entities/SearchFilter.java b/src/main/java/app/entities/SearchFilter.java
index 238b85a..b81d82b 100644
--- a/src/main/java/app/entities/SearchFilter.java
+++ b/src/main/java/app/entities/SearchFilter.java
@@ -6,6 +6,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import java.sql.Timestamp;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -19,14 +20,13 @@ public abstract class SearchFilter {
private String serverId = null;
public List getAccounts(ProfileService profileService) {
- if (accounts == null || accounts.isEmpty()) return null;
+ if (accounts == null || accounts.isEmpty()) return new ArrayList<>();
- List filtered = accounts.stream()
+ return accounts.stream()
.map(profileService::GetSteamIDFromAnyData)
.filter(Objects::nonNull)
.map(sId -> sId.account_id)
.toList();
- return filtered.isEmpty()?null:filtered;
}
public Long getBeginUnixTime() {
diff --git a/src/main/java/app/entities/db/ban/BanSearchFilter.java b/src/main/java/app/entities/db/ban/BanSearchFilter.java
index 14cf98b..4547eb9 100644
--- a/src/main/java/app/entities/db/ban/BanSearchFilter.java
+++ b/src/main/java/app/entities/db/ban/BanSearchFilter.java
@@ -4,6 +4,7 @@ import app.entities.SearchFilter;
import app.services.ProfileService;
import lombok.Setter;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -17,7 +18,7 @@ public class BanSearchFilter extends SearchFilter {
}
public List getBan_ids() {
- return ban_ids == null || ban_ids.isEmpty() ? null : ban_ids;
+ return ban_ids == null ? new ArrayList<>() : ban_ids;
}
public Boolean getActive() {
@@ -25,13 +26,12 @@ public class BanSearchFilter extends SearchFilter {
}
public List getAdminIds(ProfileService profileService) {
- if (admin_ids == null || admin_ids.isEmpty()) return null;
+ if (admin_ids == null || admin_ids.isEmpty()) return new ArrayList<>();
- List filtered = admin_ids.stream()
+ return admin_ids.stream()
.map(profileService::GetSteamIDFromAnyData)
.filter(Objects::nonNull)
.map(sId -> sId.steam3)
.toList();
- return filtered.isEmpty() ? null : filtered;
}
}
diff --git a/src/main/java/app/repositories/BanRepository.java b/src/main/java/app/repositories/BanRepository.java
index 75e5716..57109f9 100644
--- a/src/main/java/app/repositories/BanRepository.java
+++ b/src/main/java/app/repositories/BanRepository.java
@@ -13,17 +13,20 @@ import java.util.List;
public interface BanRepository extends PagingAndSortingRepository {
@Query(value = "select b from Ban b where " +
- "(:ban_ids is null or b.id in :ban_ids) and " +
- "(:account_ids is null or b.account_id in :account_ids) and " +
+ "(:ban_ids_non_exists = true or b.id in :ban_ids) and " +
+ "(:account_ids_non_exists = true or b.account_id in :account_ids) and " +
"(:begin_date is null or DATE_PART('EPOCH', b.timestamp) >= :begin_date) and " +
"(:end_date is null or :end_date <= DATE_PART('EPOCH', b.timestamp)) and " +
"(:active is null or b.active = :active) and " +
- "(:admin_ids is null or b.unbanned_by_id in :admin_ids) order by b.id desc")
+ "(:admin_ids_non_exists = true or b.unbanned_by_id in :admin_ids) order by b.id desc")
Page getBans(Pageable pageable,
+ @Param(value = "ban_ids_non_exists") Boolean ban_ids_non_exists,
@Param(value = "ban_ids") Iterable ban_ids,
+ @Param(value = "account_ids_non_exists") Boolean account_ids_non_exists,
@Param(value = "account_ids") Iterable account_ids,
@Param(value = "begin_date") Long begin_date,
@Param(value = "end_date") Long end_date,
@Param(value = "active") Boolean active,
+ @Param(value = "admin_ids_non_exists") Boolean admin_ids_non_exists,
@Param(value = "admin_ids") Iterable admin_ids);
}
diff --git a/src/main/java/app/repositories/MessageRepository.java b/src/main/java/app/repositories/MessageRepository.java
index 9f6d376..d60a022 100644
--- a/src/main/java/app/repositories/MessageRepository.java
+++ b/src/main/java/app/repositories/MessageRepository.java
@@ -10,12 +10,13 @@ import org.springframework.data.repository.query.Param;
public interface MessageRepository extends PagingAndSortingRepository {
@Query(value = "select m from Message m where " +
- "(:account_ids is null or m.account_id in :account_ids) and " +
+ "(: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 ")
Page getMessages(Pageable pageable,
+ @Param(value = "account_ids_non_exists") Boolean account_ids_non_exists,
@Param(value = "account_ids") Iterable account_ids,
@Param(value = "begin_date") Long begin_date,
@Param(value = "end_date") Long end_date,