001
002package com.commercetools.api.predicates.query.order;
003
004import java.util.function.Function;
005
006import com.commercetools.api.predicates.query.*;
007
008public class DeliveryQueryBuilderDsl {
009    public DeliveryQueryBuilderDsl() {
010    }
011
012    public static DeliveryQueryBuilderDsl of() {
013        return new DeliveryQueryBuilderDsl();
014    }
015
016    public StringComparisonPredicateBuilder<DeliveryQueryBuilderDsl> id() {
017        return new StringComparisonPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("id")),
018            p -> new CombinationQueryPredicate<>(p, DeliveryQueryBuilderDsl::of));
019    }
020
021    public StringComparisonPredicateBuilder<DeliveryQueryBuilderDsl> key() {
022        return new StringComparisonPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("key")),
023            p -> new CombinationQueryPredicate<>(p, DeliveryQueryBuilderDsl::of));
024    }
025
026    public DateTimeComparisonPredicateBuilder<DeliveryQueryBuilderDsl> createdAt() {
027        return new DateTimeComparisonPredicateBuilder<>(
028            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("createdAt")),
029            p -> new CombinationQueryPredicate<>(p, DeliveryQueryBuilderDsl::of));
030    }
031
032    public CombinationQueryPredicate<DeliveryQueryBuilderDsl> items(
033            Function<com.commercetools.api.predicates.query.order.DeliveryItemQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.order.DeliveryItemQueryBuilderDsl>> fn) {
034        return new CombinationQueryPredicate<>(
035            ContainerQueryPredicate.of()
036                    .parent(ConstantQueryPredicate.of().constant("items"))
037                    .inner(fn.apply(com.commercetools.api.predicates.query.order.DeliveryItemQueryBuilderDsl.of())),
038            DeliveryQueryBuilderDsl::of);
039    }
040
041    public CollectionPredicateBuilder<DeliveryQueryBuilderDsl> items() {
042        return new CollectionPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("items")),
043            p -> new CombinationQueryPredicate<>(p, DeliveryQueryBuilderDsl::of));
044    }
045
046    public CombinationQueryPredicate<DeliveryQueryBuilderDsl> parcels(
047            Function<com.commercetools.api.predicates.query.order.ParcelQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.order.ParcelQueryBuilderDsl>> fn) {
048        return new CombinationQueryPredicate<>(
049            ContainerQueryPredicate.of()
050                    .parent(ConstantQueryPredicate.of().constant("parcels"))
051                    .inner(fn.apply(com.commercetools.api.predicates.query.order.ParcelQueryBuilderDsl.of())),
052            DeliveryQueryBuilderDsl::of);
053    }
054
055    public CollectionPredicateBuilder<DeliveryQueryBuilderDsl> parcels() {
056        return new CollectionPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("parcels")),
057            p -> new CombinationQueryPredicate<>(p, DeliveryQueryBuilderDsl::of));
058    }
059
060    public CombinationQueryPredicate<DeliveryQueryBuilderDsl> address(
061            Function<com.commercetools.api.predicates.query.common.AddressQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.AddressQueryBuilderDsl>> fn) {
062        return new CombinationQueryPredicate<>(
063            ContainerQueryPredicate.of()
064                    .parent(ConstantQueryPredicate.of().constant("address"))
065                    .inner(fn.apply(com.commercetools.api.predicates.query.common.AddressQueryBuilderDsl.of())),
066            DeliveryQueryBuilderDsl::of);
067    }
068
069    public CombinationQueryPredicate<DeliveryQueryBuilderDsl> custom(
070            Function<com.commercetools.api.predicates.query.type.CustomFieldsQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.type.CustomFieldsQueryBuilderDsl>> fn) {
071        return new CombinationQueryPredicate<>(
072            ContainerQueryPredicate.of()
073                    .parent(ConstantQueryPredicate.of().constant("custom"))
074                    .inner(fn.apply(com.commercetools.api.predicates.query.type.CustomFieldsQueryBuilderDsl.of())),
075            DeliveryQueryBuilderDsl::of);
076    }
077
078}