diff --git a/src/main/java/com/bloggios/blog/payload/response/BlogResponse.java b/src/main/java/com/bloggios/blog/payload/response/BlogResponse.java index d34b05c..01beaac 100644 --- a/src/main/java/com/bloggios/blog/payload/response/BlogResponse.java +++ b/src/main/java/com/bloggios/blog/payload/response/BlogResponse.java @@ -44,4 +44,5 @@ public class BlogResponse { private String seoTitle; private String canonicalUrl; private String chapterName; + private Long likes; } diff --git a/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseTransformer.java b/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseTransformer.java index 9c9cbaa..c418d3d 100644 --- a/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseTransformer.java +++ b/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseTransformer.java @@ -2,6 +2,7 @@ import com.bloggios.blog.constants.DataErrorCodes; import com.bloggios.blog.dao.implementation.esimplementation.ChapterDocumentDao; +import com.bloggios.blog.dao.implementation.esimplementation.LikeDocumentDao; import com.bloggios.blog.document.BlogDocument; import com.bloggios.blog.document.ChapterDocument; import com.bloggios.blog.exception.payloads.BadRequestException; @@ -9,6 +10,7 @@ import com.bloggios.blog.payload.response.BlogResponse; import com.bloggios.blog.payload.response.ProfileInternalResponse; import com.bloggios.blog.transformer.Transform; +import lombok.RequiredArgsConstructor; import org.modelmapper.ModelMapper; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; @@ -26,23 +28,21 @@ */ @Component +@RequiredArgsConstructor public class BlogDocumentToBlogResponseTransformer implements Transform { private final ModelMapper modelMapper; private final ProfileInternalResponseFeignCall profileInternalResponseFeignCall; private final ChapterDocumentDao chapterDocumentDao; - - public BlogDocumentToBlogResponseTransformer(ModelMapper modelMapper, ProfileInternalResponseFeignCall profileInternalResponseFeignCall, ChapterDocumentDao chapterDocumentDao) { - this.modelMapper = modelMapper; - this.profileInternalResponseFeignCall = profileInternalResponseFeignCall; - this.chapterDocumentDao = chapterDocumentDao; - } + private final LikeDocumentDao likeDocumentDao; @Override public BlogResponse transform(BlogDocument blogDocument) { BlogResponse blogResponse = modelMapper.map(blogDocument, BlogResponse.class); CompletableFuture profileInternalResponseCompletableFuture = CompletableFuture.supplyAsync(() -> profileInternalResponseFeignCall.callFeign(blogDocument.getUserId()) .orElseThrow(() -> new BadRequestException(DataErrorCodes.PROFILE_DATA_NOT_FOUND_FEIGN))); + CompletableFuture likeCountCompletableFuture = CompletableFuture.supplyAsync(() -> likeDocumentDao.countLikeDocumentByDestinationId(blogDocument.getBlogId())); + CompletableFuture.allOf(profileInternalResponseCompletableFuture, likeCountCompletableFuture); ChapterDocument chapterDocument = null; if (StringUtils.hasText(blogDocument.getChapterId())) { chapterDocument = chapterDocumentDao.findById(blogDocument.getChapterId()) @@ -55,6 +55,7 @@ public BlogResponse transform(BlogDocument blogDocument) { blogResponse.setProfileImage(profileInternalResponse.getProfileImage()); blogResponse.setBadge(profileInternalResponse.isBadge()); blogResponse.setChapterName(Objects.nonNull(chapterDocument) ? chapterDocument.getChapterName() : null); + blogResponse.setLikes(likeCountCompletableFuture.join() != null ? likeCountCompletableFuture.join() : 0); return blogResponse; } }