diff --git a/src/main/java/com/bloggios/blog/payload/response/BlogResponseForList.java b/src/main/java/com/bloggios/blog/payload/response/BlogResponseForList.java index 362b0f7..82d5ca7 100644 --- a/src/main/java/com/bloggios/blog/payload/response/BlogResponseForList.java +++ b/src/main/java/com/bloggios/blog/payload/response/BlogResponseForList.java @@ -37,4 +37,5 @@ public class BlogResponseForList { private Date dateUpdated; private List topics = new ArrayList<>(); private String coverImage; + private long likes; } diff --git a/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseForListTransformer.java b/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseForListTransformer.java index 3fc1323..b02d58a 100644 --- a/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseForListTransformer.java +++ b/src/main/java/com/bloggios/blog/transformer/implementation/BlogDocumentToBlogResponseForListTransformer.java @@ -1,6 +1,7 @@ package com.bloggios.blog.transformer.implementation; import com.bloggios.blog.constants.DataErrorCodes; +import com.bloggios.blog.dao.implementation.esimplementation.LikeDocumentDao; import com.bloggios.blog.document.BlogDocument; import com.bloggios.blog.exception.payloads.BadRequestException; import com.bloggios.blog.feign.implementation.ProfileInternalResponseFeignCall; @@ -10,6 +11,8 @@ import org.modelmapper.ModelMapper; import org.springframework.stereotype.Component; +import java.util.concurrent.CompletableFuture; + /** * Owner - Rohit Parihar and Bloggios * Author - rohit @@ -24,22 +27,32 @@ public class BlogDocumentToBlogResponseForListTransformer implements Transform new BadRequestException(DataErrorCodes.PROFILE_DATA_NOT_FOUND_FEIGN)); + 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); + ProfileInternalResponse profileInternalResponse = profileInternalResponseCompletableFuture.join(); BlogResponseForList blogResponseList = modelMapper.map(blogDocument, BlogResponseForList.class); blogResponseList.setName(profileInternalResponse.getName()); blogResponseList.setEmail(profileInternalResponse.getEmail()); blogResponseList.setProfileTag(profileInternalResponse.getProfileTag()); blogResponseList.setProfileImage(profileInternalResponse.getProfileImage()); blogResponseList.setBadge(profileInternalResponse.isBadge()); + blogResponseList.setLikes(likeCountCompletableFuture.join()); return blogResponseList; } }