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