001
002package com.commercetools.api.predicates.query.shipping_method;
003
004import java.util.function.Function;
005
006import com.commercetools.api.predicates.query.*;
007
008public class ShippingRateQueryBuilderDsl {
009    public ShippingRateQueryBuilderDsl() {
010    }
011
012    public static ShippingRateQueryBuilderDsl of() {
013        return new ShippingRateQueryBuilderDsl();
014    }
015
016    public CombinationQueryPredicate<ShippingRateQueryBuilderDsl> price(
017            Function<com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl>> fn) {
018        return new CombinationQueryPredicate<>(
019            ContainerQueryPredicate.of()
020                    .parent(ConstantQueryPredicate.of().constant("price"))
021                    .inner(fn.apply(com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl.of())),
022            ShippingRateQueryBuilderDsl::of);
023    }
024
025    public CombinationQueryPredicate<ShippingRateQueryBuilderDsl> freeAbove(
026            Function<com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl>> fn) {
027        return new CombinationQueryPredicate<>(
028            ContainerQueryPredicate.of()
029                    .parent(ConstantQueryPredicate.of().constant("freeAbove"))
030                    .inner(fn.apply(com.commercetools.api.predicates.query.common.TypedMoneyQueryBuilderDsl.of())),
031            ShippingRateQueryBuilderDsl::of);
032    }
033
034    public BooleanComparisonPredicateBuilder<ShippingRateQueryBuilderDsl> isMatching() {
035        return new BooleanComparisonPredicateBuilder<>(
036            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("isMatching")),
037            p -> new CombinationQueryPredicate<>(p, ShippingRateQueryBuilderDsl::of));
038    }
039
040    public CombinationQueryPredicate<ShippingRateQueryBuilderDsl> tiers(
041            Function<com.commercetools.api.predicates.query.shipping_method.ShippingRatePriceTierQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.shipping_method.ShippingRatePriceTierQueryBuilderDsl>> fn) {
042        return new CombinationQueryPredicate<>(ContainerQueryPredicate.of()
043                .parent(ConstantQueryPredicate.of().constant("tiers"))
044                .inner(fn.apply(
045                    com.commercetools.api.predicates.query.shipping_method.ShippingRatePriceTierQueryBuilderDsl.of())),
046            ShippingRateQueryBuilderDsl::of);
047    }
048
049    public CollectionPredicateBuilder<ShippingRateQueryBuilderDsl> tiers() {
050        return new CollectionPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("tiers")),
051            p -> new CombinationQueryPredicate<>(p, ShippingRateQueryBuilderDsl::of));
052    }
053
054}