From 0987b9b6b922f48fbaec4a134a52d7890e773713 Mon Sep 17 00:00:00 2001 From: Lars Skyum Date: Tue, 14 Jan 2025 14:31:33 +0100 Subject: [PATCH] Add first installment of queries + refactor: rename --- docker/docker-compose.infra.yml | 2 +- .../sbdemo/app/queries/BasketViewModel.java | 18 ++++++++++++++++++ .../outbox/OutboxServiceImpl.java | 8 ++++---- .../db/changelog/db.changelog-master.yaml | 4 +++- ...create-orders.sql => 001-create-basket.sql} | 0 .../db/migrations/002-query-basket.sql | 13 +++++++++++++ 6 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 services/basket-producer/src/main/java/lrskyum/sbdemo/app/queries/BasketViewModel.java rename services/basket-producer/src/main/resources/db/migrations/{001-create-orders.sql => 001-create-basket.sql} (100%) create mode 100644 services/basket-producer/src/main/resources/db/migrations/002-query-basket.sql diff --git a/docker/docker-compose.infra.yml b/docker/docker-compose.infra.yml index df53ccc..c0bddb3 100644 --- a/docker/docker-compose.infra.yml +++ b/docker/docker-compose.infra.yml @@ -17,7 +17,7 @@ services: - "9093:9093" - "9094:9094" healthcheck: - test: ["CMD", "kafka-topics.sh", "--bootstrap-server=localhost:9094", "--list"] + test: [ "CMD", "kafka-topics.sh", "--bootstrap-server=localhost:9094", "--list" ] interval: 3s timeout: 2s retries: 10 diff --git a/services/basket-producer/src/main/java/lrskyum/sbdemo/app/queries/BasketViewModel.java b/services/basket-producer/src/main/java/lrskyum/sbdemo/app/queries/BasketViewModel.java new file mode 100644 index 0000000..8febcd9 --- /dev/null +++ b/services/basket-producer/src/main/java/lrskyum/sbdemo/app/queries/BasketViewModel.java @@ -0,0 +1,18 @@ +package lrskyum.sbdemo.app.queries; + +import lrskyum.sbdemo.business.aggregates.basket.BasketStatus; +import lrskyum.sbdemo.business.aggregates.basket.PaymentMethod; + +import java.time.Instant; + +public class BasketViewModel { + public record BasketDto( + String externalId, + Instant basketDateUtc, + BasketStatus basketStatus, + String buyerName, + PaymentMethod paymentMethod, + String product, + Integer request_count) { + } +} diff --git a/services/basket-producer/src/main/java/lrskyum/sbdemo/infrastructure/outbox/OutboxServiceImpl.java b/services/basket-producer/src/main/java/lrskyum/sbdemo/infrastructure/outbox/OutboxServiceImpl.java index 55c3ca9..aff5ad2 100644 --- a/services/basket-producer/src/main/java/lrskyum/sbdemo/infrastructure/outbox/OutboxServiceImpl.java +++ b/services/basket-producer/src/main/java/lrskyum/sbdemo/infrastructure/outbox/OutboxServiceImpl.java @@ -51,12 +51,12 @@ public void saveEvent(IntegrationEvent event, String topic) { } } - private void updateEventStatus(OutboxEntry eventLogEntry, EventState eventState) { - eventLogEntry.setEventState(eventState); + private void updateEventStatus(OutboxEntry outboxEntry, EventState eventState) { + outboxEntry.setEventState(eventState); if (EventState.InProgress.equals(eventState)) - eventLogEntry.incrementTimesSent(); + outboxEntry.incrementTimesSent(); - outboxRepository.save(eventLogEntry).subscribe(); + outboxRepository.save(outboxEntry).subscribe(); } @SneakyThrows diff --git a/services/basket-producer/src/main/resources/db/changelog/db.changelog-master.yaml b/services/basket-producer/src/main/resources/db/changelog/db.changelog-master.yaml index a569dd8..b8fd959 100644 --- a/services/basket-producer/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/services/basket-producer/src/main/resources/db/changelog/db.changelog-master.yaml @@ -1,3 +1,5 @@ databaseChangeLog: - include: - file: db/migrations/001-create-orders.sql + file: db/migrations/001-create-basket.sql + - include: + file: db/migrations/002-query-basket.sql diff --git a/services/basket-producer/src/main/resources/db/migrations/001-create-orders.sql b/services/basket-producer/src/main/resources/db/migrations/001-create-basket.sql similarity index 100% rename from services/basket-producer/src/main/resources/db/migrations/001-create-orders.sql rename to services/basket-producer/src/main/resources/db/migrations/001-create-basket.sql diff --git a/services/basket-producer/src/main/resources/db/migrations/002-query-basket.sql b/services/basket-producer/src/main/resources/db/migrations/002-query-basket.sql new file mode 100644 index 0000000..06cca1e --- /dev/null +++ b/services/basket-producer/src/main/resources/db/migrations/002-query-basket.sql @@ -0,0 +1,13 @@ +create materialized view v_basket_request_count as +select b.ext_id, + b.basket_date_utc, + b.basket_status, + b.buyer_name, + b.payment_method, + b.product, + count(cr.ext_id) as request_count +from basket b + left outer join client_request cr + on b.ext_id = cr.ext_id +group by b.ext_id, b.basket_date_utc, b.basket_status, b.buyer_name, b.payment_method, b.product; +