diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java index 5d265e70e..a03eebe72 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/ViewedPagesPersistenceService.java @@ -17,13 +17,18 @@ public class ViewedPagesPersistenceService { private final ViewedPagesRepository viewedPagesRepository; private final FileRepository fileRepository; + @Transactional public void insertPage(String fileId, String userId, int page) { - - var viewedPage = new ViewedPageEntity(); - viewedPage.setViewedTime(OffsetDateTime.now()); - viewedPage.setId(new ViewedPageEntity.ViewedPageId(null, page, userId)); - viewedPage.setFile(fileRepository.getOne(fileId)); - viewedPagesRepository.save(viewedPage); + var id = new ViewedPageEntity.ViewedPageId(fileId, page, userId); + viewedPagesRepository.findById(id).ifPresentOrElse((viewedPage) -> { + viewedPage.setViewedTime(OffsetDateTime.now()); + }, () -> { + var viewedPage = new ViewedPageEntity(); + viewedPage.setViewedTime(OffsetDateTime.now()); + viewedPage.setId(new ViewedPageEntity.ViewedPageId(null, page, userId)); + viewedPage.setFile(fileRepository.getOne(fileId)); + viewedPagesRepository.save(viewedPage); + }); }