using LibraryApp.Domain.Entities; namespace LibraryApp.Domain.Repositories; public interface IBookRepository { public Task> GetAsync(BookId id); public Task> UpdateAsync(Book book); public Task>> GetAllAsync(int pageNumber, int pageSize); public Task> AddAsync(Book book); public Task DeleteAsync(BookId id); } public interface IBookInstanceRepository { public Task> GetByIdAsync(BookInstanceId id); public Task> GetByBarcodeAsync(BookInstanceBarcode barcode); public Task>> GetAllByShelfIdAsync(ShelfId shelfId); public Task>> GetAllByStatusAsync(BookInstanceStatus status); public Task> UpdateAsync(BookInstance bookInstance); public Task>> GetAllAsync(int pageNumber, int pageSize); public Task> AddAsync(BookInstance bookInstance); public Task DeleteAsync(BookInstanceId id); } public interface IShelfRepository { public Task> GetAsync(ShelfId id); public Task> GetByBookInstanceBarcodeAsync(BookInstanceBarcode barcode); public Task> GetNextForCountAsync(); public Task> UpdateAsync(Shelf shelf); public Task>> GetAllAsync(int pageNumber, int pageSize); public Task> AddAsync(Shelf shelf); public Task DeleteAsync(ShelfId id); } public interface IMemberRepository { public Task> GetAsync(MemberId id); public Task> UpdateAsync(Member member); public Task>> GetAllAsync(int pageNumber, int pageSize); public Task> AddAsync(Member member); public Task DeleteAsync(MemberId id); } public interface ILendRecordRepository { public Task> GetAsync(LendRecordId id); public Task>> GetAllByMemberIdAsync(MemberId memberId); public Task> GetActiveByBookInstanceIdAsync(BookInstanceId bookInstanceId); public Task ExistsWithCodeAsync(LendCode code); public Task> UpdateAsync(LendRecord lendRecord); public Task>> GetAllAsync(int pageNumber, int pageSize); public Task> AddAsync(LendRecord lendRecord); public Task DeleteAsync(LendRecordId id); }