Merge branch 'feature/provider-pagination-total-count' into 'release'

This change handles the new DTO received from Marketplace Service over the...

See merge request theappsmith/internal-tools-server!255
This commit is contained in:
Trisha Anand 2020-04-03 18:01:52 +00:00
commit 1896e9ec0c
4 changed files with 23 additions and 8 deletions

View File

@ -11,6 +11,7 @@ import com.appsmith.external.models.Statistics;
import com.appsmith.server.constants.Url; import com.appsmith.server.constants.Url;
import com.appsmith.server.domains.Action; import com.appsmith.server.domains.Action;
import com.appsmith.server.domains.Datasource; import com.appsmith.server.domains.Datasource;
import com.appsmith.server.dtos.ProviderPaginatedDTO;
import com.appsmith.server.dtos.ResponseDTO; import com.appsmith.server.dtos.ResponseDTO;
import com.appsmith.server.dtos.SearchResponseDTO; import com.appsmith.server.dtos.SearchResponseDTO;
import com.appsmith.server.services.MarketplaceService; import com.appsmith.server.services.MarketplaceService;
@ -127,7 +128,7 @@ public class MarketplaceController {
} }
@GetMapping("/providers") @GetMapping("/providers")
public Mono<ResponseDTO<List<Provider>>> getAllProvidersFromMarketplace(@RequestParam MultiValueMap<String, String> params) { public Mono<ResponseDTO<ProviderPaginatedDTO>> getAllProvidersFromMarketplace(@RequestParam MultiValueMap<String, String> params) {
log.debug("Going to get all providers from Marketplace"); log.debug("Going to get all providers from Marketplace");
return marketplaceService.getProviders(params) return marketplaceService.getProviders(params)
.map(resources -> new ResponseDTO<>(HttpStatus.OK.value(), resources, null)); .map(resources -> new ResponseDTO<>(HttpStatus.OK.value(), resources, null));

View File

@ -0,0 +1,14 @@
package com.appsmith.server.dtos;
import com.appsmith.external.models.Provider;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
@Getter
@Setter
public class ProviderPaginatedDTO {
List<Provider> providers;
Long total;
}

View File

@ -1,14 +1,14 @@
package com.appsmith.server.services; package com.appsmith.server.services;
import com.appsmith.external.models.ApiTemplate; import com.appsmith.external.models.ApiTemplate;
import com.appsmith.external.models.Provider; import com.appsmith.server.dtos.ProviderPaginatedDTO;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.util.List; import java.util.List;
public interface MarketplaceService { public interface MarketplaceService {
Mono<List<Provider>> getProviders(MultiValueMap<String, String> params); Mono<ProviderPaginatedDTO> getProviders(MultiValueMap<String, String> params);
Mono<List<ApiTemplate>> getTemplates(MultiValueMap<String, String> params); Mono<List<ApiTemplate>> getTemplates(MultiValueMap<String, String> params);
Mono<List<String>> getCategories(); Mono<List<String>> getCategories();
Mono<Boolean> subscribeAndUpdateStatisticsOfProvider(String providerId); Mono<Boolean> subscribeAndUpdateStatisticsOfProvider(String providerId);

View File

@ -1,8 +1,8 @@
package com.appsmith.server.services; package com.appsmith.server.services;
import com.appsmith.external.models.ApiTemplate; import com.appsmith.external.models.ApiTemplate;
import com.appsmith.external.models.Provider;
import com.appsmith.server.configurations.MarketplaceConfig; import com.appsmith.server.configurations.MarketplaceConfig;
import com.appsmith.server.dtos.ProviderPaginatedDTO;
import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithError;
import com.appsmith.server.exceptions.AppsmithException; import com.appsmith.server.exceptions.AppsmithException;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
@ -58,7 +58,7 @@ public class MarketplaceServiceImpl implements MarketplaceService {
} }
@Override @Override
public Mono<List<Provider>> getProviders(MultiValueMap<String, String> params) { public Mono<ProviderPaginatedDTO> getProviders(MultiValueMap<String, String> params) {
URI uri = buildFullURI(params, PROVIDER_PATH); URI uri = buildFullURI(params, PROVIDER_PATH);
return webClient return webClient
@ -67,13 +67,13 @@ public class MarketplaceServiceImpl implements MarketplaceService {
.retrieve() .retrieve()
.bodyToMono(String.class) .bodyToMono(String.class)
.flatMap(stringBody -> { .flatMap(stringBody -> {
List<Provider> providerList = null; ProviderPaginatedDTO providersPaginated = null;
try { try {
providerList = objectMapper.readValue(stringBody, ArrayList.class); providersPaginated = objectMapper.readValue(stringBody, ProviderPaginatedDTO.class);
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
return Mono.error(new AppsmithException(AppsmithError.JSON_PROCESSING_ERROR, e)); return Mono.error(new AppsmithException(AppsmithError.JSON_PROCESSING_ERROR, e));
} }
return Mono.just(providerList); return Mono.just(providersPaginated);
}) })
.timeout(Duration.ofMillis(timeoutInMillis)) .timeout(Duration.ofMillis(timeoutInMillis))
.doOnError(error -> Mono.error(new AppsmithException(AppsmithError.MARKETPLACE_TIMEOUT))); .doOnError(error -> Mono.error(new AppsmithException(AppsmithError.MARKETPLACE_TIMEOUT)));