backend/src/main/java/dev/dinauer/maven/app/EventsResource.java
2026-03-15 12:55:38 +01:00

57 lines
1.3 KiB
Java

package dev.dinauer.maven.app;
import dev.dinauer.maven.user.User;
import dev.dinauer.maven.jpa.events.Event;
import dev.dinauer.maven.jpa.events.repo.EventRepo;
import dev.dinauer.maven.user.UserClient;
import io.quarkus.panache.common.Sort;
import io.quarkus.security.Authenticated;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.core.SecurityContext;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Path("/events")
public class EventsResource
{
@Inject
EventRepo eventRepo;
@RestClient
UserClient userClient;
@Inject
SecurityContext context;
@GET
@Authenticated
public List<Event> get()
{
return find(eventRepo.listAll(Sort.by("timestamp", Sort.Direction.Descending)));
}
private List<Event> find(List<Event> events)
{
Principal c = context.getUserPrincipal();
List<String> ids = new ArrayList<>();
for (Event event : events)
{
ids.add(event.getAccountId());
}
Map<String, User> accounts = userClient.get(ids);
for (Event event : events)
{
event.setAccount(accounts.get(event.getAccountId()));
}
return events;
}
}