Skip to content
This repository has been archived by the owner on Aug 20, 2021. It is now read-only.

fix(apis): api lists are slow to display #315

Merged
merged 1 commit into from Jan 5, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -216,6 +216,7 @@ private ApiListItem convert(ApiEntity api) {
apiItem.setUpdatedAt(api.getUpdatedAt());
apiItem.setLabels(api.getLabels());
apiItem.setViews(api.getViews());
apiItem.setPrimaryOwner(api.getPrimaryOwner());

if (api.getVisibility() != null) {
apiItem.setVisibility(io.gravitee.management.model.Visibility.valueOf(api.getVisibility().toString()));
Expand All @@ -229,24 +230,12 @@ private ApiListItem convert(ApiEntity api) {
apiItem.setContextPath(api.getProxy().getContextPath());
}

// Add primary owner
Collection<MemberEntity> members = membershipService.getMembers(MembershipReferenceType.API, api.getId(), RoleScope.API, SystemRole.PRIMARY_OWNER.name());
if (! members.isEmpty()) {
MemberEntity primaryOwner = members.iterator().next();
UserEntity user = userService.findByName(primaryOwner.getUsername(), false);

PrimaryOwnerEntity owner = new PrimaryOwnerEntity();
owner.setUsername(user.getUsername());
owner.setEmail(user.getEmail());
owner.setFirstname(user.getFirstname());
owner.setLastname(user.getLastname());
apiItem.setPrimaryOwner(owner);
if (ratingService.isEnabled()) {
final RatingSummaryEntity ratingSummary = ratingService.findSummaryByApi(api.getId());
apiItem.setRate(ratingSummary.getAverageRate());
apiItem.setNumberOfRatings(ratingSummary.getNumberOfRatings());
}

final RatingSummaryEntity ratingSummary = ratingService.findSummaryByApi(api.getId());
apiItem.setRate(ratingSummary.getAverageRate());
apiItem.setNumberOfRatings(ratingSummary.getNumberOfRatings());

return apiItem;
}

Expand Down
Expand Up @@ -40,4 +40,6 @@ public interface RatingService {
void delete(String id);

void deleteAnswer(String ratingId, String answerId);

boolean isEnabled();
}
Expand Up @@ -88,6 +88,9 @@ public RatingEntity create(final NewRatingEntity ratingEntity) {

@Override
public RatingEntity createAnswer(final NewRatingAnswerEntity answerEntity) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
final Rating rating = findById(answerEntity.getRatingId());

Expand All @@ -108,6 +111,9 @@ public RatingEntity createAnswer(final NewRatingAnswerEntity answerEntity) {

@Override
public Page<RatingEntity> findByApi(final String api, final Pageable pageable) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
final Page<Rating> pageRating = ratingRepository.findByApiPageable(api, pageable);
final List<RatingEntity> ratingEntities =
Expand All @@ -122,6 +128,9 @@ public Page<RatingEntity> findByApi(final String api, final Pageable pageable) {

@Override
public RatingSummaryEntity findSummaryByApi(final String api) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
final List<Rating> ratings = ratingRepository.findByApi(api);
final RatingSummaryEntity ratingSummary = new RatingSummaryEntity();
Expand All @@ -141,6 +150,9 @@ public RatingSummaryEntity findSummaryByApi(final String api) {

@Override
public RatingEntity findByApiForConnectedUser(final String api) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
final Optional<Rating> ratingOptional = ratingRepository.findByApiAndUser(api, getAuthenticatedUsername());
if (ratingOptional.isPresent()) {
Expand All @@ -156,6 +168,9 @@ public RatingEntity findByApiForConnectedUser(final String api) {

@Override
public RatingEntity update(final UpdateRatingEntity ratingEntity) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
final Rating rating = findById(ratingEntity.getId());
final Rating oldRating = new Rating(rating);
Expand Down Expand Up @@ -184,6 +199,9 @@ public RatingEntity update(final UpdateRatingEntity ratingEntity) {

@Override
public void delete(final String id) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
Rating rating = findById(id);
ratingRepository.delete(id);
Expand All @@ -196,6 +214,9 @@ public void delete(final String id) {

@Override
public void deleteAnswer(final String ratingId, final String answerId) {
if (!enabled) {
throw new ApiRatingUnavailableException();
}
try {
Rating rating = findById(ratingId);
ratingAnswerRepository.delete(answerId);
Expand All @@ -206,6 +227,11 @@ public void deleteAnswer(final String ratingId, final String answerId) {
}
}

@Override
public boolean isEnabled() {
return enabled;
}

private Rating findById(String id) {
if (!enabled) {
throw new ApiRatingUnavailableException();
Expand Down