|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note that this naive implementation currently allows users to submit
multiple requests for the same course. See the TODO comment below:
/*
* TODO: Ensure that the user is not already enrolled in this course
* and pay attention to relevant race conditions. It might be useful
* to restructure this part, to begin a transaction that adds the user
* to the database (and check the (currently not existing) uniqueness)
* constraint at that exact moment, and abort the transaction if the
* course limit is exceeded.
* Or perhaps choices should be also stored in an internal data
* structure, though that requires extra attention on consistency
* issues between the internal data structure and the database.
* (Sometime I should really go fix the LMDB bindings...)
*/
References: https://todo.sr.ht/~runxiyu/cca/1
|