This was an epically long change, and a terrible idea, but it compiles.
This was essentially a cascade that came about because I can't blend jet
and bob in the same transaction. In for a penny, I guess...
This is a pretty big refactor of how communication works to start moving
us in the direction we want to go long-term. This adds the new
communication row and migrates existing reports to add rows for
communication.
There's also a bunch of automatic fixes from the new linter. I should
have added them separately, but whatever.
This is a huge change. I was getting really sick of the split between
nuisance/water tables when more than half of the data they store is
common. I finally bit off the big work of switching it all.
This creates a single unified table, publicreport.report and copies the
existing report data into it. It also ports existing data from the
original tables into the new table.
Along with all of this I also overhauled the system for handling
asynchronous work to use a LISTEN/NOTIFY connection from the database
and a single cache table to avoid ever losing work.
The goal of this rework is to make it so I can pass around platform.User
instead of a pair of models.Organization and models.User. This is useful
for reason I kind of forget now, but it started with working on
notifications and ballooned massively from there into refactoring a
number of things that were bugging me.
This also includes a tiny amount of work on server-side events (SSE).
* background stuff lives inside the platform now, which I need for
having it push updates through SSE
* userfile now lives in the platform, under file, so other platform
functions can safely use it
* oauth is broken into pieces and inside platform because other stuff
was calling it already, but badly.
* notifications go into the platform as well
This adds the ability to link a proper address in the database to the
report and harmonizes the field names with the address table. It also
migrates away from mapbox entirely.
And I fixed the "pool" naming for the publicreports, which are supposed
to be the more generic 'water'.