using Books.Api.Domain.Customers;
using Books.Api.EventFlow.ReadModels;

namespace Books.Api.EventFlow.Repositories;

public interface ICustomerRepository
{
    Task<CustomerReadModelDto?> GetByIdAsync(string id, CancellationToken cancellationToken = default);
    Task<IEnumerable<CustomerReadModelDto>> GetByIdsAsync(List<CustomerId> ids, CancellationToken cancellationToken = default);
    Task<IReadOnlyList<CustomerReadModelDto>> GetByCompanyIdAsync(string companyId, CancellationToken cancellationToken = default);
    Task<IReadOnlyList<CustomerReadModelDto>> GetActiveByCompanyIdAsync(string companyId, CancellationToken cancellationToken = default);
    Task<CustomerReadModelDto?> GetByCompanyAndNumberAsync(string companyId, string customerNumber, CancellationToken cancellationToken = default);
    Task<CustomerReadModelDto?> GetByCvrAsync(string cvr, CancellationToken cancellationToken = default);
}
