using System; using example_csharp_app.Interfaces; using example_csharp_app.Models.Mapper; using example_csharp_app.Models.Request; using example_csharp_app.Models.Response; namespace example_csharp_app.Aggregators; public class BookAggregator : IBookAggregator { private readonly IBookService _bookService; public BookAggregator(IBookService bookService) { _bookService = bookService; } public async Task AddBookAsync(BookCreateRequest request) { var result = await _bookService.AddBookAsync(request.MapToModel()); return new BookOperationResponse() { IsSuccess = result > 0 }; } public async Task GetBookAsync(Guid bookId) { var book = await _bookService.GetBookAsync(bookId); return new BookSingleResponse() { Book = book }; } public async Task GetBookListAsync(BookFilterRequest request) { // should make separate filter object, but feel lazy var bookList = await _bookService.GetBooksAsync(request); return new BookListResponse() { Books = bookList }; } public async Task RemoveBookAsync(Guid bookId) { var result = await _bookService.RemoveBookAsync(bookId); return new BookOperationResponse() { IsSuccess = result > 0 }; } public async Task UpdateBookAsync(BookUpdateRequest request) { var result = await _bookService.UpdateBookAsync(request.Id, request.MapToModel()); return new BookOperationResponse() { IsSuccess = result > 0 }; } }