using CSharpFunctionalExtensions;
using Wishlist.Data.Entities;

namespace Wishlist.Data.Services.Interfaces;

public interface IWishService : ICrud<Guid, Wish>
{
    Task<Result<List<Wish>>> GetAllWishes(Guid listId);
    Task<Result<Wish>> UpdateReservedStatus(Guid wishId, User? reservedBy);
    Task<Result<Wish>> UpdatePriceInfo(Guid wishId, PriceInfo priceInfo);
    Task<Result<Wish>> UpdateImage(Guid wishId, Uri  imageUri);
    Task<Result<Wish>> UpdateStore(Guid wishId, Uri  storeUri);
    Task<Result<Wish>> UpdateName(Guid wishId, string name);
    Task<Result<Wish>> UpdateDescription(Guid wishId, string description);
    Task<Result<Wish>> UpdateVisibility(Guid wishId,  bool isVisible);
    Task<Result<Wish>> UpdatePrice(Guid wishId, double price);    
}