vidakovic commented on code in PR #5648:
URL: https://github.com/apache/fineract/pull/5648#discussion_r2956220567
##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/search/api/SearchApiResource.java:
##########
@@ -35,69 +35,75 @@
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import java.util.List;
-import java.util.Set;
import lombok.RequiredArgsConstructor;
-import
org.apache.fineract.portfolio.search.SearchConstants.SearchResponseParameters;
-import org.apache.fineract.portfolio.search.data.AdHocQueryDataValidator;
-import org.apache.fineract.portfolio.search.data.AdHocQuerySearchConditions;
+import org.apache.fineract.portfolio.search.data.AdHocQuerySearchRequest;
import org.apache.fineract.portfolio.search.data.AdHocSearchQueryData;
import org.apache.fineract.portfolio.search.data.SearchConditions;
import org.apache.fineract.portfolio.search.data.SearchData;
-import org.apache.fineract.portfolio.search.service.SearchReadPlatformService;
+import org.apache.fineract.portfolio.search.service.SearchReadService;
import org.springframework.stereotype.Component;
@Path("/v1/search")
@Component
@Tag(name = "Search API", description = "Search API allows to search scoped
resources clients, loans and groups on specified fields.")
@RequiredArgsConstructor
+@Consumes({ MediaType.APPLICATION_JSON })
+@Produces({ MediaType.APPLICATION_JSON })
public class SearchApiResource {
- private static final Set<String> SEARCH_RESPONSE_PARAMETERS =
SearchResponseParameters.getAllValues();
-
- private final SearchReadPlatformService searchReadPlatformService;
- private final AdHocQueryDataValidator fromApiJsonDeserializer;
+ private final SearchReadService searchReadService;
@GET
@Path("/template")
- @Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
- @Operation(summary = "Retrive Adhoc Search query template", description =
"Mandatory Fields\n" + "\n" + "search?query=000000001\n")
+ @Operation(summary = "Retrive Adhoc Search query template", description =
"""
+ Mandatory Fields
+
+ search?query=000000001
+ """)
public AdHocSearchQueryData retrieveAdHocSearchQueryTemplate() {
- return this.searchReadPlatformService.retrieveAdHocQueryTemplate();
+ return searchReadService.retrieveAdHocQueryTemplate();
}
@GET
- @Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
- @Operation(summary = "Search Resources", description = "Example
Requests:\n" + "\n" + "search?query=000000001\n" + "\n" + "\n"
- + "search?query=Petra&resource=clients,groups\n" + "\n" + "\n" +
"search?query=Petra&resource=clients,groups&exactMatch=true")
+ @Operation(summary = "Search Resources", description = """
+ Example Requests:
+
+ search?query=000000001
+
+
+ search?query=Petra&resource=clients,groups
+
+
+ search?query=Petra&resource=clients,groups&exactMatch=true""")
@ApiResponse(responseCode = "200", description = "OK", content =
@Content(array = @ArraySchema(schema = @Schema(implementation =
SearchApiResourceSwagger.GetSearchResponse.class))))
public List<SearchData> searchData(@QueryParam("query")
@Parameter(description = "query") final String query,
@QueryParam("resource") @Parameter(description = "resource") final
String resource,
@DefaultValue("false") @QueryParam("exactMatch")
@Parameter(description = "exactMatch") Boolean exactMatch) {
final SearchConditions searchConditions = new SearchConditions(query,
resource, exactMatch);
- return
this.searchReadPlatformService.retriveMatchingData(searchConditions);
+ return searchReadService.retriveMatchingData(searchConditions);
}
@POST
@Path("/advance")
- @Consumes({ MediaType.APPLICATION_JSON })
- @Produces({ MediaType.APPLICATION_JSON })
- @Operation(summary = "Adhoc query search", description = "AdHocQuery
search has more search options, it is a POST request, it uses request body to
send search parameters\n"
- + "\n" + "\n" + "Mandatory fields:" + "entities" + "\n" + "\n" +
"Optional fields:"
- + "loanStatus, loanProducts, offices, loanDateOption,
loanFromDate, loanToDate, \n"
- + "includeOutStandingAmountPercentage,
outStandingAmountPercentageCondition, \n"
- + "minOutStandingAmountPercentage and
maxOutStandingAmountPercentage OR outStandingAmountPercentage, \n"
- + "includeOutstandingAmount, outstandingAmountCondition, \n"
- + "minOutstandingAmount and maxOutstandingAmount OR
outstandingAmount")
- @RequestBody(required = true, content = @Content(schema =
@Schema(implementation =
SearchApiResourceSwagger.PostAdhocQuerySearchRequest.class)))
- public List<AdHocSearchQueryData> advancedSearch(final String json) {
+ @Operation(summary = "Adhoc query search", description = """
+ AdHocQuery search has more search options, it is a POST request, \
+ it uses request body to send search parameters
+
- final AdHocQuerySearchConditions searchConditions =
this.fromApiJsonDeserializer.retrieveSearchConditions(json);
+ Mandatory fields: entities
+
+ Optional fields: \
+ loanStatus, loanProducts, offices, loanDateOption, loanFromDate,
loanToDate,
+ includeOutStandingAmountPercentage,
outStandingAmountPercentageCondition,
+ minOutStandingAmountPercentage and maxOutStandingAmountPercentage
OR outStandingAmountPercentage,
+ includeOutstandingAmount, outstandingAmountCondition,
+ minOutstandingAmount and maxOutstandingAmount OR
outstandingAmount""")
+ @RequestBody(required = true, content = @Content(schema =
@Schema(implementation =
SearchApiResourceSwagger.PostAdhocQuerySearchRequest.class)))
+ public List<AdHocSearchQueryData> advancedSearch(final
AdHocQuerySearchRequest request) {
- return
this.searchReadPlatformService.retrieveAdHocQueryMatchingData(searchConditions);
+ return searchReadService.retrieveAdHocQueryMatchingData(request);
Review Comment:
Interesting... POST request, but technically still a read operation... ok.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]