core
core copied to clipboard
Switch to a relational database, closes #549
Mostly works using SQLite. A few things to do:
- [ ] votes
- [ ] i would probably want this to also work with other SQL databases
- [ ] Redis is randomly used for some booth / waitlist / online users related storage. probably just stuff that into a simple key-value table in the database to make it easier to run.
- [ ] use SQL transactions where necessary--with mongodb there are no transactions so a bunch of code YOLO'd consistency, but with a sql database we dont need to yolo anything.
- [ ] put the migration code into a standalone migration script so i can release the next version without depending on mongo
- [ ] performance test it with wlk data. i expect this will be dramatically faster...
This changes how roles work internally (now there's "roles" and "permissions" instead of permissions being specially-treated roles), but it shouldn't be a breaking change for clients.