001
002package com.commercetools.api.client;
003
004import java.util.Collection;
005import java.util.List;
006
007import io.vrap.rmf.base.client.ApiMethod;
008import io.vrap.rmf.base.client.ClientRequestCommand;
009import io.vrap.rmf.base.client.RequestCommand;
010
011/**
012 * Interface with common methods for query endpoints
013 * @param <T> the type of the underlying request
014 * @param <TResult> the type of the underlying result model, like category or product.
015 */
016public interface PagedQueryResourceRequest<T extends PagedQueryResourceRequest<T, TResult, TQuery>, TResult, TQuery>
017        extends RequestCommand<TResult>, ClientRequestCommand<TResult>,
018        SimplePagedQueryResourceRequest<T, TResult, TQuery> {
019    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withLimit(final TValue limit);
020
021    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addLimit(final TValue limit);
022
023    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withOffset(final TValue offset);
024
025    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addOffset(final TValue offset);
026
027    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withSort(final TValue sort);
028
029    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addSort(final TValue sort);
030
031    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withWhere(final TValue where);
032
033    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addWhere(final TValue where);
034
035    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withExpand(final TValue expand);
036
037    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addExpand(final TValue expand);
038
039    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withWithTotal(final TValue withTotal);
040
041    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addWithTotal(final TValue withTotal);
042
043    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withPredicateVar(final String varName,
044            final TValue predicateVar);
045
046    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addPredicateVar(final String varName,
047            final TValue predicateVar);
048
049    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> withPredicateVar(final String varName,
050            final Collection<TValue> predicateVar);
051
052    <TValue> PagedQueryResourceRequest<T, TResult, TQuery> addPredicateVar(final String varName,
053            final Collection<TValue> predicateVar);
054
055    List<ApiMethod.ParamEntry<String, String>> getQueryParams();
056
057    List<String> getQueryParam(final String key);
058
059    String getFirstQueryParam(final String key);
060
061    default PagedQueryResourceRequest<T, TResult, TQuery> asPagedQueryResourceRequest() {
062        return this;
063    }
064}