added bookmarked to scan history

This commit is contained in:
heyethereum
2024-07-22 00:48:23 +08:00
parent 77541c2a9d
commit 7cb68e2ec0
7 changed files with 33 additions and 13 deletions

View File

@@ -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";

View File

@@ -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

View File

@@ -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<ScanHistoryEntity, Long> {
@Query("SELECT sh.qrCodeEntity FROM ScanHistoryEntity sh WHERE sh.userId = :userId AND sh.scanStatus = 'ACTIVE'")
List<QRCodeEntity> 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<ScannedHistoriesDto> 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")

View File

@@ -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<List<QRCodeEntity>> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) {
public ResponseEntity<List<ScannedHistoriesDto>> getUserScannedHistories(@RequestHeader(name = HEADER_USER_ID) String userId) {
logger.info("Invoking GET User Scanned Histories endpoint");
return ResponseEntity.ok(userService.getUserScannedHistories(userId));
}

View File

@@ -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;
}
}

View File

@@ -1,4 +0,0 @@
package com.safeqr.app.user.dto;
public class ScannedHistoriesResponse {
}

View File

@@ -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<QRCodeEntity> getUserScannedHistories(String userId) {
public List<ScannedHistoriesDto> getUserScannedHistories(String userId) {
return scanHistoryRepository.findAllQRCodesByUserId(userId);
}
@Transactional