using Printbase.Domain.Common; using Printbase.Domain.Common.Models; using Printbase.Domain.Entities.Product; namespace Printbase.Domain.Repositories; public interface IProductRepository { Task GetByIdAsync(Guid id, CancellationToken cancellationToken = default); Task GetByIdWithVariantsAsync(Guid id, CancellationToken cancellationToken = default); Task GetByIdWithCategoryAsync(Guid id, CancellationToken cancellationToken = default); Task GetByIdFullAsync(Guid id, CancellationToken cancellationToken = default); Task> GetPagedAsync(ProductFilterParameters filterParameters, CancellationToken cancellationToken = default); Task> GetByCategoryAsync(Guid categoryId, CancellationToken cancellationToken = default); Task> GetCustomizableAsync(CancellationToken cancellationToken = default); Task AddAsync(Product product, CancellationToken cancellationToken = default); Task UpdateAsync(Product product, CancellationToken cancellationToken = default); Task DeleteAsync(Guid id, CancellationToken cancellationToken = default); Task ExistsAsync(Guid id, CancellationToken cancellationToken = default); }