- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
iknow-api/Services/Implementations/EnrollmentService.cs
r002cf5f r1b20b22 3 3 using iknow_api.Models; 4 4 using Microsoft.EntityFrameworkCore; 5 using Npgsql;6 5 7 6 namespace iknow_api.Services … … 221 220 }; 222 221 } 223 catch (DbUpdateException ex) when (IsUniqueViolation(ex))224 {225 // Two enrolments for the same semester sent at the same time both226 // pass the check above, because each transaction reads the state227 // from before the other one wrote. UNIQUE (user_id, semester_id)228 // is what actually settles it, so the loser gets the same229 // sentence as if the check had caught it.230 await transaction.RollbackAsync();231 return Fail("You are already enrolled in that semester.");232 }233 222 catch 234 223 { … … 237 226 } 238 227 } 239 240 /// <summary>23505 is unique_violation.</summary>241 private static bool IsUniqueViolation(DbUpdateException ex) =>242 ex.InnerException is PostgresException { SqlState: "23505" };243 228 244 229 private static EnrollSemesterResultDto Fail(string message) =>
Note:
See TracChangeset
for help on using the changeset viewer.
