001 002package com.commercetools.api.client; 003 004import java.util.List; 005import java.util.function.UnaryOperator; 006 007import com.commercetools.api.models.Versioned; 008import com.commercetools.api.models.shopping_list.ShoppingList; 009import com.commercetools.api.models.shopping_list.ShoppingListDraft; 010import com.commercetools.api.models.shopping_list.ShoppingListDraftBuilder; 011import com.commercetools.api.models.shopping_list.ShoppingListUpdate; 012import com.commercetools.api.models.shopping_list.ShoppingListUpdateAction; 013import com.commercetools.api.models.shopping_list.ShoppingListUpdateActionBuilder; 014 015public interface ByProjectKeyShoppingListsRequestBuilderMixin { 016 public ByProjectKeyShoppingListsPost post(ShoppingListDraft shoppingListDraft); 017 018 public ByProjectKeyShoppingListsByIDRequestBuilder withId(String ID); 019 020 public default ByProjectKeyShoppingListsByIDPost update(Versioned<ShoppingList> shoppingList, 021 List<ShoppingListUpdateAction> actions) { 022 return withId(shoppingList.getId()) 023 .post(builder -> ShoppingListUpdate.builder().version(shoppingList.getVersion()).actions(actions)); 024 } 025 026 public default ByProjectKeyShoppingListsByIDPost update(Versioned<ShoppingList> shoppingList, 027 UnaryOperator<UpdateActionBuilder<ShoppingListUpdateAction, ShoppingListUpdateActionBuilder>> op) { 028 return withId(shoppingList.getId()).post(builder -> ShoppingListUpdate.builder() 029 .version(shoppingList.getVersion()) 030 .actions(op.apply(UpdateActionBuilder.of(ShoppingListUpdateActionBuilder::of)).actions)); 031 } 032 033 public default WithUpdateActionBuilder<ShoppingListUpdateAction, ShoppingListUpdateActionBuilder, ByProjectKeyShoppingListsByIDPost> update( 034 Versioned<ShoppingList> shoppingList) { 035 return builder -> withId(shoppingList.getId()).post(b -> ShoppingListUpdate.builder() 036 .version(shoppingList.getVersion()) 037 .actions(builder.apply(UpdateActionBuilder.of(ShoppingListUpdateActionBuilder::of)).actions)); 038 } 039 040 public default ByProjectKeyShoppingListsByIDDelete delete(Versioned<ShoppingList> shoppingList) { 041 return withId(shoppingList.getId()).delete().withVersion(shoppingList.getVersion()); 042 } 043 044 public default ByProjectKeyShoppingListsPost create(ShoppingListDraft shoppingListDraft) { 045 return post(shoppingListDraft); 046 } 047 048 public default ByProjectKeyShoppingListsPost create(UnaryOperator<ShoppingListDraftBuilder> op) { 049 return post(op.apply(ShoppingListDraftBuilder.of()).build()); 050 } 051}