From 499fd7f8e81fdb4ba1d8a5e03f09c0b70e6441ec Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Thu, 26 Mar 2026 19:07:09 +0100 Subject: [PATCH] fix: accept ISO datetime for audit log from/to parameters The frontend sends full ISO timestamps (e.g. 2026-03-19T17:55:29Z) but the controller expected LocalDate (yyyy-MM-dd). This caused null parsing, which threw NullPointerException in the repository WHERE clause. Changed to accept Instant directly with sensible defaults (last 7 days). Co-Authored-By: Claude Opus 4.6 (1M context) --- .../server/app/controller/AuditLogController.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java index e0ee7db4..92bcb7ac 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/controller/AuditLogController.java @@ -19,8 +19,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.time.Instant; -import java.time.LocalDate; -import java.time.ZoneOffset; @RestController @RequestMapping("/api/v1/admin/audit") @@ -43,8 +41,8 @@ public class AuditLogController { @RequestParam(required = false) String username, @RequestParam(required = false) String category, @RequestParam(required = false) String search, - @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate from, - @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate to, + @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Instant from, + @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) Instant to, @RequestParam(defaultValue = "timestamp") String sort, @RequestParam(defaultValue = "desc") String order, @RequestParam(defaultValue = "0") int page, @@ -52,8 +50,8 @@ public class AuditLogController { size = Math.min(size, 100); - Instant fromInstant = from != null ? from.atStartOfDay(ZoneOffset.UTC).toInstant() : null; - Instant toInstant = to != null ? to.plusDays(1).atStartOfDay(ZoneOffset.UTC).toInstant() : null; + Instant fromInstant = from != null ? from : Instant.now().minus(java.time.Duration.ofDays(7)); + Instant toInstant = to != null ? to : Instant.now(); AuditCategory cat = null; if (category != null && !category.isEmpty()) {