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.ShoppingListUpdate; 010import com.commercetools.api.models.shopping_list.ShoppingListUpdateAction; 011import com.commercetools.api.models.shopping_list.ShoppingListUpdateActionBuilder; 012 013public interface ByProjectKeyInStoreKeyByStoreKeyShoppingListsRequestMixin { 014 ByProjectKeyInStoreKeyByStoreKeyShoppingListsPost post( 015 com.commercetools.api.models.shopping_list.ShoppingListDraft shoppingListDraft); 016 017 ByProjectKeyInStoreKeyByStoreKeyShoppingListsByIDRequestBuilder withId(String ID); 018 019 public default ByProjectKeyInStoreKeyByStoreKeyShoppingListsByIDPost update(Versioned<ShoppingList> shoppingList, 020 List<ShoppingListUpdateAction> actions) { 021 return withId(shoppingList.getId()) 022 .post(builder -> ShoppingListUpdate.builder().version(shoppingList.getVersion()).actions(actions)); 023 } 024 025 public default ByProjectKeyInStoreKeyByStoreKeyShoppingListsByIDPost update(Versioned<ShoppingList> shoppingList, 026 UnaryOperator<UpdateActionBuilder<ShoppingListUpdateAction, ShoppingListUpdateActionBuilder>> op) { 027 return withId(shoppingList.getId()).post(builder -> ShoppingListUpdate.builder() 028 .version(shoppingList.getVersion()) 029 .actions(op.apply(UpdateActionBuilder.of(ShoppingListUpdateActionBuilder::of)).actions)); 030 } 031 032 public default WithUpdateActionBuilder<ShoppingListUpdateAction, ShoppingListUpdateActionBuilder, ByProjectKeyInStoreKeyByStoreKeyShoppingListsByIDPost> update( 033 Versioned<ShoppingList> shoppingList) { 034 return builder -> withId(shoppingList.getId()).post(b -> ShoppingListUpdate.builder() 035 .version(shoppingList.getVersion()) 036 .actions(builder.apply(UpdateActionBuilder.of(ShoppingListUpdateActionBuilder::of)).actions)); 037 } 038}