added new endpoints delete scanned history, delete all scanned histories, delete bookmarks, delete all bookmarks
This commit is contained in:
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@@ -25,8 +26,14 @@ public class ScanBookmarkEntity {
|
||||
private String userId;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "status", nullable = false)
|
||||
private BookmarkStatus scanStatus;
|
||||
@Column(name = "status")
|
||||
private BookmarkStatus bookmarkStatus;
|
||||
|
||||
@Column(name = "date_created", updatable = false)
|
||||
private OffsetDateTime dateCreated;
|
||||
|
||||
@Column(name = "date_updated")
|
||||
private OffsetDateTime dateUpdated;
|
||||
|
||||
public enum BookmarkStatus {
|
||||
ACTIVE,
|
||||
@@ -36,4 +43,11 @@ public class ScanBookmarkEntity {
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "qr_code_id", referencedColumnName = "id", insertable = false, updatable = false)
|
||||
private QRCodeEntity qrCodeEntity;
|
||||
|
||||
@PrePersist
|
||||
public void prePersist() {
|
||||
OffsetDateTime now = OffsetDateTime.now();
|
||||
dateCreated = now;
|
||||
dateUpdated = now;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.UUID;
|
||||
|
||||
@Entity
|
||||
@@ -28,6 +29,12 @@ public class ScanHistoryEntity {
|
||||
@Column(name = "status")
|
||||
private ScanStatus scanStatus;
|
||||
|
||||
@Column(name = "date_created", updatable = false)
|
||||
private OffsetDateTime dateCreated;
|
||||
|
||||
@Column(name = "date_updated")
|
||||
private OffsetDateTime dateUpdated;
|
||||
|
||||
public enum ScanStatus {
|
||||
ACTIVE,
|
||||
INACTIVE
|
||||
@@ -35,4 +42,11 @@ public class ScanHistoryEntity {
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(name = "qr_code_id", referencedColumnName = "id", insertable = false, updatable = false)
|
||||
private QRCodeEntity qrCodeEntity;
|
||||
|
||||
@PrePersist
|
||||
public void prePersist() {
|
||||
OffsetDateTime now = OffsetDateTime.now();
|
||||
dateCreated = now;
|
||||
dateUpdated = now;
|
||||
}
|
||||
}
|
||||
@@ -3,11 +3,25 @@ package com.safeqr.app.qrcode.repository;
|
||||
import com.safeqr.app.qrcode.entity.QRCodeEntity;
|
||||
import com.safeqr.app.qrcode.entity.ScanBookmarkEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface ScanBookmarkRepository extends JpaRepository<ScanBookmarkEntity, Long> {
|
||||
@Query("SELECT sb.qrCodeEntity FROM ScanBookmarkEntity sb WHERE sb.userId = :userId AND sb.scanStatus = 'ACTIVE'")
|
||||
@Query("SELECT sb.qrCodeEntity FROM ScanBookmarkEntity sb WHERE sb.userId = :userId AND sb.bookmarkStatus = 'ACTIVE'")
|
||||
List<QRCodeEntity> findAllBookmarksByUserId(String userId);
|
||||
|
||||
@Query("SELECT sb FROM ScanBookmarkEntity sb WHERE sb.userId = :userId AND sb.qrCodeId = :qrCodeId AND sb.bookmarkStatus = 'ACTIVE'")
|
||||
Optional<ScanBookmarkEntity> findByUserIdAndQrCodeId(String userId, UUID qrCodeId);
|
||||
|
||||
@Modifying
|
||||
@Query("UPDATE ScanBookmarkEntity sb SET sb.bookmarkStatus = com.safeqr.app.qrcode.entity.ScanBookmarkEntity$BookmarkStatus.INACTIVE, sb.dateUpdated = CURRENT_TIMESTAMP WHERE sb.userId = :userId AND sb.bookmarkStatus = com.safeqr.app.qrcode.entity.ScanBookmarkEntity$BookmarkStatus.ACTIVE AND sb.qrCodeId = :qrCodeId")
|
||||
int updateBookmarkStatusToInactive(String userId, UUID qrCodeId);
|
||||
|
||||
@Modifying
|
||||
@Query("UPDATE ScanBookmarkEntity sb SET sb.bookmarkStatus = com.safeqr.app.qrcode.entity.ScanBookmarkEntity$BookmarkStatus.INACTIVE, sb.dateUpdated = CURRENT_TIMESTAMP WHERE sb.userId = :userId AND sb.bookmarkStatus = com.safeqr.app.qrcode.entity.ScanBookmarkEntity$BookmarkStatus.ACTIVE")
|
||||
int updateBookmarkStatusToInactiveByUserId(String userId);
|
||||
}
|
||||
|
||||
@@ -3,13 +3,23 @@ package com.safeqr.app.qrcode.repository;
|
||||
import com.safeqr.app.qrcode.entity.QRCodeEntity;
|
||||
import com.safeqr.app.qrcode.entity.ScanHistoryEntity;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
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);
|
||||
|
||||
@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")
|
||||
int updateScannedHistoryToInactive(String userId, UUID qrCodeId);
|
||||
|
||||
@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")
|
||||
int updateScannedHistoriesToInactiveByUserId(String userId);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.safeqr.app.qrcode.service;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.entity.EmailEntity;
|
||||
import com.safeqr.app.qrcode.repository.EmailRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -22,7 +22,7 @@ public class EmailVerificationService {
|
||||
public EmailEntity getEmailEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return emailRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("Email not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("Email not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
public void insertDB(EmailEntity emailEntity) {
|
||||
emailRepository.save(emailEntity);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.safeqr.app.qrcode.service;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.entity.PhoneEntity;
|
||||
import com.safeqr.app.qrcode.repository.PhoneRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -22,7 +22,7 @@ public class PhoneVerificationService {
|
||||
public PhoneEntity getPhoneEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return phoneRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("Phone not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("Phone not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
public void insertDB(PhoneEntity phoneEntity) {
|
||||
phoneRepository.save(phoneEntity);
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.safeqr.app.qrcode.service;
|
||||
|
||||
import static com.safeqr.app.constants.CommonConstants.*;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.dto.request.QRCodePayload;
|
||||
import com.safeqr.app.qrcode.dto.response.BaseScanResponse;
|
||||
import com.safeqr.app.qrcode.entity.QRCodeEntity;
|
||||
@@ -19,6 +19,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
@@ -69,7 +70,7 @@ public class QRCodeTypeService {
|
||||
public BaseScanResponse getScannedQRCodeDetails(UUID qrCodeId){
|
||||
// Find scanned qr code in qr code table
|
||||
QRCodeEntity qrCodeEntity = qrCodeRepository.findById(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("QR Code not found with id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("QR Code not found with id: " + qrCodeId));
|
||||
logger.info("qrCodeEntity: {}", qrCodeEntity);
|
||||
QRCodeModel<?> qrCodeModel = qrCodeFactoryProvider.createQRCodeInstance(qrCodeEntity);
|
||||
logger.info("Retrieved details: {}", qrCodeModel.getDetails());
|
||||
@@ -77,6 +78,7 @@ public class QRCodeTypeService {
|
||||
}
|
||||
|
||||
// Process Scanned QR Code
|
||||
@Transactional
|
||||
public BaseScanResponse scanQRCode(String userId, QRCodePayload payload) {
|
||||
String data = payload.getData();
|
||||
logger.info("scanQRCode: userId={}, data={}", userId, data);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.safeqr.app.qrcode.service;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.entity.SMSEntity;
|
||||
import com.safeqr.app.qrcode.repository.SMSRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -23,7 +23,7 @@ public class SMSVerificationService {
|
||||
public SMSEntity getSMSEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return smsRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("SMS not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("SMS not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
public void insertDB(SMSEntity smsEntity) {
|
||||
smsRepository.save(smsEntity);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.safeqr.app.qrcode.service;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.entity.TextEntity;
|
||||
import com.safeqr.app.qrcode.repository.TextRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -22,7 +22,7 @@ public class TextVerificationService {
|
||||
public TextEntity getTextEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return textRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("Text not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("Text not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
public void insertDB(TextEntity textEntity) {
|
||||
textRepository.save(textEntity);
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.safeqr.app.qrcode.service;
|
||||
|
||||
import static com.safeqr.app.constants.CommonConstants.*;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.dto.request.QRCodePayload;
|
||||
import com.safeqr.app.qrcode.dto.URLVerificationResponse;
|
||||
import com.safeqr.app.qrcode.entity.URLEntity;
|
||||
@@ -30,7 +30,7 @@ public class URLVerificationService {
|
||||
public URLEntity getURLEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return urlRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("URL not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("URL not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
|
||||
public void insertDB(URLEntity urlEntity) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.safeqr.app.qrcode.service;
|
||||
|
||||
import com.safeqr.app.exceptions.CustomNotFoundExceptions;
|
||||
import com.safeqr.app.exceptions.ResourceNotFoundExceptions;
|
||||
import com.safeqr.app.qrcode.entity.WifiEntity;
|
||||
import com.safeqr.app.qrcode.repository.WifiRepository;
|
||||
import org.slf4j.Logger;
|
||||
@@ -22,7 +22,7 @@ public class WifiVerificationService {
|
||||
public WifiEntity getWifiEntityByQRCodeId(UUID qrCodeId) {
|
||||
logger.info("qrCodeId retrieving: {}", qrCodeId);
|
||||
return wifiRepository.findByQrCodeId(qrCodeId)
|
||||
.orElseThrow(() -> new CustomNotFoundExceptions("Wifi not found for QR Code id: " + qrCodeId));
|
||||
.orElseThrow(() -> new ResourceNotFoundExceptions("Wifi not found for QR Code id: " + qrCodeId));
|
||||
}
|
||||
public void insertDB(WifiEntity wifiEntity) {
|
||||
wifiRepository.save(wifiEntity);
|
||||
|
||||
Reference in New Issue
Block a user