package com.codebyte.api.item.mapper;

import com.codebyte.api.item.api.dto.CreateItemRequest;
import com.codebyte.api.item.api.dto.ItemResponse;
import com.codebyte.api.item.api.dto.UpdateItemRequest;
import com.codebyte.api.item.domain.Item;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;

/** Maps between {@link Item} and its API DTOs. */
@Mapper
public interface ItemMapper {

    ItemResponse toResponse(Item item);

    Item toEntity(CreateItemRequest request);

    /** Applies a full-replace request. {@code version} is checked in the service, never mapped. */
    @Mapping(target = "version", ignore = true)
    void updateEntity(UpdateItemRequest request, @MappingTarget Item item);
}
