From 53d1781c61e0ad31621b2391c502361123ba9af4 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Fri, 21 Jun 2024 16:04:37 +0200 Subject: [PATCH] RED-9392: added new entity DownloadStatusReportEntity and corresponding repository DownloadStatusReportRepository --- .../download/DownloadStatusReportEntity.java | 40 +++++++++++++++++++ .../ReportTemplatePersistenceService.java | 17 ++++---- .../DownloadStatusReportRepository.java | 27 +++++++++++++ .../db/changelog/db.changelog-tenant.yaml | 2 + ...ey-constraint-download-status-reports.yaml | 9 +++++ 5 files changed, 88 insertions(+), 7 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusReportEntity.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusReportRepository.java create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusReportEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusReportEntity.java new file mode 100644 index 000000000..5f34b3603 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusReportEntity.java @@ -0,0 +1,40 @@ +package com.iqser.red.service.persistence.management.v1.processor.entity.download; + +import java.io.Serializable; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "download_status_reports") +public class DownloadStatusReportEntity { + + @EmbeddedId + private DownloadStatusReportId downloadStatusReportId; + + @Embeddable + @Data + @NoArgsConstructor + @AllArgsConstructor + public class DownloadStatusReportId implements Serializable { + + @Column(name = "download_status_entity_storage_id") + private String downloadStatusEntityStorageId; + + @Column(name = "reports_template_id") + private String reportsTemplateId; + + } + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java index e321e9d88..1a8ddc47c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ReportTemplatePersistenceService.java @@ -4,16 +4,16 @@ import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; import java.util.List; -import jakarta.transaction.Transactional; - import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; 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.DownloadStatusReportRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.ReportTemplateUpdateRequest; +import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; @Service @@ -22,6 +22,7 @@ public class ReportTemplatePersistenceService { private final ReportTemplateRepository reportTemplateRepository; private final DossierTemplateRepository dossierTemplateRepository; + private final DownloadStatusReportRepository downloadStatusReportRepository; public void insert(String dossierTemplateId, String templateId, String storageId, String templateName, boolean activeByDefault, boolean multiFileReport) { @@ -43,6 +44,7 @@ public class ReportTemplatePersistenceService { @Transactional public void delete(String templateId) { + downloadStatusReportRepository.deleteByReportsTemplateId(templateId); reportTemplateRepository.deleteById(templateId); } @@ -56,7 +58,8 @@ public class ReportTemplatePersistenceService { public ReportTemplateEntity find(String templateId) { - return reportTemplateRepository.findById(templateId).orElseThrow(() -> new NotFoundException("Report Template not found: " + templateId)); + return reportTemplateRepository.findById(templateId) + .orElseThrow(() -> new NotFoundException("Report Template not found: " + templateId)); } @@ -65,10 +68,10 @@ public class ReportTemplatePersistenceService { public void updateTemplate(String dossierTemplateId, String templateId, ReportTemplateUpdateRequest updateRequest) { int countUpdate = reportTemplateRepository.updateReportTemplate(dossierTemplateId, - templateId, - updateRequest.getFileName(), - updateRequest.isMultiFileReport(), - updateRequest.isActiveByDefault()); + templateId, + updateRequest.getFileName(), + updateRequest.isMultiFileReport(), + updateRequest.isActiveByDefault()); if (countUpdate == 0) { throw new NotFoundException("Report Template not found for dossier template Id: " + dossierTemplateId + " and templateId: " + templateId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusReportRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusReportRepository.java new file mode 100644 index 000000000..c8022b283 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DownloadStatusReportRepository.java @@ -0,0 +1,27 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; + +import java.util.List; + +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 com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusReportEntity; + +public interface DownloadStatusReportRepository extends JpaRepository { + + @Modifying(flushAutomatically = true, clearAutomatically = true) + @Query("DELETE FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.downloadStatusEntityStorageId = :downloadStatusEntityStorageId") + void deleteByDownloadStatusReportId(@Param("downloadStatusEntityStorageId") String downloadStatusEntityStorageId); + + + @Modifying(flushAutomatically = true, clearAutomatically = true) + @Query("DELETE FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.reportsTemplateId = :reportsTemplateId") + void deleteByReportsTemplateId(@Param("reportsTemplateId") String reportsTemplateId); + + + @Query("SELECT d FROM DownloadStatusReportEntity d WHERE d.downloadStatusReportId.reportsTemplateId = :reportsTemplateId") + List findByReportsTemplateId(@Param("reportsTemplateId") String reportsTemplateId); + +} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml index 5d72ae197..0816dcb1c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/db.changelog-tenant.yaml @@ -201,3 +201,5 @@ databaseChangeLog: file: db/changelog/tenant/125-drop-not-null-for-legal-basis-in-manual-recategorization.yaml - include: file: db/changelog/tenant/126-add-uuid-to-download-status.yaml + - include: + file: db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml new file mode 100644 index 000000000..5998cc94b --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/db/changelog/tenant/130-add-primary-key-constraint-download-status-reports.yaml @@ -0,0 +1,9 @@ +databaseChangeLog: + - changeSet: + id: add-primary-key-constraint-download-status-reports + author: ali + changes: + - addPrimaryKey: + columnNames: download_status_entity_storage_id,reports_template_id + constraintName: download_status_reports_pkey + tableName: download_status_reports \ No newline at end of file -- 2.47.2