Updated the domain model with entities, repos and domain services. Looks good. I think I addressed all the user stories however if I fell short we'll revise as needed.

This commit was merged in pull request #6.
This commit is contained in:
2026-04-10 17:43:58 +05:00
parent 57040bc656
commit 8eb8cd4fbf
14 changed files with 621 additions and 6 deletions
+56
View File
@@ -0,0 +1,56 @@
using LibraryApp.Domain.Entities;
namespace LibraryApp.Domain.Repositories;
public interface IBookRepository
{
public Task<Result<Book>> GetAsync(BookId id);
public Task<Result<Book>> UpdateAsync(Book book);
public Task<Result<List<Book>>> GetAllAsync(int pageNumber, int pageSize);
public Task<Result<Book>> AddAsync(Book book);
public Task<Result> DeleteAsync(BookId id);
}
public interface IBookInstanceRepository
{
public Task<Result<BookInstance>> GetByIdAsync(BookInstanceId id);
public Task<Result<BookInstance>> GetByBarcodeAsync(BookInstanceBarcode barcode);
public Task<Result<List<BookInstance>>> GetAllByShelfIdAsync(ShelfId shelfId);
public Task<Result<List<BookInstance>>> GetAllByStatusAsync(BookInstanceStatus status);
public Task<Result<BookInstance>> UpdateAsync(BookInstance bookInstance);
public Task<Result<List<BookInstance>>> GetAllAsync(int pageNumber, int pageSize);
public Task<Result<BookInstance>> AddAsync(BookInstance bookInstance);
public Task<Result> DeleteAsync(BookInstanceId id);
}
public interface IShelfRepository
{
public Task<Result<Shelf>> GetAsync(ShelfId id);
public Task<Result<Shelf>> GetByBookInstanceBarcodeAsync(BookInstanceBarcode barcode);
public Task<Result<Shelf>> GetNextForCountAsync();
public Task<Result<Shelf>> UpdateAsync(Shelf shelf);
public Task<Result<List<Shelf>>> GetAllAsync(int pageNumber, int pageSize);
public Task<Result<Shelf>> AddAsync(Shelf shelf);
public Task<Result> DeleteAsync(ShelfId id);
}
public interface IMemberRepository
{
public Task<Result<Member>> GetAsync(MemberId id);
public Task<Result<Member>> UpdateAsync(Member member);
public Task<Result<List<Member>>> GetAllAsync(int pageNumber, int pageSize);
public Task<Result<Member>> AddAsync(Member member);
public Task<Result> DeleteAsync(MemberId id);
}
public interface ILendRecordRepository
{
public Task<Result<LendRecord>> GetAsync(LendRecordId id);
public Task<Result<List<LendRecord>>> GetAllByMemberIdAsync(MemberId memberId);
public Task<Result<LendRecord?>> GetActiveByBookInstanceIdAsync(BookInstanceId bookInstanceId);
public Task<bool> ExistsWithCodeAsync(LendCode code);
public Task<Result<LendRecord>> UpdateAsync(LendRecord lendRecord);
public Task<Result<List<LendRecord>>> GetAllAsync(int pageNumber, int pageSize);
public Task<Result<LendRecord>> AddAsync(LendRecord lendRecord);
public Task<Result> DeleteAsync(LendRecordId id);
}