Skip to content

Commit

Permalink
feature/like-count-added-blog-list
Browse files Browse the repository at this point in the history
  • Loading branch information
rohit-zip committed Aug 30, 2024
1 parent 4bfc333 commit 6ae9930
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,5 @@ public class BlogResponseForList {
private Date dateUpdated;
private List<TopicsNested> topics = new ArrayList<>();
private String coverImage;
private long likes;
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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
Expand All @@ -24,22 +27,32 @@ public class BlogDocumentToBlogResponseForListTransformer implements Transform<B

private final ModelMapper modelMapper;
private final ProfileInternalResponseFeignCall profileInternalResponseFeignCall;
private final LikeDocumentDao likeDocumentDao;

public BlogDocumentToBlogResponseForListTransformer(ModelMapper modelMapper, ProfileInternalResponseFeignCall profileInternalResponseFeignCall) {
public BlogDocumentToBlogResponseForListTransformer(
ModelMapper modelMapper,
ProfileInternalResponseFeignCall profileInternalResponseFeignCall,
LikeDocumentDao likeDocumentDao
) {
this.modelMapper = modelMapper;
this.profileInternalResponseFeignCall = profileInternalResponseFeignCall;
this.likeDocumentDao = likeDocumentDao;
}

@Override
public BlogResponseForList transform(BlogDocument blogDocument) {
ProfileInternalResponse profileInternalResponse = profileInternalResponseFeignCall.callFeign(blogDocument.getUserId())
.orElseThrow(() -> new BadRequestException(DataErrorCodes.PROFILE_DATA_NOT_FOUND_FEIGN));
CompletableFuture<ProfileInternalResponse> profileInternalResponseCompletableFuture = CompletableFuture.supplyAsync(() -> profileInternalResponseFeignCall.callFeign(blogDocument.getUserId())
.orElseThrow(() -> new BadRequestException(DataErrorCodes.PROFILE_DATA_NOT_FOUND_FEIGN)));
CompletableFuture<Long> 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;
}
}

0 comments on commit 6ae9930

Please sign in to comment.