diff --git a/pom.xml b/pom.xml
index 1040229..e6ccb8c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,7 +91,7 @@
com.github.Podzilla
podzilla-utils-lib
- v1.1.12
+ v1.1.13
diff --git a/src/main/java/com/podzilla/order/controller/OrderController.java b/src/main/java/com/podzilla/order/controller/OrderController.java
index c0378a4..acf7576 100644
--- a/src/main/java/com/podzilla/order/controller/OrderController.java
+++ b/src/main/java/com/podzilla/order/controller/OrderController.java
@@ -1,5 +1,11 @@
package com.podzilla.order.controller;
+import com.podzilla.mq.EventPublisher;
+import com.podzilla.mq.EventsConstants;
+import com.podzilla.mq.events.CartCheckedoutEvent;
+import com.podzilla.mq.events.ConfirmationType;
+import com.podzilla.mq.events.DeliveryAddress;
+import com.podzilla.mq.events.OrderItem;
import com.podzilla.order.model.Order;
import com.podzilla.order.model.OrderLocation;
import com.podzilla.order.model.OrderStatus;
@@ -22,6 +28,8 @@
import org.slf4j.LoggerFactory;
+import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
@@ -32,12 +40,14 @@
public class OrderController {
private final OrderService orderService;
+ private final EventPublisher eventPublisher;
private static final Logger LOGGER =
LoggerFactory.getLogger(OrderController.class);
@Autowired
- public OrderController(final OrderService orderService) {
+ public OrderController(final OrderService orderService, final EventPublisher eventPublisher) {
this.orderService = orderService;
+ this.eventPublisher = eventPublisher;
}
@@ -79,6 +89,33 @@ public ResponseEntity getOrderById(@PathVariable final UUID id) {
}
+ @GetMapping("/testEventPublisher")
+ public ResponseEntity testEventPublisher() {
+ LOGGER.info("Testing Event Publisher");
+ List orderItems = new ArrayList<>();
+ orderItems.add(new OrderItem(UUID.randomUUID().toString(), 5, new BigDecimal(100.0)));
+ DeliveryAddress deliveryAddress = new DeliveryAddress(
+ "123 Main St",
+ "Springfield",
+ "IL",
+ "USA",
+ "62701"
+ );
+ CartCheckedoutEvent event = new CartCheckedoutEvent(
+ UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(),
+ orderItems,
+ new BigDecimal(500.0),
+ deliveryAddress,
+ 10.0,
+ 20.0,
+ "signature",
+ ConfirmationType.SIGNATURE
+ );
+ eventPublisher.publishEvent(EventsConstants.CART_CHECKEDOUT, event);
+ return ResponseEntity.ok("Event published successfully");
+ }
+
@PatchMapping("/{id}")
@Operation(summary = "Update an order",
@@ -124,7 +161,6 @@ public ResponseEntity> getOrderByUserId(
}
-
@PutMapping("/cancel/{id}")
@Operation(
summary = "Cancel order",
diff --git a/src/main/java/com/podzilla/order/messaging/OrderProducer.java b/src/main/java/com/podzilla/order/messaging/OrderProducer.java
index a34781d..8b9496d 100644
--- a/src/main/java/com/podzilla/order/messaging/OrderProducer.java
+++ b/src/main/java/com/podzilla/order/messaging/OrderProducer.java
@@ -40,4 +40,6 @@ public void sendCancelOrder(
orderCancelledEvent
);
}
+
+
}
diff --git a/src/main/java/com/podzilla/order/model/Address.java b/src/main/java/com/podzilla/order/model/Address.java
index acf13c3..6c47cd7 100644
--- a/src/main/java/com/podzilla/order/model/Address.java
+++ b/src/main/java/com/podzilla/order/model/Address.java
@@ -1,13 +1,7 @@
package com.podzilla.order.model;
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.GenerationType;
-import jakarta.persistence.Id;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.ManyToOne;
-import jakarta.persistence.Table;
+import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -31,7 +25,7 @@ public class Address {
private String country;
private String postalCode;
- @ManyToOne
+ @OneToOne
@JoinColumn(name = "order_id", nullable = false)
private Order order;
}
diff --git a/src/main/java/com/podzilla/order/service/OrderService.java b/src/main/java/com/podzilla/order/service/OrderService.java
index 76eb036..57c3c50 100644
--- a/src/main/java/com/podzilla/order/service/OrderService.java
+++ b/src/main/java/com/podzilla/order/service/OrderService.java
@@ -53,6 +53,8 @@ public Order createOrder(final Order order) {
log.info("Creating new order: {}", order);
order.setCreatedAt(LocalDateTime.now());
order.setUpdatedAt(LocalDateTime.now());
+ order.getShippingAddress().setOrder(order);
+ order.getOrderProducts().forEach(product -> product.setOrder(order));
orderRepository.save(order);
OrderStatusStrategy strategy = strategyFactory.getStrategy(OrderStatus.PENDING);
diff --git a/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java b/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java
index ee1e823..6099059 100644
--- a/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java
+++ b/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java
@@ -39,7 +39,7 @@ private List getOrderItems(final Order order) {
List orderProducts = order.getOrderProducts();
for (OrderProduct product : orderProducts) {
OrderItem orderItem = new OrderItem();
- orderItem.setProductId(product.getId().toString());
+ orderItem.setProductId(product.getProductId().toString());
orderItem.setQuantity(product.getQuantity());
orderItem.setPricePerUnit(product.getPricePerUnit());
orderItems.add(orderItem);
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index cde2649..5bc9d37 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -4,3 +4,10 @@ spring.rabbitmq.host=rabbitmq
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
+
+spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
+spring.jpa.hibernate.ddl-auto=create-drop
+spring.jpa.generate-ddl=true
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.format_sql=true
+spring.jpa.properties.hibernate.use_sql_comments=true