RED-2494 Replace all updates (find-if-present-write) with atomic operations

-first set of changes
This commit is contained in:
devplant 2021-10-22 12:18:52 +03:00
parent 87157cc19f
commit de1bb1ad72
20 changed files with 194 additions and 89 deletions

View File

@ -77,36 +77,30 @@ public class AddRedactionPersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); manualRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
} }
@Transactional @Transactional
public void undelete(String fileId, String annotationId) { public void undelete(String fileId, String annotationId) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); manualRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
} }
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { manualRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId),
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
mre.setStatus(annotationStatus); annotationStatus);
});
} }
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) {
manualRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { manualRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId),
mre.setProcessedDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
mre.setStatus(annotationStatus); annotationStatus,
mre.setAddToDictionary(isAddOrRemoveFromDictionary); isAddOrRemoveFromDictionary);
});
} }
} }

View File

@ -55,16 +55,12 @@ public class CommentPersistenceService {
@Transactional @Transactional
public void softDelete(long commentId, OffsetDateTime softDeletedTime) { public void softDelete(long commentId, OffsetDateTime softDeletedTime) {
commentRepository.findById(commentId).ifPresent(mre -> { commentRepository.updateSoftDelete(commentId, softDeletedTime);
mre.setSoftDeletedTime(softDeletedTime);
});
} }
@Transactional @Transactional
public void undelete(long commentId) { public void undelete(long commentId) {
commentRepository.findById(commentId).ifPresent(mre -> { commentRepository.updateSoftDelete(commentId, null);
mre.setSoftDeletedTime(null);
});
} }

View File

@ -34,7 +34,7 @@ public class DossierAttributePersistenceService {
@Transactional @Transactional
public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) { public void updateDossierAttribute(String dossierId, String dossierAttributeId, String dossierAttributeValue) {
dossierAttributeRepository.findById(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId)).ifPresent(dossierAttribute -> dossierAttribute.setValue(dossierAttributeValue)); dossierAttributeRepository.updateDossierAttribute(new DossierAttributeEntity.DossierAttributeEntityId(dossierId, dossierAttributeId), dossierAttributeValue);
} }

View File

@ -7,6 +7,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -102,32 +103,22 @@ public class DossierPersistenceService {
@Transactional @Transactional
public void hardDelete(String dossierId) { public void hardDelete(String dossierId) {
dossierRepository.findById(dossierId).ifPresent(dossier -> { dossierRepository.hardDelete(dossierId, DossierStatus.DELETED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setHardDeletedTime(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
dossier.setStatus(DossierStatus.DELETED);
dossier.setSoftDeletedTime(dossier.getSoftDeletedTime() == null ? OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS) : dossier.getSoftDeletedTime());
});
} }
@Transactional @Transactional
public void undelete(String dossierId) { public void undelete(String dossierId) {
dossierRepository.findById(dossierId).ifPresent(dossier -> { int updateCount = dossierRepository.undelete(dossierId, DossierStatus.ACTIVE);
if (dossier.getHardDeletedTime() != null) { if (updateCount == 0) {
throw new BadRequestException("Cannot undelete a hard-deleted dossier!"); throw new BadRequestException("Cannot undelete a hard-deleted dossier!");
} }
dossier.setStatus(DossierStatus.ACTIVE);
dossier.setSoftDeletedTime(null);
});
} }
@Transactional @Transactional
public void markDossierAsDeleted(String dossierId, OffsetDateTime softDeletedTime) { public void markDossierAsDeleted(String dossierId, OffsetDateTime softDeletedTime) {
dossierRepository.findById(dossierId).ifPresent(dossier -> { dossierRepository.markDossierAsDeleted(dossierId, DossierStatus.DELETED, softDeletedTime);
dossier.setStatus(DossierStatus.DELETED);
dossier.setSoftDeletedTime(softDeletedTime);
});
} }
} }

View File

@ -45,26 +45,19 @@ public class DownloadStatusPersistenceService {
@Transactional @Transactional
public void updateStatus(String storageId, DownloadStatusValue status) { public void updateStatus(String storageId, DownloadStatusValue status) {
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> downloadStatus.setStatus(status)); downloadStatusRepository.updateStatus(storageId, status);
} }
@Transactional @Transactional
public void updateStatus(String storageId, DownloadStatusValue status, long fileSize) { public void updateStatus(String storageId, DownloadStatusValue status, long fileSize) {
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> { downloadStatusRepository.updateStatus(storageId, status, fileSize);
downloadStatus.setStatus(status);
downloadStatus.setFileSize(fileSize);
});
} }
@Transactional @Transactional
public void updateLastDownload(String storageId) { public void updateLastDownload(String storageId) {
downloadStatusRepository.updateLastDownload(storageId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
downloadStatusRepository.findById(storageId).ifPresent(downloadStatus -> {
downloadStatus.setLastDownload(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
});
} }
@ -88,7 +81,6 @@ public class DownloadStatusPersistenceService {
} }
public List<DownloadStatusEntity> getStatus() { public List<DownloadStatusEntity> getStatus() {
return downloadStatusRepository.findAll(); return downloadStatusRepository.findAll();

View File

@ -36,10 +36,8 @@ public class ForceRedactionPersistenceService {
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { forceRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
mre.setProcessedDate(OffsetDateTime.now()); OffsetDateTime.now());
mre.setStatus(annotationStatus);
});
} }
@ -50,12 +48,12 @@ public class ForceRedactionPersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); forceRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
} }
@Transactional @Transactional
public void undelete(String fileId, String annotationId) { public void undelete(String fileId, String annotationId) {
forceRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); forceRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
} }
public ManualForceRedactionEntity findForceRedaction(String fileId, String annotationId) { public ManualForceRedactionEntity findForceRedaction(String fileId, String annotationId) {

View File

@ -35,11 +35,8 @@ public class ImageRecategorizationPersistenceService {
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { imageRecategorizationRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
mre.setProcessedDate(OffsetDateTime.now()); OffsetDateTime.now());
mre.setStatus(annotationStatus);
});
} }
@Transactional @Transactional
@ -50,12 +47,12 @@ public class ImageRecategorizationPersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); imageRecategorizationRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
} }
@Transactional @Transactional
public void undelete(String fileId, String annotationId) { public void undelete(String fileId, String annotationId) {
imageRecategorizationRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); imageRecategorizationRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
} }
public ManualImageRecategorizationEntity findRecategorization(String fileId, String annotationId) { public ManualImageRecategorizationEntity findRecategorization(String fileId, String annotationId) {

View File

@ -41,24 +41,20 @@ public class LegalBasisChangePersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime)); legalBasisChangeRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
} }
@Transactional @Transactional
public void undelete(String fileId, String annotationId) { public void undelete(String fileId, String annotationId) {
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); legalBasisChangeRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
} }
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
legalBasisChangeRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { legalBasisChangeRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus,
mre.setProcessedDate(OffsetDateTime.now()); OffsetDateTime.now());
mre.setStatus(annotationStatus);
});
} }
public ManualLegalBasisChangeEntity findLegalBasisChange(String fileId, String annotationId) { public ManualLegalBasisChangeEntity findLegalBasisChange(String fileId, String annotationId) {

View File

@ -43,16 +43,18 @@ public class NotificationPersistenceService {
@Transactional @Transactional
public void setReadDate(String userId, long notificationId, OffsetDateTime readDate) { public void setReadDate(String userId, long notificationId, OffsetDateTime readDate) {
notificationRepository.findByIdAndUserId(notificationId, userId).ifPresentOrElse(notification -> notification.setReadDate(readDate), () -> { int countUpdate = notificationRepository.setReadDate(userId, notificationId, readDate);
if (countUpdate == 0) {
throw new NotFoundException("Notification not found"); throw new NotFoundException("Notification not found");
}); }
} }
@Transactional @Transactional
public void softDelete(String userId, long notificationId) { public void softDelete(String userId, long notificationId) {
notificationRepository.findByIdAndUserId(notificationId, userId).ifPresentOrElse(notification -> notification.setSoftDeleted(OffsetDateTime.now()), () -> { int countUpdate = notificationRepository.softDelete(userId, notificationId, OffsetDateTime.now());
if (countUpdate == 0) {
throw new NotFoundException("Notification not found"); throw new NotFoundException("Notification not found");
}); }
} }

View File

@ -55,33 +55,24 @@ public class RemoveRedactionPersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) { public void softDelete(String fileId, String annotationId, OffsetDateTime softDeleteTime) {
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(softDeleteTime));
removeRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), softDeleteTime);
} }
@Transactional @Transactional
public void undelete(String fileId, String annotationId) { public void undelete(String fileId, String annotationId) {
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> mre.setSoftDeletedTime(null)); removeRedactionRepository.updateSoftDelete(new AnnotationEntityId(annotationId, fileId), null);
} }
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus) {
removeRedactionRepository.updateStatus(new AnnotationEntityId(annotationId, fileId), annotationStatus, OffsetDateTime.now());
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> {
mre.setProcessedDate(OffsetDateTime.now());
mre.setStatus(annotationStatus);
});
} }
@Transactional @Transactional
public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) { public void updateStatus(String fileId, String annotationId, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary) {
removeRedactionRepository.updateStatusAndRemoveFromDictionary(new AnnotationEntityId(annotationId, fileId),
removeRedactionRepository.findById(new AnnotationEntityId(annotationId, fileId)).ifPresent(mre -> { annotationStatus, OffsetDateTime.now(), isAddOrRemoveFromDictionary);
mre.setProcessedDate(OffsetDateTime.now());
mre.setStatus(annotationStatus);
mre.setRemoveFromDictionary(isAddOrRemoveFromDictionary);
});
} }

View File

@ -2,7 +2,10 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface CommentRepository extends JpaRepository<CommentEntity, Long> { public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
@ -12,4 +15,8 @@ public interface CommentRepository extends JpaRepository<CommentEntity, Long> {
List<CommentEntity> findByFileId(String fileId); List<CommentEntity> findByFileId(String fileId);
boolean existsByFileIdAndSoftDeletedTimeIsNull(String fileId); boolean existsByFileIdAndSoftDeletedTimeIsNull(String fileId);
@Modifying
@Query("update CommentEntity c set c.softDeletedTime = :softDeleteTime where c.id = :id")
int updateSoftDelete(long id, OffsetDateTime softDeleteTime);
} }

View File

@ -19,4 +19,8 @@ public interface DossierAttributeRepository extends JpaRepository<DossierAttribu
@Modifying @Modifying
@Query("DELETE FROM DossierAttributeEntity e WHERE e.dossierAttributeConfig.id = :id") @Query("DELETE FROM DossierAttributeEntity e WHERE e.dossierAttributeConfig.id = :id")
void deleteByDossierAttributeConfigId(String id); void deleteByDossierAttributeConfigId(String id);
@Modifying
@Query("update DossierAttributeEntity dae set dae.value = :dossierAttributeValue where dae.id = :dossierAttributeId")
void updateDossierAttribute(DossierAttributeEntity.DossierAttributeEntityId dossierAttributeId, String dossierAttributeValue);
} }

View File

@ -1,7 +1,31 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
public interface DossierRepository extends JpaRepository<DossierEntity, String> { public interface DossierRepository extends JpaRepository<DossierEntity, String> {
@Modifying
@Query("update DossierEntity d set d.status = :dossierStatus, d.hardDeletedTime = :hardDeletedTime," +
" d.softDeletedTime = " +
"case " +
"when d.softDeletedTime is null then :hardDeletedTime " +
"when d.softDeletedTime is not null then d.softDeletedTime " +
"end " +
"where d.id = :dossierId")
void hardDelete(String dossierId, DossierStatus dossierStatus, OffsetDateTime hardDeletedTime);
@Modifying
@Query("update DossierEntity d set d.status = :dossierStatus, d.softDeletedTime = null where d.id = :dossierId" +
" and d.hardDeletedTime is null")
int undelete(String dossierId, DossierStatus dossierStatus);
@Modifying
@Query("update DossierEntity d set d.status = :dossierStatus, d.softDeletedTime = :softDeletedTime where d.id = :dossierId")
void markDossierAsDeleted(String dossierId, DossierStatus dossierStatus, OffsetDateTime softDeletedTime);
} }

View File

@ -1,10 +1,26 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity;
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatusValue;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface DownloadStatusRepository extends JpaRepository<DownloadStatusEntity, String> { public interface DownloadStatusRepository extends JpaRepository<DownloadStatusEntity, String> {
List<DownloadStatusEntity> findAllByUserId(String userId); List<DownloadStatusEntity> findAllByUserId(String userId);
@Modifying
@Query("update DownloadStatusEntity ds set ds.status = :status where ds.storageId = :storageId")
void updateStatus(String storageId, DownloadStatusValue status);
@Modifying
@Query("update DownloadStatusEntity ds set ds.status = :status, ds.fileSize = :fileSize where ds.storageId = :storageId")
void updateStatus(String storageId, DownloadStatusValue status, long fileSize);
@Modifying
@Query("update DownloadStatusEntity ds set ds.lastDownload = :lastDownload where ds.storageId = :storageId")
void updateLastDownload(String storageId, OffsetDateTime lastDownload);
} }

View File

@ -2,11 +2,26 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface ForceRedactionRepository extends JpaRepository<ManualForceRedactionEntity, AnnotationEntityId> { public interface ForceRedactionRepository extends JpaRepository<ManualForceRedactionEntity, AnnotationEntityId> {
List<ManualForceRedactionEntity> findByIdFileId(String fileId); List<ManualForceRedactionEntity> findByIdFileId(String fileId);
@Modifying
@Query("update ManualForceRedactionEntity mfr set mfr.status = :annotationStatus, mfr.processedDate = :processedDate " +
"where mfr.id = :annotationEntityId")
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
@Modifying
@Query("update ManualForceRedactionEntity mfr set mfr.softDeletedTime = :softDeletedTime " +
"where mfr.id = :annotationEntityId")
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
} }

View File

@ -2,10 +2,25 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface ImageRecategorizationRepository extends JpaRepository<ManualImageRecategorizationEntity, AnnotationEntityId> { public interface ImageRecategorizationRepository extends JpaRepository<ManualImageRecategorizationEntity, AnnotationEntityId> {
List<ManualImageRecategorizationEntity> findByIdFileId(String fileId); List<ManualImageRecategorizationEntity> findByIdFileId(String fileId);
@Modifying
@Query("update ManualImageRecategorizationEntity mir set mir.status = :annotationStatus, mir.processedDate = :processedDate " +
"where mir.id = :annotationEntityId")
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
@Modifying
@Query("update ManualImageRecategorizationEntity mir set mir.softDeletedTime = :softDeletedTime " +
"where mir.id = :annotationEntityId")
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
} }

View File

@ -2,11 +2,25 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface LegalBasisChangeRepository extends JpaRepository<ManualLegalBasisChangeEntity, AnnotationEntityId> { public interface LegalBasisChangeRepository extends JpaRepository<ManualLegalBasisChangeEntity, AnnotationEntityId> {
List<ManualLegalBasisChangeEntity> findByIdFileId(String fileId); List<ManualLegalBasisChangeEntity> findByIdFileId(String fileId);
@Modifying
@Query("update ManualLegalBasisChangeEntity mlbc set mlbc.status = :annotationStatus, mlbc.processedDate = :processedDate " +
"where mlbc.id = :annotationEntityId")
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
@Modifying
@Query("update ManualLegalBasisChangeEntity mlbc set mlbc.softDeletedTime = :softDeletedTime " +
"where mlbc.id = :annotationEntityId")
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
} }

View File

@ -2,11 +2,29 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface ManualRedactionRepository extends JpaRepository<ManualRedactionEntryEntity, AnnotationEntityId> { public interface ManualRedactionRepository extends JpaRepository<ManualRedactionEntryEntity, AnnotationEntityId> {
List<ManualRedactionEntryEntity> findByIdFileId(String fileId); List<ManualRedactionEntryEntity> findByIdFileId(String fileId);
@Modifying
@Query("update ManualRedactionEntryEntity m set m.softDeletedTime = :softDeleteTime where m.id = :id")
void updateSoftDelete(AnnotationEntityId id, OffsetDateTime softDeleteTime);
@Modifying
@Query("update ManualRedactionEntryEntity m set m.processedDate = :processedDate, m.status = :annotationStatus" +
" where m.id = :id")
void updateStatus(AnnotationEntityId id, OffsetDateTime processedDate, AnnotationStatus annotationStatus);
@Modifying
@Query("update ManualRedactionEntryEntity m set m.processedDate = :processedDate, m.status = :annotationStatus," +
" m.addToDictionary = :isAddOrRemoveFromDictionary where m.id = :id")
void updateStatus(AnnotationEntityId id, OffsetDateTime processedDate, AnnotationStatus annotationStatus, boolean isAddOrRemoveFromDictionary);
} }

View File

@ -2,8 +2,10 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.notification.NotificationEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.notification.NotificationEntity;
import org.springframework.data.jpa.repository.JpaRepository; 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.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -18,4 +20,16 @@ public interface NotificationRepository extends JpaRepository<NotificationEntity
List<NotificationEntity> findNotSeenForUser(String userId); List<NotificationEntity> findNotSeenForUser(String userId);
Optional<NotificationEntity> findByIdAndUserId(long notificationId, String userId); Optional<NotificationEntity> findByIdAndUserId(long notificationId, String userId);
@Modifying
@Query("update NotificationEntity n set n.seenDate = :seenDate where n.id = :notificationId and n.userId = :userId")
int setSeenDate(String userId, long notificationId, OffsetDateTime seenDate);
@Modifying
@Query("update NotificationEntity n set n.readDate = :readDate where n.id = :notificationId and n.userId = :userId")
int setReadDate(String userId, long notificationId, OffsetDateTime readDate);
@Modifying
@Query("update NotificationEntity n set n.softDeleted = :softDeleted where n.id = :notificationId and n.userId = :userId")
int softDelete(String userId, long notificationId, OffsetDateTime softDeleted);
} }

View File

@ -2,11 +2,32 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
public interface RemoveRedactionRepository extends JpaRepository<IdRemovalEntity, AnnotationEntityId> { public interface RemoveRedactionRepository extends JpaRepository<IdRemovalEntity, AnnotationEntityId> {
List<IdRemovalEntity> findByIdFileId(String fileId); List<IdRemovalEntity> findByIdFileId(String fileId);
@Modifying
@Query("update IdRemovalEntity idr set idr.softDeletedTime = :softDeletedTime " +
"where idr.id = :annotationEntityId")
void updateSoftDelete(AnnotationEntityId annotationEntityId, OffsetDateTime softDeletedTime);
@Modifying
@Query("update IdRemovalEntity idr set idr.status = :annotationStatus, idr.processedDate = :processedDate " +
"where idr.id = :annotationEntityId")
void updateStatus(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate);
@Modifying
@Query("update IdRemovalEntity idr set idr.status = :annotationStatus, idr.processedDate = :processedDate, " +
"idr.removeFromDictionary = :removeFromDictionary where idr.id = :annotationEntityId")
void updateStatusAndRemoveFromDictionary(AnnotationEntityId annotationEntityId, AnnotationStatus annotationStatus, OffsetDateTime processedDate,
boolean removeFromDictionary);
} }