From a2aa0bfa05b93b55125c466bcdcd66990c6907e3 Mon Sep 17 00:00:00 2001 From: Tim <47184194+imgde@users.noreply.github.com> Date: Thu, 5 Jun 2025 14:54:30 +0200 Subject: [PATCH] Review fix Model --- .../webshop/controller/ReviewController.java | 7 ++--- .../de/htwsaar/webshop/model/ReviewModel.java | 27 +++++++++++++++++++ .../webshop/repository/entities/Review.java | 8 ++++++ .../webshop/service/ReviewService.java | 2 ++ .../service/impl/ReviewServiceImpl.java | 9 ++++++- 00-backend/src/main/resources/db/initdb.sql | 3 +-- 6 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 00-backend/src/main/java/de/htwsaar/webshop/model/ReviewModel.java diff --git a/00-backend/src/main/java/de/htwsaar/webshop/controller/ReviewController.java b/00-backend/src/main/java/de/htwsaar/webshop/controller/ReviewController.java index 60f067c..7224de5 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/controller/ReviewController.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/controller/ReviewController.java @@ -1,5 +1,6 @@ package de.htwsaar.webshop.controller; +import de.htwsaar.webshop.model.ReviewModel; import de.htwsaar.webshop.repository.entities.Review; import de.htwsaar.webshop.service.ArticleService; import de.htwsaar.webshop.service.ReviewService; @@ -30,10 +31,10 @@ public class ReviewController { } @RequestMapping(path = REVIEW_GET_ALL, method = RequestMethod.GET, produces = "application/json") - public ResponseEntity> getAll(HttpServletRequest request, - @RequestParam(value = PARAM_UUID) UUID uuid) { + public ResponseEntity> getAll(HttpServletRequest request, + @RequestParam(value = PARAM_UUID) UUID uuid) { logRequest(request); - List review = reviewService.getAllByUUID(uuid); + List review = reviewService.getAllByUUID(uuid).stream().map(reviewService::toModel).toList(); if(review.isEmpty()) { return ResponseEntity.noContent().build(); } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/model/ReviewModel.java b/00-backend/src/main/java/de/htwsaar/webshop/model/ReviewModel.java new file mode 100644 index 0000000..d43f29a --- /dev/null +++ b/00-backend/src/main/java/de/htwsaar/webshop/model/ReviewModel.java @@ -0,0 +1,27 @@ +package de.htwsaar.webshop.model; + +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.Null; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import static de.htwsaar.webshop.util.TimeUtil.VALID_MIN_MILLIS_TIMESTAMP; + +@Getter +@Setter +@ToString +@AllArgsConstructor +public class ReviewModel { + @Min(VALID_MIN_MILLIS_TIMESTAMP) + long timestamp; + + @Min(0) + @Max(10) + int rating; + + @Null + String content; +} diff --git a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Review.java b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Review.java index 03d6a49..df712a7 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Review.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/repository/entities/Review.java @@ -1,13 +1,17 @@ package de.htwsaar.webshop.repository.entities; +import de.htwsaar.webshop.util.TimeUtil; import jakarta.persistence.*; import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; import jakarta.validation.constraints.PositiveOrZero; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import static de.htwsaar.webshop.util.TimeUtil.VALID_MIN_MILLIS_TIMESTAMP; + @AllArgsConstructor @NoArgsConstructor @Getter @@ -31,4 +35,8 @@ public class Review { @Max(10) @Column(name = "rating", nullable = false) private Integer rating; + + @Min(VALID_MIN_MILLIS_TIMESTAMP) + @Column(name = "timestamp", nullable = false) + private Long timestamp; } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/ReviewService.java b/00-backend/src/main/java/de/htwsaar/webshop/service/ReviewService.java index 882fcc1..cd03232 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/ReviewService.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/ReviewService.java @@ -3,6 +3,7 @@ package de.htwsaar.webshop.service; import java.util.List; import java.util.UUID; +import de.htwsaar.webshop.model.ReviewModel; import de.htwsaar.webshop.repository.entities.Review; public interface ReviewService { @@ -11,4 +12,5 @@ public interface ReviewService { void delete(Long reviewId); Review getReviewById(Long id); List getAllByUUID(UUID uuid); + ReviewModel toModel(Review review); } diff --git a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ReviewServiceImpl.java b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ReviewServiceImpl.java index 430d199..e0d7027 100644 --- a/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ReviewServiceImpl.java +++ b/00-backend/src/main/java/de/htwsaar/webshop/service/impl/ReviewServiceImpl.java @@ -1,5 +1,6 @@ package de.htwsaar.webshop.service.impl; +import de.htwsaar.webshop.model.ReviewModel; import de.htwsaar.webshop.repository.ReviewRepository; import de.htwsaar.webshop.repository.entities.Review; import de.htwsaar.webshop.service.ArticleService; @@ -25,6 +26,7 @@ public class ReviewServiceImpl implements ReviewService { @Override public Review save(Review review) { + review.setTimestamp(System.currentTimeMillis()); return reviewRepository.save(review); } @@ -33,7 +35,7 @@ public class ReviewServiceImpl implements ReviewService { if(articleUuid == null) { return null; } - Review review = new Review(null, content, articleService.findByUUID(articleUuid), rating); + Review review = new Review(null, content, articleService.findByUUID(articleUuid), rating, System.currentTimeMillis()); return reviewRepository.save(review); } @@ -51,4 +53,9 @@ public class ReviewServiceImpl implements ReviewService { public List getAllByUUID(UUID uuid) { return reviewRepository.getReviewsByArticle_Uuid(uuid); } + + @Override + public ReviewModel toModel(Review review) { + return new ReviewModel(review.getTimestamp(), review.getRating(), review.getContent()); + } } diff --git a/00-backend/src/main/resources/db/initdb.sql b/00-backend/src/main/resources/db/initdb.sql index ae9c194..2f9ad95 100644 --- a/00-backend/src/main/resources/db/initdb.sql +++ b/00-backend/src/main/resources/db/initdb.sql @@ -28,12 +28,11 @@ CREATE TABLE IF NOT EXISTS Reviews article_id INTEGER NOT NULL, rating INTEGER NOT NULL, content TEXT NULL, + timestamp INTEGER NOT NULL, FOREIGN KEY (article_id) REFERENCES Articles (id), CONSTRAINT c_rating CHECK ( rating >= 0 AND rating <= 10) ); - - CREATE TABLE IF NOT EXISTS Customers ( id INTEGER PRIMARY KEY NOT NULL,