using MktXService.Domain.SeedWork;

namespace MktXService.Domain.AggregatesModel.SegmentAggregate;

/// <summary>
/// EN: Repository interface for Segment aggregate.
/// VI: Interface repository cho Segment aggregate.
/// </summary>
public interface ISegmentRepository : IRepository<Segment>
{
    Segment Add(Segment segment);
    void Update(Segment segment);
    void Delete(Segment segment);
    Task<Segment?> GetByIdAsync(Guid id);
    Task<Segment?> GetByIdWithConditionsAsync(Guid id);
    Task<IEnumerable<Segment>> GetByMerchantIdAsync(Guid merchantId);
    Task<IEnumerable<Segment>> GetByIdsAsync(IEnumerable<Guid> ids);
}
