Releases: edwardUL99/StudSysCppLibrary
Emergency fix for Predicate
The way Predicate was implemented, it was done with cpp file and template instantiations like template Predicate;. This caused problems implementing the search feature in CLI when using predicates for other classes
Added 2 extra methods to StudentSystem
The CLI required 2 methods from StudentSystem that did not exist, so getLecturers and getStudents has been added. These return all lecturers and students, respectively, in the system
Fixed segmentation fault when connection to database is lost
A fix has been implemented to resolve the issue described in #45. The program would crash with segmentation fault rather than giving a meaningful message saying an error occurred with the database. This exception can be caught by the using program as DatabaseException but should display the error message just so the user knows what happened
Small enhancement to allow QCA calculation
This release brings along with it, simple QCA calculation. By simple, I mean there is no account for residual or cumulative etc. The only QCA calculated is a single value. It also only includes A-NG grades and no accountings for I grades etc. This may be in another release
Patch for updating lecturers
The restriction that the old lecturer email must match new lecturer has been removed to patch an issue where if changing name, the email must reflect the new name, but with this restriction, can't change email
Added some performance enhancements and some extra documentation
Currently in the process of adding more documentation. This release brings a better documented StudentSystem. This was prioritised as this is the class that is interacted with the most
This release also brings with it performance enhancements by replacing some for loops with an equivalent SQL statement to make it more efficient
Marked Warning class as deprecated with an updated message specifying an alternative
Deprecated StudentSystem::getStudentID(std::string email)
Bug fixes and performance enhancements
This is a small release bringing with it fixes for the background SQL procedure for calculating module grades and a small enhancement to improve performance of the code which retrieves all the exam questions for an exam. This method had a sort function but this sort can be achieved with SQL order by which is more efficient
Enhancement for removing lecturers from system
This release adds an efficiency enhancement to the process of removing lecturers from the database. The code release in 1.2.3 had flaws, where it would run a query to get all student registrations that had a module with a NULL lecturer. Go through each result row, make a query to retrieve a student, a query to retrieve the module and then run a query to remove this formed StudentRegistration. This requires 3n + 1 queries, where n is the number of student registrations which had a module with a NULL lecturer. The query to get the student, query to get the module, query to remove the registration, for each matching registration, and also the single query to retrieve this ResultSet.
This query structure has been replaced with a single query and that is a DELETE query
Patch for removing lecturer and also student registrations
This patch is for issue #36. The CLI implemented code to remove student registrations for each module a removed lecturer taught on but this was not only a) resource wasteful as it had to do multiple loops to find these registrations, hold off until the system confirmed the lecturer was removed, iterate again to remove them. This is out of scope for the CLI as if another UI wanted to implement the library, they would have to do the same code. This clearly is a job for the library to remove student registrations that are associated with a module that has NULL as the lecturer. This also helps abstract the removal of a lecturer. A UI should only have to make 1 call to the system to remove a lecturer and not have to do the "cleanup" for that removal. That should be hidden in the library
Bug fixes and fix NULL lecturer issue
This release fixes issue #30 for the time being. It is not a perfect fix, but this will be resolved more gracefully in release 2.0.0 as the best fix is a breaking change.
It also brings some refactoring to make the code more efficient in logging
This release marks Warning class as deprecated which will be removed in release 2.0.0