Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #12 .
To compute the possible matches between students, this service was used.
A student, when requesting an exchange, can select the shift they would like to move to - the student cannot have a pending exchange request for that course.
When that choice is made, the full set of pending requests for that course is sent to the solver service. Whilst waiting for a response, those rows in the DB are locked as to prevent data races.
The solver returns the set of possible exchanges (which can involve multiple students). Swap then proceeds to change the students' enrollments accordingly, and removing the pending exchanges from the DB.
The only modification to the data model that was made was allowing enrollments to have a null student id. If an exchange is to an enrollment which has a null student, it is treated as an automatic exchange. The same applies for the logging table.
I would like to thank everyone (@lumafepe, @raddrax, @nelsonmestevao) who contributed to this improvement 🙏