This is a start toward #46, which enables catsoop to store both its logs and its course content in a PostgreSQL database rather than on disk.
The main goal is to enable people running catsoop courses to decouple the checkers from the web server (which can, for example, help to stabilize timing of test cases in subjects like 6.009). This also enables dynamically scaling the number of checkers available, as multiple checkers (or multiple web servers) on different machines can be touching the same database as the same time.
The filesystem has been baked into things pretty deeply, so this is a big change, and I’ve tried to do it in a way that leaves things open to additional backends being implemented in the future.
It’s very much a work in progress, but I’m posting this now because this code is at least to a point where it is being used somewhere (6.145 this IAP for testing). I’ll keep updating here as things break.