package com.codebyte.api.item.service;

import com.codebyte.api.common.web.PagedResponse;
import com.codebyte.api.item.api.dto.CreateItemRequest;
import com.codebyte.api.item.api.dto.ItemResponse;
import com.codebyte.api.item.api.dto.PatchItemRequest;
import com.codebyte.api.item.api.dto.UpdateItemRequest;
import java.util.UUID;
import org.springframework.data.domain.Pageable;

/** Application service for the Item aggregate. */
public interface ItemService {

    ItemResponse create(CreateItemRequest request);

    ItemResponse get(UUID id);

    PagedResponse<ItemResponse> list(String query, Pageable pageable);

    ItemResponse replace(UUID id, UpdateItemRequest request);

    ItemResponse patch(UUID id, PatchItemRequest request);

    void delete(UUID id);
}
