Bladeren bron

add-D4Metric-4.0

Qyanger 4 maanden geleden
bovenliggende
commit
4f9a8c6cd8

+ 3 - 2
src/main/java/com/demo/seecanalysisbackend/service/D4MetricsService.java

@@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 
 import java.time.Duration;
@@ -143,7 +142,7 @@ public class D4MetricsService {
         int page = 0;
 
         while (true) {
-            Pageable pageable = PageRequest.of(page, D4_QUERY_PAGE_SIZE, Sort.by(Sort.Direction.DESC, "timestamp"));
+            Pageable pageable = PageRequest.of(page, D4_QUERY_PAGE_SIZE);
             Page<LogEntry> pageResult = logEntryRepository.findByTimestampBetweenAndBizNameIn(startTime, endTime, d4Events, pageable);
             allLogs.addAll(pageResult.getContent());
 
@@ -153,6 +152,8 @@ public class D4MetricsService {
             page++;
         }
 
+        allLogs.sort(Comparator.comparing(LogEntry::getTimestamp, Comparator.nullsLast(Comparator.reverseOrder())));
+
         return allLogs;
     }
     

+ 18 - 1
src/main/java/com/demo/seecanalysisbackend/service/LogSearchService.java

@@ -14,7 +14,9 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 @Service
@@ -23,6 +25,7 @@ import java.util.stream.Collectors;
 public class LogSearchService {
     
     private final LogEntryRepository logEntryRepository;
+    private static final Map<String, String> SORT_FIELD_MAPPING = createSortFieldMapping();
     
     public LogSearchResponse searchLogs(LogSearchRequest request) {
         log.info("Searching logs with criteria: {}", request);
@@ -90,9 +93,23 @@ public class LogSearchService {
     private Pageable createPageable(LogSearchRequest request) {
         Sort.Direction direction = "asc".equalsIgnoreCase(request.getSortDirection()) ? 
             Sort.Direction.ASC : Sort.Direction.DESC;
+
+        String requestedSortBy = request.getSortBy() == null ? "timestamp" : request.getSortBy();
+        String actualSortField = SORT_FIELD_MAPPING.getOrDefault(requestedSortBy, requestedSortBy);
         
         return PageRequest.of(request.getPage(), request.getSize(), 
-            Sort.by(direction, request.getSortBy()));
+            Sort.by(direction, actualSortField));
+    }
+
+    private static Map<String, String> createSortFieldMapping() {
+        Map<String, String> mapping = new HashMap<>();
+        mapping.put("timestamp", "@timestamp");
+        mapping.put("level", "log_level");
+        mapping.put("serviceName", "service_name");
+        mapping.put("traceId", "trace_id");
+        mapping.put("spanId", "span_id");
+        mapping.put("bizName", "bizName");
+        return mapping;
     }
     
     private LogSearchResponse.LogEntryDto convertToDto(LogEntry logEntry) {