001
002package com.commercetools.api.predicates.query.product;
003
004import java.util.function.Function;
005
006import com.commercetools.api.predicates.query.*;
007
008public class ProductProjectionQueryBuilderDsl {
009    public ProductProjectionQueryBuilderDsl() {
010    }
011
012    public static ProductProjectionQueryBuilderDsl of() {
013        return new ProductProjectionQueryBuilderDsl();
014    }
015
016    public StringComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> id() {
017        return new StringComparisonPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("id")),
018            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
019    }
020
021    public LongComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> version() {
022        return new LongComparisonPredicateBuilder<>(
023            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("version")),
024            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
025    }
026
027    public DateTimeComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> createdAt() {
028        return new DateTimeComparisonPredicateBuilder<>(
029            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("createdAt")),
030            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
031    }
032
033    public DateTimeComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> lastModifiedAt() {
034        return new DateTimeComparisonPredicateBuilder<>(
035            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("lastModifiedAt")),
036            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
037    }
038
039    public StringComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> key() {
040        return new StringComparisonPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("key")),
041            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
042    }
043
044    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> productType(
045            Function<com.commercetools.api.predicates.query.product_type.ProductTypeReferenceQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.product_type.ProductTypeReferenceQueryBuilderDsl>> fn) {
046        return new CombinationQueryPredicate<>(
047            ContainerQueryPredicate.of()
048                    .parent(ConstantQueryPredicate.of().constant("productType"))
049                    .inner(fn.apply(
050                        com.commercetools.api.predicates.query.product_type.ProductTypeReferenceQueryBuilderDsl.of())),
051            ProductProjectionQueryBuilderDsl::of);
052    }
053
054    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> name(
055            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
056        return new CombinationQueryPredicate<>(
057            ContainerQueryPredicate.of()
058                    .parent(ConstantQueryPredicate.of().constant("name"))
059                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
060            ProductProjectionQueryBuilderDsl::of);
061    }
062
063    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> description(
064            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
065        return new CombinationQueryPredicate<>(
066            ContainerQueryPredicate.of()
067                    .parent(ConstantQueryPredicate.of().constant("description"))
068                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
069            ProductProjectionQueryBuilderDsl::of);
070    }
071
072    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> slug(
073            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
074        return new CombinationQueryPredicate<>(
075            ContainerQueryPredicate.of()
076                    .parent(ConstantQueryPredicate.of().constant("slug"))
077                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
078            ProductProjectionQueryBuilderDsl::of);
079    }
080
081    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> categories(
082            Function<com.commercetools.api.predicates.query.category.CategoryReferenceQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.category.CategoryReferenceQueryBuilderDsl>> fn) {
083        return new CombinationQueryPredicate<>(
084            ContainerQueryPredicate.of()
085                    .parent(ConstantQueryPredicate.of().constant("categories"))
086                    .inner(fn.apply(
087                        com.commercetools.api.predicates.query.category.CategoryReferenceQueryBuilderDsl.of())),
088            ProductProjectionQueryBuilderDsl::of);
089    }
090
091    public CollectionPredicateBuilder<ProductProjectionQueryBuilderDsl> categories() {
092        return new CollectionPredicateBuilder<>(
093            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("categories")),
094            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
095    }
096
097    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> categoryOrderHints(
098            Function<com.commercetools.api.predicates.query.product.CategoryOrderHintsQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.product.CategoryOrderHintsQueryBuilderDsl>> fn) {
099        return new CombinationQueryPredicate<>(
100            ContainerQueryPredicate.of()
101                    .parent(ConstantQueryPredicate.of().constant("categoryOrderHints"))
102                    .inner(fn.apply(
103                        com.commercetools.api.predicates.query.product.CategoryOrderHintsQueryBuilderDsl.of())),
104            ProductProjectionQueryBuilderDsl::of);
105    }
106
107    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> metaTitle(
108            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
109        return new CombinationQueryPredicate<>(
110            ContainerQueryPredicate.of()
111                    .parent(ConstantQueryPredicate.of().constant("metaTitle"))
112                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
113            ProductProjectionQueryBuilderDsl::of);
114    }
115
116    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> metaDescription(
117            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
118        return new CombinationQueryPredicate<>(
119            ContainerQueryPredicate.of()
120                    .parent(ConstantQueryPredicate.of().constant("metaDescription"))
121                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
122            ProductProjectionQueryBuilderDsl::of);
123    }
124
125    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> metaKeywords(
126            Function<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl>> fn) {
127        return new CombinationQueryPredicate<>(
128            ContainerQueryPredicate.of()
129                    .parent(ConstantQueryPredicate.of().constant("metaKeywords"))
130                    .inner(fn.apply(com.commercetools.api.predicates.query.common.LocalizedStringQueryBuilderDsl.of())),
131            ProductProjectionQueryBuilderDsl::of);
132    }
133
134    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> searchKeywords(
135            Function<com.commercetools.api.predicates.query.product.SearchKeywordsQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.product.SearchKeywordsQueryBuilderDsl>> fn) {
136        return new CombinationQueryPredicate<>(
137            ContainerQueryPredicate.of()
138                    .parent(ConstantQueryPredicate.of().constant("searchKeywords"))
139                    .inner(fn.apply(com.commercetools.api.predicates.query.product.SearchKeywordsQueryBuilderDsl.of())),
140            ProductProjectionQueryBuilderDsl::of);
141    }
142
143    public BooleanComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> hasStagedChanges() {
144        return new BooleanComparisonPredicateBuilder<>(
145            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("hasStagedChanges")),
146            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
147    }
148
149    public BooleanComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> published() {
150        return new BooleanComparisonPredicateBuilder<>(
151            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("published")),
152            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
153    }
154
155    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> masterVariant(
156            Function<com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl>> fn) {
157        return new CombinationQueryPredicate<>(
158            ContainerQueryPredicate.of()
159                    .parent(ConstantQueryPredicate.of().constant("masterVariant"))
160                    .inner(fn.apply(com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl.of())),
161            ProductProjectionQueryBuilderDsl::of);
162    }
163
164    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> variants(
165            Function<com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl>> fn) {
166        return new CombinationQueryPredicate<>(
167            ContainerQueryPredicate.of()
168                    .parent(ConstantQueryPredicate.of().constant("variants"))
169                    .inner(fn.apply(com.commercetools.api.predicates.query.product.ProductVariantQueryBuilderDsl.of())),
170            ProductProjectionQueryBuilderDsl::of);
171    }
172
173    public CollectionPredicateBuilder<ProductProjectionQueryBuilderDsl> variants() {
174        return new CollectionPredicateBuilder<>(BinaryQueryPredicate.of().left(new ConstantQueryPredicate("variants")),
175            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
176    }
177
178    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> taxCategory(
179            Function<com.commercetools.api.predicates.query.tax_category.TaxCategoryReferenceQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.tax_category.TaxCategoryReferenceQueryBuilderDsl>> fn) {
180        return new CombinationQueryPredicate<>(
181            ContainerQueryPredicate.of()
182                    .parent(ConstantQueryPredicate.of().constant("taxCategory"))
183                    .inner(fn.apply(
184                        com.commercetools.api.predicates.query.tax_category.TaxCategoryReferenceQueryBuilderDsl.of())),
185            ProductProjectionQueryBuilderDsl::of);
186    }
187
188    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> state(
189            Function<com.commercetools.api.predicates.query.state.StateReferenceQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.state.StateReferenceQueryBuilderDsl>> fn) {
190        return new CombinationQueryPredicate<>(
191            ContainerQueryPredicate.of()
192                    .parent(ConstantQueryPredicate.of().constant("state"))
193                    .inner(fn.apply(com.commercetools.api.predicates.query.state.StateReferenceQueryBuilderDsl.of())),
194            ProductProjectionQueryBuilderDsl::of);
195    }
196
197    public CombinationQueryPredicate<ProductProjectionQueryBuilderDsl> reviewRatingStatistics(
198            Function<com.commercetools.api.predicates.query.review.ReviewRatingStatisticsQueryBuilderDsl, CombinationQueryPredicate<com.commercetools.api.predicates.query.review.ReviewRatingStatisticsQueryBuilderDsl>> fn) {
199        return new CombinationQueryPredicate<>(
200            ContainerQueryPredicate.of()
201                    .parent(ConstantQueryPredicate.of().constant("reviewRatingStatistics"))
202                    .inner(fn.apply(
203                        com.commercetools.api.predicates.query.review.ReviewRatingStatisticsQueryBuilderDsl.of())),
204            ProductProjectionQueryBuilderDsl::of);
205    }
206
207    public StringComparisonPredicateBuilder<ProductProjectionQueryBuilderDsl> priceMode() {
208        return new StringComparisonPredicateBuilder<>(
209            BinaryQueryPredicate.of().left(new ConstantQueryPredicate("priceMode")),
210            p -> new CombinationQueryPredicate<>(p, ProductProjectionQueryBuilderDsl::of));
211    }
212
213}