From 7cb68e2ec0dd9d71ca7a5638f9930c1263a8bfdc Mon Sep 17 00:00:00 2001 From: heyethereum Date: Mon, 22 Jul 2024 00:48:23 +0800 Subject: [PATCH] added bookmarked to scan history --- .../com/safeqr/app/constants/APIConstants.java | 6 +++--- .../app/qrcode/entity/ScanHistoryEntity.java | 3 +++ .../repository/ScanHistoryRepository.java | 8 +++++--- .../app/user/controller/UserController.java | 3 ++- .../app/user/dto/ScannedHistoriesDto.java | 18 ++++++++++++++++++ .../app/user/dto/ScannedHistoriesResponse.java | 4 ---- .../safeqr/app/user/service/UserService.java | 4 ++-- 7 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/safeqr/app/user/dto/ScannedHistoriesDto.java delete mode 100644 src/main/java/com/safeqr/app/user/dto/ScannedHistoriesResponse.java diff --git a/src/main/java/com/safeqr/app/constants/APIConstants.java b/src/main/java/com/safeqr/app/constants/APIConstants.java index 5648072..b9086b0 100644 --- a/src/main/java/com/safeqr/app/constants/APIConstants.java +++ b/src/main/java/com/safeqr/app/constants/APIConstants.java @@ -8,9 +8,9 @@ public class APIConstants { public static final String API_URL_QRCODE_GET_ALL = "/qrcodetypes"; public static final String API_URL_QRCODE_SCAN = "/qrcodetypes/scan"; public static final String API_URL_QRCODE_DETECT = "/qrcodetypes/detect"; - public static final String API_URL_QRCODE_VERIFY_URL = "/qrcodetypes/verifyurl"; - public static final String API_URL_QRCODE_VIRUS_TOTAL_CHECK = "/qrcodetypes/virustotalcheck"; - public static final String API_URL_QRCODE_REDIRECT_COUNT = "/qrcodetypes/redirectcount"; + public static final String API_URL_QRCODE_VERIFY_URL = "/qrcodetypes/verifyURL"; + public static final String API_URL_QRCODE_VIRUS_TOTAL_CHECK = "/qrcodetypes/virusTotalCheck"; + public static final String API_URL_QRCODE_REDIRECT_COUNT = "/qrcodetypes/checkRedirects"; public static final String API_URL_QRCODE_GET_QR_DETAILS = "/qrcodetypes/getQRDetails"; diff --git a/src/main/java/com/safeqr/app/qrcode/entity/ScanHistoryEntity.java b/src/main/java/com/safeqr/app/qrcode/entity/ScanHistoryEntity.java index bc7088b..0ba129f 100644 --- a/src/main/java/com/safeqr/app/qrcode/entity/ScanHistoryEntity.java +++ b/src/main/java/com/safeqr/app/qrcode/entity/ScanHistoryEntity.java @@ -35,6 +35,9 @@ public class ScanHistoryEntity { @Column(name = "date_updated") private OffsetDateTime dateUpdated; + @Column(name = "bookmarked") + private boolean bookmarked; + public enum ScanStatus { ACTIVE, INACTIVE diff --git a/src/main/java/com/safeqr/app/qrcode/repository/ScanHistoryRepository.java b/src/main/java/com/safeqr/app/qrcode/repository/ScanHistoryRepository.java index f382872..7e38e89 100644 --- a/src/main/java/com/safeqr/app/qrcode/repository/ScanHistoryRepository.java +++ b/src/main/java/com/safeqr/app/qrcode/repository/ScanHistoryRepository.java @@ -1,10 +1,11 @@ package com.safeqr.app.qrcode.repository; -import com.safeqr.app.qrcode.entity.QRCodeEntity; import com.safeqr.app.qrcode.entity.ScanHistoryEntity; +import com.safeqr.app.user.dto.ScannedHistoriesDto; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import java.util.List; @@ -12,8 +13,9 @@ import java.util.UUID; @Repository public interface ScanHistoryRepository extends JpaRepository { - @Query("SELECT sh.qrCodeEntity FROM ScanHistoryEntity sh WHERE sh.userId = :userId AND sh.scanStatus = 'ACTIVE'") - List findAllQRCodesByUserId(String userId); + @Query("SELECT new com.safeqr.app.user.dto.ScannedHistoriesDto(sh.qrCodeEntity, sh.bookmarked) " + + "FROM ScanHistoryEntity sh WHERE sh.userId = :userId AND sh.scanStatus = 'ACTIVE' ORDER BY sh.dateCreated DESC") + List findAllQRCodesByUserId(@Param("userId") String userId); @Modifying @Query("UPDATE ScanHistoryEntity sh SET sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.INACTIVE, sh.dateUpdated = CURRENT_TIMESTAMP WHERE sh.userId = :userId AND sh.scanStatus = com.safeqr.app.qrcode.entity.ScanHistoryEntity$ScanStatus.ACTIVE AND sh.qrCodeId = :qrCodeId") diff --git a/src/main/java/com/safeqr/app/user/controller/UserController.java b/src/main/java/com/safeqr/app/user/controller/UserController.java index 8fe2f8d..f995741 100644 --- a/src/main/java/com/safeqr/app/user/controller/UserController.java +++ b/src/main/java/com/safeqr/app/user/controller/UserController.java @@ -6,6 +6,7 @@ import static com.safeqr.app.constants.CommonConstants.HEADER_USER_ID; import com.safeqr.app.qrcode.entity.QRCodeEntity; import com.safeqr.app.user.dto.BaseResponse; import com.safeqr.app.user.dto.BookmarkRequestDto; +import com.safeqr.app.user.dto.ScannedHistoriesDto; import com.safeqr.app.user.dto.UserResponseDto; import com.safeqr.app.user.service.UserService; import org.slf4j.Logger; @@ -41,7 +42,7 @@ public class UserController { } @GetMapping(value = API_URL_USER_GET_SCANNED_HISTORIES, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) { + public ResponseEntity> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) { logger.info("Invoking GET User Scanned Histories endpoint"); return ResponseEntity.ok(userService.getUserScannedHistories(userId)); } diff --git a/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesDto.java b/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesDto.java new file mode 100644 index 0000000..a691aff --- /dev/null +++ b/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesDto.java @@ -0,0 +1,18 @@ +package com.safeqr.app.user.dto; + +import com.safeqr.app.qrcode.entity.QRCodeEntity; +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class ScannedHistoriesDto { + + private QRCodeEntity data; + private boolean bookmarked; + + public ScannedHistoriesDto(QRCodeEntity qrCodeEntity, boolean bookmarked) { + this.data = qrCodeEntity; + this.bookmarked = bookmarked; + } +} \ No newline at end of file diff --git a/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesResponse.java b/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesResponse.java deleted file mode 100644 index 72fce22..0000000 --- a/src/main/java/com/safeqr/app/user/dto/ScannedHistoriesResponse.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.safeqr.app.user.dto; - -public class ScannedHistoriesResponse { -} diff --git a/src/main/java/com/safeqr/app/user/service/UserService.java b/src/main/java/com/safeqr/app/user/service/UserService.java index 09db54d..e60e00d 100644 --- a/src/main/java/com/safeqr/app/user/service/UserService.java +++ b/src/main/java/com/safeqr/app/user/service/UserService.java @@ -6,8 +6,8 @@ import com.safeqr.app.qrcode.entity.QRCodeEntity; import com.safeqr.app.qrcode.entity.ScanBookmarkEntity; import com.safeqr.app.qrcode.repository.ScanBookmarkRepository; import com.safeqr.app.qrcode.repository.ScanHistoryRepository; -import com.safeqr.app.user.controller.UserController; import com.safeqr.app.user.dto.BaseResponse; +import com.safeqr.app.user.dto.ScannedHistoriesDto; import com.safeqr.app.user.dto.UserResponseDto; import com.safeqr.app.user.entity.UserEntity; import com.safeqr.app.user.repository.UserRepository; @@ -54,7 +54,7 @@ public class UserService { .status(userEntity.getStatus()) .build(); } - public List getUserScannedHistories(String userId) { + public List getUserScannedHistories(String userId) { return scanHistoryRepository.findAllQRCodesByUserId(userId); } @Transactional