From e41d18bb04f8801336d595d7c94008b1ff4ac866 Mon Sep 17 00:00:00 2001 From: Ruan Bekker Date: Wed, 2 Apr 2025 23:03:31 +0000 Subject: [PATCH 1/5] :heavy_plus_sign: add rest-template dependency --- services/delivery-service/build.gradle | 1 + services/restaurant-service/build.gradle | 1 + 2 files changed, 2 insertions(+) diff --git a/services/delivery-service/build.gradle b/services/delivery-service/build.gradle index cad2333..307725b 100644 --- a/services/delivery-service/build.gradle +++ b/services/delivery-service/build.gradle @@ -12,6 +12,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-actuator' + implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.postgresql:postgresql' compileOnly 'org.projectlombok:lombok:1.18.28' diff --git a/services/restaurant-service/build.gradle b/services/restaurant-service/build.gradle index bcf4b23..1ad1f72 100644 --- a/services/restaurant-service/build.gradle +++ b/services/restaurant-service/build.gradle @@ -12,6 +12,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-actuator' + implementation 'org.springframework.boot:spring-boot-starter-webflux' implementation 'org.postgresql:postgresql' compileOnly 'org.projectlombok:lombok:1.18.28' From 11ab046ebaf333757225e806127a94ec5348f23c Mon Sep 17 00:00:00 2001 From: Ruan Bekker Date: Wed, 2 Apr 2025 23:32:26 +0000 Subject: [PATCH 2/5] :sparkles: make more readable --- gateway/src/main/resources/application.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gateway/src/main/resources/application.yml b/gateway/src/main/resources/application.yml index 5273656..bd88d15 100644 --- a/gateway/src/main/resources/application.yml +++ b/gateway/src/main/resources/application.yml @@ -11,10 +11,12 @@ spring: uri: http://order-service:8081 predicates: - Path=/api/orders/** + - id: restaurant-service uri: http://restaurant-service:8082 predicates: - Path=/api/restaurants/** + - id: delivery-service uri: http://delivery-service:8083 predicates: From 21c5aaf980266fcd3c0a8ad568001fcb485cc6d4 Mon Sep 17 00:00:00 2001 From: Ruan Bekker Date: Wed, 2 Apr 2025 23:32:40 +0000 Subject: [PATCH 3/5] :hammer: update scripts --- scripts/delivery.sh | 6 +++--- scripts/orders.sh | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/scripts/delivery.sh b/scripts/delivery.sh index d8fcd50..b483736 100644 --- a/scripts/delivery.sh +++ b/scripts/delivery.sh @@ -1,9 +1,9 @@ #!/usr/bin/env bash -# create new delivery +# create new delivery linked to an order curl -X POST http://localhost:8080/api/deliveries \ -H "Content-Type: application/json" \ - -d '{"orderId": 1, "driverName": "John Doe", "status": "Pending"}' + -d '{"orderId": 1, "driverName": "Jane Doe", "status": "In Transit"}' # list all deliveries @@ -14,7 +14,7 @@ curl -X PUT http://localhost:8080/api/deliveries/1/status \ -H "Content-Type: application/json" \ -d '"Delivered"' -# get specific delivery by id +# get delivery details with order info curl http://localhost:8080/api/deliveries/1 diff --git a/scripts/orders.sh b/scripts/orders.sh index 5fa5ffc..27648af 100644 --- a/scripts/orders.sh +++ b/scripts/orders.sh @@ -5,11 +5,10 @@ curl -X POST http://localhost:8080/api/orders \ -H "Content-Type: application/json" \ -d '{"customerName": "John Doe", "dishName": "Margherita Pizza", "status": "Pending", "restaurantId": 1}' - # list all orders curl http://localhost:8080/api/orders -# get a specific order by id +# get order details with restaurant info curl http://localhost:8080/api/orders/1 # update order status From 71628c8859ddb2445d731b1f672a0a6b684d3d70 Mon Sep 17 00:00:00 2001 From: Ruan Bekker Date: Wed, 2 Apr 2025 23:33:22 +0000 Subject: [PATCH 4/5] :sparkles: add calls via gateway --- .../controller/DeliveryController.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/services/delivery-service/src/main/java/com/ofds/delivery/controller/DeliveryController.java b/services/delivery-service/src/main/java/com/ofds/delivery/controller/DeliveryController.java index 1640b5a..911d74f 100644 --- a/services/delivery-service/src/main/java/com/ofds/delivery/controller/DeliveryController.java +++ b/services/delivery-service/src/main/java/com/ofds/delivery/controller/DeliveryController.java @@ -3,17 +3,21 @@ import com.ofds.delivery.model.Delivery; import com.ofds.delivery.repository.DeliveryRepository; import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/api/deliveries") public class DeliveryController { private final DeliveryRepository deliveryRepository; + private final RestTemplate restTemplate; public DeliveryController(DeliveryRepository deliveryRepository) { this.deliveryRepository = deliveryRepository; + this.restTemplate = new RestTemplate(); } @PostMapping @@ -27,6 +31,21 @@ public List listDeliveries() { return deliveryRepository.findAll(); } + @GetMapping("/{id}") + public Map getDeliveryWithOrder(@PathVariable Long id) { + return deliveryRepository.findById(id).map(delivery -> { + String orderUrl = "http://gateway:8080/api/orders/" + delivery.getOrderId(); + Map order = restTemplate.getForObject(orderUrl, Map.class); + + return Map.of( + "id", delivery.getId(), + "driverName", delivery.getDriverName(), + "status", delivery.getStatus(), + "order", order + ); + }).orElse(null); + } + @PutMapping("/{id}/status") public Delivery updateStatus(@PathVariable Long id, @RequestBody String status) { return deliveryRepository.findById(id).map(delivery -> { From 530056136d7c6fd3034f865cd168830c290a6751 Mon Sep 17 00:00:00 2001 From: Ruan Bekker Date: Wed, 2 Apr 2025 23:33:45 +0000 Subject: [PATCH 5/5] :sparkles: add resttemplate config --- .../ofds/delivery/config/RestTemplateConfig.java | 15 +++++++++++++++ .../com/ofds/order/config/RestTemplateConfig.java | 15 +++++++++++++++ .../restaurant/config/RestTemplateConfig.java | 15 +++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 services/delivery-service/src/main/java/com/ofds/delivery/config/RestTemplateConfig.java create mode 100644 services/order-service/src/main/java/com/ofds/order/config/RestTemplateConfig.java create mode 100644 services/restaurant-service/src/main/java/com/ofds/restaurant/config/RestTemplateConfig.java diff --git a/services/delivery-service/src/main/java/com/ofds/delivery/config/RestTemplateConfig.java b/services/delivery-service/src/main/java/com/ofds/delivery/config/RestTemplateConfig.java new file mode 100644 index 0000000..13aca3a --- /dev/null +++ b/services/delivery-service/src/main/java/com/ofds/delivery/config/RestTemplateConfig.java @@ -0,0 +1,15 @@ +package com.ofds.delivery.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} + diff --git a/services/order-service/src/main/java/com/ofds/order/config/RestTemplateConfig.java b/services/order-service/src/main/java/com/ofds/order/config/RestTemplateConfig.java new file mode 100644 index 0000000..0ff7fc4 --- /dev/null +++ b/services/order-service/src/main/java/com/ofds/order/config/RestTemplateConfig.java @@ -0,0 +1,15 @@ +package com.ofds.order.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} + diff --git a/services/restaurant-service/src/main/java/com/ofds/restaurant/config/RestTemplateConfig.java b/services/restaurant-service/src/main/java/com/ofds/restaurant/config/RestTemplateConfig.java new file mode 100644 index 0000000..640f643 --- /dev/null +++ b/services/restaurant-service/src/main/java/com/ofds/restaurant/config/RestTemplateConfig.java @@ -0,0 +1,15 @@ +package com.ofds.restaurant.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} +