order api + statistics

This commit is contained in:
2025-11-17 20:02:04 +01:00
parent fe15d11d7b
commit 8614366254
4 changed files with 65 additions and 3 deletions

View File

@@ -35,7 +35,7 @@
<dependency> <dependency>
<groupId>de.infinimotion</groupId> <groupId>de.infinimotion</groupId>
<artifactId>model-backend</artifactId> <artifactId>model-backend</artifactId>
<version>0.0.101</version> <version>0.0.110</version>
</dependency> </dependency>
<!-- Quarkus --> <!-- Quarkus -->

View File

@@ -0,0 +1,44 @@
package de.infinimotion.backend.endpoint;
import de.infinimotion.model.backend.*;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@ApplicationScoped
@Path("/order-transaction")
public class OrderTx {
@Inject
RequestReply requester;
@POST
@Path("/create")
public OrderTransaction createOrderTransaction(OrderTransaction orderTransaction) throws Exception {
CommandWrapper orderRequest = new CommandCreateBestellung(orderTransaction.getOrder()).serialize().generateIds();
Bestellung orderResponse = CommandCreateBestellungResponse.deserialize(requester.request(orderRequest)).getBestellung();
AtomicInteger countDown = new AtomicInteger(orderTransaction.getTickets().size());
List<Eintrittskarte> ticketResponses = orderTransaction.getTickets().stream().map(ticket -> {
try {
ticket.setOrder(orderResponse);
CommandWrapper ticketRequest = new CommandCreateEintrittskarte(ticket).serialize().tx(orderRequest);
if (countDown.decrementAndGet() == 0) {
ticketRequest.commit();
}
return CommandCreateEintrittskarteResponse.deserialize(requester.request(ticketRequest)).getEintrittskarte();
} catch (Exception e) {
throw new RuntimeException(e);
}
}).toList();
orderTransaction.setOrder(orderResponse);
orderTransaction.setTickets(ticketResponses);
return orderTransaction;
}
}

View File

@@ -15,10 +15,27 @@ public class Statistics {
@GET @GET
@Path("/list") @Path("/list")
public CommandListStatisticsResponse list() throws Exception { public StatisticsReduced list() throws Exception {
CommandListStatistics request = new CommandListStatistics(); CommandListStatistics request = new CommandListStatistics();
CommandWrapper requestWrapper = request.serialize().generateIds().commit(); CommandWrapper requestWrapper = request.serialize().generateIds().commit();
return CommandListStatisticsResponse.deserialize(requester.request(requestWrapper)); CommandListStatisticsResponse response = CommandListStatisticsResponse.deserialize(requester.request(requestWrapper));
StatisticsReduced stats = new StatisticsReduced();
stats.setMovies(response.getMovies().stream().map(movieStats -> {
StatisticsFilmReduced reduced = new StatisticsFilmReduced();
reduced.setMovie(movieStats.getMovie());
reduced.setTickets(movieStats.getTickets().size());
reduced.setEarnings(movieStats.getEarnings());
return reduced;
}).toList());
stats.setShows(response.getShows().stream().map(showStats -> {
StatisticsVorstellungReduced reduced = new StatisticsVorstellungReduced();
reduced.setShow(showStats.getShow());
reduced.setTickets(showStats.getTickets().size());
reduced.setEarnings(showStats.getEarnings());
return reduced;
}).toList());
return stats;
} }
} }

View File

@@ -20,6 +20,7 @@ mp.messaging.outgoing.command.connector=smallrye-kafka
mp.messaging.incoming.command-replies.connector=smallrye-kafka mp.messaging.incoming.command-replies.connector=smallrye-kafka
mp.messaging.incoming.command-replies.auto.offset.reset=earliest mp.messaging.incoming.command-replies.auto.offset.reset=earliest
mp.messaging.incoming.command-replies.assign-seek=0
omdb.api-key=2a3264fc omdb.api-key=2a3264fc
quarkus.rest-client.omdb-api.url=https://omdbapi.com/ quarkus.rest-client.omdb-api.url=https://omdbapi.com/