diff --git a/README.md b/README.md index 54d4e6f..11bff4f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ # gomart -E commerce backend built using Spring Boot +E-commerce backend built using Spring Boot Current API: gomart-production.up.railway.app +Frontend: gomart.vercel.app + By default admin is added every time diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminController.java b/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminController.java index 4766827..3d3646b 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminController.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminController.java @@ -14,7 +14,8 @@ import java.util.List; @RestController -@CrossOrigin(origins = "https://gomart.vercel.app/") +// @CrossOrigin(origins = "https://gomart.vercel.app/") +@CrossOrigin @RequestMapping(path = "/admin") public class AdminController { @@ -80,4 +81,9 @@ public List generateReportByDate(@RequestBody GetOrder getOrder){ return adminService.getItemsSoldOnADate(getOrder.getSenderId(), getOrder.getStartDate()); } + @PostMapping(path="/delete/user") + public void deleteUser(@RequestBody GetInfo getInfo){ + adminService.deleteUser(getInfo.getSenderId(), getInfo.getUserId()); + } + } diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminService.java b/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminService.java index 0723cc7..789b302 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminService.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/Admin/AdminService.java @@ -8,8 +8,10 @@ import com.ecommerce.gomart.GomartUser.Manager.ManagerService; import com.ecommerce.gomart.GomartUser.Manager.ManagerStatus; import com.ecommerce.gomart.GomartUser.Role; +import com.ecommerce.gomart.Order.CustomerSnapshot; import com.ecommerce.gomart.Order.Order; import com.ecommerce.gomart.Order.OrderRepository; +import com.ecommerce.gomart.Order.ProductSnapshot; import com.ecommerce.gomart.Product.Product; import com.ecommerce.gomart.Product.ProductRepository; import com.ecommerce.gomart.Stubs.SendCart; @@ -23,7 +25,10 @@ import java.io.IOException; import java.time.LocalDate; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; @@ -79,9 +84,18 @@ public void removeManagerAccess(Long adminId, Long userId){ public List getOrdersOfCustomerInDateRange(Long adminId, Long userId, LocalDate startDate, LocalDate endDate){ if(checkAdminStatus(adminId)){ GomartUser user = gomartUserRepository.findById(userId).get(); - List orders = orderRepository.findByCustomerAndOrderDateBetween(user, startDate, endDate); - List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(), makeSnapshotProduct(order.getProduct(), order), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); - return send; + CustomerSnapshot customerSnapshot = new CustomerSnapshot().builder() + .userId(user.getUserId()) + .firstName(user.getFirstName()) + .lastName(user.getLastName()) + .email(user.getEmail()) + .phoneNumber(user.getPhoneNumber()) + .address(user.getAddress()) + .build(); + List orders = orderRepository.findByCustomerAndOrderDateBetween(customerSnapshot, startDate, endDate); + List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(), order.getProduct(), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); + // reverse the list so that the most recent order is at the top + return send.stream().sorted((o1, o2) -> o2.getOrderDate().compareTo(o1.getOrderDate())).collect(Collectors.toList()); } else{ throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User does not have Admin level access or is not logged in"); @@ -93,6 +107,7 @@ public List getOrdersOfCustomerInDateRange(Long adminId, Long userId, public List getCustomers(Long adminId){ if(checkAdminStatus(adminId)){ List users = gomartUserRepository.findAll(); + users.removeIf(user -> user.getRole() == Role.ADMIN); List send = users.stream().map(user -> new UserInfo(user.getUserId(), user.getFirstName(), user.getMiddleName(), user.getLastName(), user.getEmail(), user.getDob(), user.getAddress(), user.getPhoneNumber())).collect(Collectors.toList()); return send; } @@ -130,25 +145,55 @@ public List getPendingManagers(Long adminId){ public List getItemsSoldOnADate(Long adminId, LocalDate date){ if(checkAdminStatus(adminId)){ List orders = orderRepository.findByOrderDate(date); - List send = orders.stream().map(order -> new SendCart(makeSnapshotProduct(order.getProduct(), order), order.getQuantity())).collect(Collectors.toList()); + Map productToQuantity = new HashMap<>(); + for(Order order : orders){ + if(productToQuantity.containsKey(order.getProduct())){ + productToQuantity.put(order.getProduct(), productToQuantity.get(order.getProduct()) + order.getQuantity()); + } + else{ + productToQuantity.put(order.getProduct(), order.getQuantity()); + } + } + List send = new ArrayList<>(); + for(Map.Entry entry : productToQuantity.entrySet()){ + send.add(new SendCart(snapshotToProduct(entry.getKey()), entry.getValue())); + } return send; + } else{ throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User does not have Admin level access or is not logged in"); } } - private Product makeSnapshotProduct(Product product, Order order){ - Product snapshotProduct = new Product(); - snapshotProduct.setProductId(product.getProductId()); - snapshotProduct.setName(order.getProductNameSnapshot()); - snapshotProduct.setCategory(product.getCategory()); - snapshotProduct.setPrice(order.getProductPriceSnapshot()); - snapshotProduct.setQuantity(product.getQuantity()); - snapshotProduct.setOffer(order.getProductOfferSnapshot()); - snapshotProduct.setDeliveryTime(product.getDeliveryTime()); - snapshotProduct.setImage(product.getImage()); - return snapshotProduct; + + @Transactional + public void deleteUser(Long adminId, Long userId){ + if(checkAdminStatus(adminId)){ + GomartUser user = gomartUserRepository.findById(userId).get(); + if(user.getRole() == Role.ADMIN){ + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "Cannot delete an Admin"); + } + else{ + Email email = new Email(user.getEmail(), "Account Deleted", "Your account has been deletedby the Admin. Please contact the Admin for more information."); + emailService.sendSimpleMail(email); + gomartUserRepository.delete(user); + } + } + else{ + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User does not have Admin level access or is not logged in"); + } + } + + private Product snapshotToProduct(ProductSnapshot productSnapshot){ + Product product = new Product(); + product.setName(productSnapshot.getName()); + product.setPrice(productSnapshot.getPrice()); + product.setOffer(productSnapshot.getOffer()); + product.setImage(productSnapshot.getImage()); + product.setDeliveryTime(productSnapshot.getDeliveryTime()); + return product; + } diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerController.java b/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerController.java index 847efdf..e84ba9a 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerController.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerController.java @@ -9,7 +9,8 @@ import java.util.List; @RestController -@CrossOrigin(origins = "https://gomart.vercel.app/") +// @CrossOrigin(origins = "https://gomart.vercel.app/") +@CrossOrigin @RequestMapping(path = "/user") public class CustomerController { diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerService.java b/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerService.java index 4e099ba..d4d73c4 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerService.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/Customer/CustomerService.java @@ -10,8 +10,10 @@ import com.ecommerce.gomart.GomartUser.Manager.Manager; import com.ecommerce.gomart.GomartUser.Manager.ManagerStatus; import com.ecommerce.gomart.GomartUser.Role; +import com.ecommerce.gomart.Order.CustomerSnapshot; import com.ecommerce.gomart.Order.Order; import com.ecommerce.gomart.Order.OrderRepository; +import com.ecommerce.gomart.Order.ProductSnapshot; import com.ecommerce.gomart.Product.Category; import com.ecommerce.gomart.Product.Product; import com.ecommerce.gomart.Product.ProductRepository; @@ -138,13 +140,28 @@ public List getProductsByCategory(int category) { public List getProductsByName(String name) { List products = productRepository.findByNameIgnoreCaseContaining(name); if(products.isEmpty()){ - return getProductsByFuzzyName(name); + List productsByDescription = productRepository.findByDescriptionIgnoreCaseContaining(name); + + if(productsByDescription.isEmpty()){ + List fuzzyName = getProductsByFuzzyName(name); + if(fuzzyName.isEmpty()){ + return getProductsByFuzzyDescription(name); + } + else{ + return fuzzyName; + } + } + else{ + return productsByDescription; + } + } + else{ + return products; } - return products; } @Transactional - public List getProductsByFuzzyName(String name) { + private List getProductsByFuzzyName(String name) { List products = getProducts(); List filtered = products.stream() .filter(product -> FuzzySearch.weightedRatio(product.getName(), name) > 50) @@ -155,6 +172,18 @@ public List getProductsByFuzzyName(String name) { return fProducts.subList(0, Math.min(5, fProducts.size())); } + @Transactional + private List getProductsByFuzzyDescription(String name) { + List products = getProducts(); + List filtered = products.stream() + .filter(product -> FuzzySearch.weightedRatio(product.getDescription(), name) > 50) + .collect(Collectors.toList()); + List fProducts = filtered.stream() + .sorted((p1, p2) -> FuzzySearch.weightedRatio(p2.getDescription(), name) - FuzzySearch.weightedRatio(p1.getDescription(), name)) + .collect(Collectors.toList()); + return fProducts.subList(0, Math.min(5, fProducts.size())); + } + @Transactional public List getProductsInCategoryByPriceRange(int category, double min, double max) { return productRepository.findByCategoryAndPriceBetween(Category.values()[category], min, max); @@ -191,36 +220,40 @@ public List getCart(Long userId){ public List getOrders(Long userId){ if(checkIfUserLoggedIn(userId)){ GomartUser user = gomartUserRepository.findById(userId).get(); - List orders = orderRepository.findByCustomer(user); - List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(),makeSnapshotProduct(order.getProduct(), order), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); - return send; + CustomerSnapshot customerSnapshot = new CustomerSnapshot().builder() + .userId(user.getUserId()) + .firstName(user.getFirstName()) + .lastName(user.getLastName()) + .email(user.getEmail()) + .phoneNumber(user.getPhoneNumber()) + .address(user.getAddress()) + .build(); + List orders = orderRepository.findByCustomer(customerSnapshot); + List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(),order.getProduct(), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); + return send.stream().sorted((o1, o2) -> o2.getOrderDate().compareTo(o1.getOrderDate())).collect(Collectors.toList()); } else{ throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User not logged in"); } } - private Product makeSnapshotProduct(Product product, Order order){ - Product snapshotProduct = new Product(); - snapshotProduct.setProductId(product.getProductId()); - snapshotProduct.setName(order.getProductNameSnapshot()); - snapshotProduct.setCategory(product.getCategory()); - snapshotProduct.setPrice(order.getProductPriceSnapshot()); - snapshotProduct.setQuantity(product.getQuantity()); - snapshotProduct.setOffer(order.getProductOfferSnapshot()); - snapshotProduct.setDeliveryTime(product.getDeliveryTime()); - snapshotProduct.setImage(product.getImage()); - return snapshotProduct; - - } @Transactional public List getOrdersByOrderDate(Long userId, LocalDate date){ if(checkIfUserLoggedIn(userId)){ GomartUser user = gomartUserRepository.findById(userId).get(); - List orders = orderRepository.findByCustomerAndOrderDate(user, date); + CustomerSnapshot customerSnapshot = new CustomerSnapshot().builder() + .userId(user.getUserId()) + .firstName(user.getFirstName()) + .lastName(user.getLastName()) + .email(user.getEmail()) + .phoneNumber(user.getPhoneNumber()) + .address(user.getAddress()) + .build(); + List orders = orderRepository.findByCustomerAndOrderDate(customerSnapshot, date); List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(),order.getProduct(), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); - return send; + // reverse the list to get the latest order first + return send.stream().sorted((o1, o2) -> o2.getOrderDate().compareTo(o1.getOrderDate())).collect(Collectors.toList()); } else{ throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User not logged in"); @@ -231,9 +264,18 @@ public List getOrdersByOrderDate(Long userId, LocalDate date){ public List getOrdersByOrderDateRange(Long userId, LocalDate startDate, LocalDate endDate){ if(checkIfUserLoggedIn(userId)){ GomartUser user = gomartUserRepository.findById(userId).get(); - List orders = orderRepository.findByCustomerAndOrderDateBetween(user, startDate, endDate); + CustomerSnapshot customerSnapshot = new CustomerSnapshot().builder() + .userId(user.getUserId()) + .firstName(user.getFirstName()) + .lastName(user.getLastName()) + .email(user.getEmail()) + .phoneNumber(user.getPhoneNumber()) + .address(user.getAddress()) + .build(); + List orders = orderRepository.findByCustomerAndOrderDateBetween(customerSnapshot, startDate, endDate); List send = orders.stream().map(order -> new SendOrder(order.getOrderTransactionId(),order.getProduct(), order.getQuantity(), order.getOrderDate())).collect(Collectors.toList()); - return send; + // reverse the list so that the most recent order is at the top + return send.stream().sorted((o1, o2) -> o2.getOrderDate().compareTo(o1.getOrderDate())).collect(Collectors.toList()); } else{ @@ -262,8 +304,14 @@ public ResponseEntity updateUserInfo(Long userId, String firstName, Stri public ResponseEntity deleteUserInfo(Long userId){ if(checkIfUserLoggedIn(userId)){ + Email email = new Email(); + email.setTo(gomartUserRepository.findById(userId).get().getEmail()); + email.setSubject("Account Deletion"); + email.setBody("Your GoMart account has been deleted successfully. We're sorry to see you go."); + emailService.sendSimpleMail(email); gomartUserRepository.deleteById(userId); return new ResponseEntity("User info deleted successfully", HttpStatus.OK); + } else{ throw new ResponseStatusException(HttpStatus.FORBIDDEN, "User not logged in"); @@ -365,14 +413,24 @@ public ResponseEntity checkOutFromCart(Long userId){ } for(Cart cart: cartList){ Order order = new Order().builder() - .customer(cart.getCustomer()) - .product(cart.getProduct()) .quantity(cart.getQuantity()) .orderDate(LocalDate.now()) - .productNameSnapshot(cart.getProduct().getName()) - .productPriceSnapshot(cart.getProduct().getPrice()) - .productOfferSnapshot(cart.getProduct().getOffer()) .build(); + CustomerSnapshot customerSnapshot = new CustomerSnapshot(); + ProductSnapshot productSnapshot = new ProductSnapshot(); + customerSnapshot.setAddress(user.getAddress()); + customerSnapshot.setEmail(user.getEmail()); + customerSnapshot.setPhoneNumber(user.getPhoneNumber()); + customerSnapshot.setFirstName(user.getFirstName()); + customerSnapshot.setLastName(user.getLastName()); + customerSnapshot.setUserId(user.getUserId()); + order.setCustomer(customerSnapshot); + productSnapshot.setName(cart.getProduct().getName()); + productSnapshot.setPrice(cart.getProduct().getPrice()); + productSnapshot.setOffer(cart.getProduct().getOffer()); + productSnapshot.setImage(cart.getProduct().getImage()); + productSnapshot.setDeliveryTime(cart.getProduct().getDeliveryTime()); + order.setProduct(productSnapshot); orderRepository.save(order); cartRepository.deleteById(cart.getEntryId()); // decrease quantity of product diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/GomartUser.java b/src/main/java/com/ecommerce/gomart/GomartUser/GomartUser.java index b739b49..24ff221 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/GomartUser.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/GomartUser.java @@ -114,10 +114,6 @@ public class GomartUser { @JsonIgnore private List carts; - // one to many relationship with orders - @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL) - @JsonIgnore - private List orders; } diff --git a/src/main/java/com/ecommerce/gomart/GomartUser/Manager/ManagerController.java b/src/main/java/com/ecommerce/gomart/GomartUser/Manager/ManagerController.java index 0604e07..5e3fc9a 100644 --- a/src/main/java/com/ecommerce/gomart/GomartUser/Manager/ManagerController.java +++ b/src/main/java/com/ecommerce/gomart/GomartUser/Manager/ManagerController.java @@ -9,7 +9,8 @@ import java.io.IOException; @RestController -@CrossOrigin(origins = "https://gomart.vercel.app/") +// @CrossOrigin(origins = "https://gomart.vercel.app/") +@CrossOrigin @RequestMapping(path = "/manager") public class ManagerController { private final ManagerService managerService; diff --git a/src/main/java/com/ecommerce/gomart/Order/CustomerSnapshot.java b/src/main/java/com/ecommerce/gomart/Order/CustomerSnapshot.java new file mode 100644 index 0000000..fe1d592 --- /dev/null +++ b/src/main/java/com/ecommerce/gomart/Order/CustomerSnapshot.java @@ -0,0 +1,54 @@ +package com.ecommerce.gomart.Order; + +import javax.persistence.Column; +import javax.persistence.Embeddable; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Embeddable +@Data +@AllArgsConstructor +@RequiredArgsConstructor +@Builder +public class CustomerSnapshot { + + @Column( + name = "email", + nullable = false + ) + private String email; + + @Column( + name = "phone_number", + nullable = false + ) + private String phoneNumber; + + @Column( + name = "first_name", + nullable = false +) + private String firstName; + + @Column( + name = "last_name", + nullable = false +) + private String lastName; + + @Column( + name = "address", + nullable = false + ) + private String address; + + @Column( + name = "user_id", + nullable = false, + updatable = false + ) + private Long userId; +} diff --git a/src/main/java/com/ecommerce/gomart/Order/Order.java b/src/main/java/com/ecommerce/gomart/Order/Order.java index c73aaf3..55a60eb 100644 --- a/src/main/java/com/ecommerce/gomart/Order/Order.java +++ b/src/main/java/com/ecommerce/gomart/Order/Order.java @@ -32,14 +32,6 @@ public class Order { ) private Long orderTransactionId; - @ManyToOne - @JoinColumn( - name = "product_id", - nullable = false - ) - private Product product; - - @Column( name = "quantity", nullable = false @@ -51,26 +43,13 @@ public class Order { ) private LocalDate orderDate; - @Column( - name = "product_name_snapshot" - ) - private String productNameSnapshot; - @Column( - name = "product_price_snapshot" - ) - private Double productPriceSnapshot; + @Embedded + private CustomerSnapshot customer; - @Column( - name = "product_offer_snapshot" - ) - private Double productOfferSnapshot; + @Embedded + private ProductSnapshot product; - @ManyToOne - @JoinColumn( - name = "user_id" - ) - private GomartUser customer; } diff --git a/src/main/java/com/ecommerce/gomart/Order/OrderRepository.java b/src/main/java/com/ecommerce/gomart/Order/OrderRepository.java index 7e88e5e..8a4ee9e 100644 --- a/src/main/java/com/ecommerce/gomart/Order/OrderRepository.java +++ b/src/main/java/com/ecommerce/gomart/Order/OrderRepository.java @@ -10,11 +10,11 @@ @Repository public interface OrderRepository extends JpaRepository { - List findByCustomer(GomartUser user); + List findByCustomer(CustomerSnapshot customer); - List findByCustomerAndOrderDate(GomartUser user, LocalDate date); + List findByCustomerAndOrderDate(CustomerSnapshot customer, LocalDate date); - List findByCustomerAndOrderDateBetween(GomartUser user, LocalDate startDate, LocalDate endDate); + List findByCustomerAndOrderDateBetween(CustomerSnapshot customer, LocalDate startDate, LocalDate endDate); List findByOrderDate(LocalDate date); diff --git a/src/main/java/com/ecommerce/gomart/Order/ProductSnapshot.java b/src/main/java/com/ecommerce/gomart/Order/ProductSnapshot.java new file mode 100644 index 0000000..a6c6074 --- /dev/null +++ b/src/main/java/com/ecommerce/gomart/Order/ProductSnapshot.java @@ -0,0 +1,51 @@ +package com.ecommerce.gomart.Order; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.Lob; + +import com.ecommerce.gomart.Product.Category; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.RequiredArgsConstructor; + +@Embeddable +@Data +@AllArgsConstructor +@RequiredArgsConstructor +@Builder +public class ProductSnapshot{ + @Column( + name = "product_name", + nullable = false + ) + private String name; + + @Column( + name = "product_price", + nullable = false + ) + private double price; + + @Column( + name = "product_image" + ) + @Lob + private byte[] image; + + @Column( + name = "offer", + nullable = false + ) + private Double offer; + + @Column( + name = "delivery_time", + nullable = false + ) + private Integer deliveryTime; + +} + diff --git a/src/main/java/com/ecommerce/gomart/Product/Product.java b/src/main/java/com/ecommerce/gomart/Product/Product.java index cfc37c9..308398a 100644 --- a/src/main/java/com/ecommerce/gomart/Product/Product.java +++ b/src/main/java/com/ecommerce/gomart/Product/Product.java @@ -89,11 +89,4 @@ public class Product { @JsonIgnore private List carts; - // one to many relationship with orders - @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) - @JsonIgnore - private List orders; - - - } diff --git a/src/main/java/com/ecommerce/gomart/Product/ProductRepository.java b/src/main/java/com/ecommerce/gomart/Product/ProductRepository.java index 39b0848..34f2e27 100644 --- a/src/main/java/com/ecommerce/gomart/Product/ProductRepository.java +++ b/src/main/java/com/ecommerce/gomart/Product/ProductRepository.java @@ -14,6 +14,8 @@ public interface ProductRepository extends JpaRepository { List findByNameIgnoreCaseContaining(String name); + List findByDescriptionIgnoreCaseContaining(String description); + Product findByName(String name); diff --git a/src/main/java/com/ecommerce/gomart/Stubs/SendOrder.java b/src/main/java/com/ecommerce/gomart/Stubs/SendOrder.java index 650d584..e8acf66 100644 --- a/src/main/java/com/ecommerce/gomart/Stubs/SendOrder.java +++ b/src/main/java/com/ecommerce/gomart/Stubs/SendOrder.java @@ -1,5 +1,6 @@ package com.ecommerce.gomart.Stubs; +import com.ecommerce.gomart.Order.ProductSnapshot; import com.ecommerce.gomart.Product.Product; import lombok.AllArgsConstructor; import lombok.Builder; @@ -14,7 +15,7 @@ @Builder public class SendOrder { private Long transactionId; - private Product product; + private ProductSnapshot product; private int quantity; private LocalDate orderDate; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cad9938..a09c5b9 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,6 +1,6 @@ -spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME} -spring.datasource.username=${DB_USER} -spring.datasource.password=${DB_PASSWORD} +spring.datasource.url=jdbc:postgresql://localhost:5432/gomart +spring.datasource.username=postgres +spring.datasource.password=admin@123 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect @@ -10,7 +10,7 @@ spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB spring.mail.host=smtp.gmail.com spring.mail.port=587 -spring.mail.username=${MAIL_USER} -spring.mail.password=${MAIL_PASSWORD} +spring.mail.username=gomart.ecommerce@gmail.com +spring.mail.password=ifybkfhxogwqrxxn spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true \ No newline at end of file diff --git a/target/classes/application.properties b/target/classes/application.properties index cad9938..a09c5b9 100644 --- a/target/classes/application.properties +++ b/target/classes/application.properties @@ -1,6 +1,6 @@ -spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME} -spring.datasource.username=${DB_USER} -spring.datasource.password=${DB_PASSWORD} +spring.datasource.url=jdbc:postgresql://localhost:5432/gomart +spring.datasource.username=postgres +spring.datasource.password=admin@123 spring.jpa.hibernate.ddl-auto=update spring.jpa.show-sql=true spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect @@ -10,7 +10,7 @@ spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB spring.mail.host=smtp.gmail.com spring.mail.port=587 -spring.mail.username=${MAIL_USER} -spring.mail.password=${MAIL_PASSWORD} +spring.mail.username=gomart.ecommerce@gmail.com +spring.mail.password=ifybkfhxogwqrxxn spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true \ No newline at end of file