|
6 | 6 | using LibraryManagement.Api.Brokers.Loggings; |
7 | 7 | using LibraryManagement.Api.Brokers.Storages; |
8 | 8 | using LibraryManagement.Api.Models.Foundations.Books; |
9 | | -using LibraryManagement.Api.Models.Foundations.Books.Exceptions; |
10 | | -using Microsoft.Data.SqlClient; |
11 | | -using Microsoft.EntityFrameworkCore; |
12 | 9 |
|
13 | 10 | namespace LibraryManagement.Api.Services.Foundations.Books |
14 | 11 | { |
@@ -49,94 +46,17 @@ public ValueTask<Book> RetrieveBookByIdAsync(Guid bookId) => |
49 | 46 | return maybeBook; |
50 | 47 | }); |
51 | 48 |
|
52 | | - public async ValueTask<Book> ModifyBookAsync(Book book) |
| 49 | + public ValueTask<Book> ModifyBookAsync(Book book) => |
| 50 | + TryCatch(async () => |
53 | 51 | { |
54 | | - try |
55 | | - { |
56 | | - ValidateBookOnModify(book); |
57 | | - |
58 | | - Book maybeBook = |
59 | | - await this.storageBroker.SelectBookByIdAsync(book.BookId); |
60 | | - |
61 | | - ValidateAgainstStorageBookOnModify(book, maybeBook); |
62 | | - |
63 | | - return await this.storageBroker.UpdateBookAsync(book); |
64 | | - } |
65 | | - catch (NullBookException nullBookException) |
66 | | - { |
67 | | - var bookValidationException = |
68 | | - new BookValidationException(nullBookException); |
69 | | - |
70 | | - this.loggingBroker.LogError(bookValidationException); |
71 | | - |
72 | | - throw bookValidationException; |
73 | | - } |
74 | | - catch (InvalidBookException invalidBookException) |
75 | | - { |
76 | | - var bookValidationException = |
77 | | - new BookValidationException(invalidBookException); |
78 | | - |
79 | | - this.loggingBroker.LogError(bookValidationException); |
80 | | - |
81 | | - throw bookValidationException; |
82 | | - } |
83 | | - catch (NotFoundBookException notFoundBookException) |
84 | | - { |
85 | | - var bookValidationException = |
86 | | - new BookValidationException(notFoundBookException); |
87 | | - |
88 | | - this.loggingBroker.LogError(bookValidationException); |
89 | | - |
90 | | - throw bookValidationException; |
91 | | - } |
92 | | - catch (SqlException sqlException) |
93 | | - { |
94 | | - var failedBookStorageException = |
95 | | - new FailedBookStorageException(sqlException); |
96 | | - |
97 | | - var bookDependencyException = |
98 | | - new BookDependencyException(failedBookStorageException); |
| 52 | + ValidateBookOnModify(book); |
99 | 53 |
|
100 | | - this.loggingBroker.LogCritical(bookDependencyException); |
101 | | - |
102 | | - throw bookDependencyException; |
103 | | - } |
104 | | - catch (DbUpdateConcurrencyException dbUpdateConcurrencyException) |
105 | | - { |
106 | | - var lockedBookException = |
107 | | - new LockedBookException(dbUpdateConcurrencyException); |
108 | | - |
109 | | - var bookDependencyValidationException = |
110 | | - new BookDependencyValidationException(lockedBookException); |
111 | | - |
112 | | - this.loggingBroker.LogError(bookDependencyValidationException); |
113 | | - |
114 | | - throw bookDependencyValidationException; |
115 | | - } |
116 | | - catch (DbUpdateException dbUpdateException) |
117 | | - { |
118 | | - var failedBookStorageException = |
119 | | - new FailedBookStorageException(dbUpdateException); |
120 | | - |
121 | | - var bookDependencyException = |
122 | | - new BookDependencyException(failedBookStorageException); |
123 | | - |
124 | | - this.loggingBroker.LogError(bookDependencyException); |
125 | | - |
126 | | - throw bookDependencyException; |
127 | | - } |
128 | | - catch (Exception exception) |
129 | | - { |
130 | | - var failedBookServiceException = |
131 | | - new FailedBookServiceException(exception); |
132 | | - |
133 | | - var bookServiceException = |
134 | | - new BookServiceException(failedBookServiceException); |
| 54 | + Book maybeBook = |
| 55 | + await this.storageBroker.SelectBookByIdAsync(book.BookId); |
135 | 56 |
|
136 | | - this.loggingBroker.LogError(bookServiceException); |
| 57 | + ValidateAgainstStorageBookOnModify(book, maybeBook); |
137 | 58 |
|
138 | | - throw bookServiceException; |
139 | | - } |
140 | | - } |
| 59 | + return await this.storageBroker.UpdateBookAsync(book); |
| 60 | + }); |
141 | 61 | } |
142 | 62 | } |
0 commit comments