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}