using Domain.Entities;
namespace Infrastructure.Repository.Breweries;
///
/// Repository for CRUD operations on brewery post records.
///
public interface IBreweryRepository
{
///
/// Retrieves a brewery post by its unique identifier.
///
/// The unique identifier of the brewery post.
/// The matching , or null if not found.
Task GetByIdAsync(Guid id);
///
/// Retrieves all brewery posts, optionally paginated.
///
/// The maximum number of records to return, or null for no limit.
/// The number of records to skip, or null for no offset.
/// The collection of matching records.
Task> GetAllAsync(int? limit, int? offset);
///
/// Updates an existing brewery post.
///
/// The brewery post containing updated values.
Task UpdateAsync(BreweryPost brewery);
///
/// Deletes a brewery post by its unique identifier.
///
/// The unique identifier of the brewery post to delete.
Task DeleteAsync(Guid id);
///
/// Creates a new brewery post, including its location details.
///
/// The brewery post to create. Must have a non-null Location.
/// Thrown when has no Location.
Task CreateAsync(BreweryPost brewery);
}