Commit graph

12 commits

Author SHA1 Message Date
1e071d5ce5
Overhaul publicreport storage layer, create unified tables
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.
2026-03-18 15:36:20 +00:00
2538638c9d
Create generic backend process, fix background interdependencies
This refactor was born out of the inter-dependency cycles developing
between the "background" module and just about every other module which
was caused by the background module becoming a dependency of every
module that needed to background work and the fact that the background
module was also supposedly responsible for the logic for processing
those tasks.

Instead the "background" module is now very, very shallow and relies
entirely on the Postgres NOTIFY logic for triggering jobs. There's a new
table, `job` which holds just a type and single row ID.

All told, this means that jobs can be added to the queue as part of the
API-level or platform-level transaction, ensuring atomicity, and
processing coordination is handled by the platform module, which can
depend on anything.
2026-03-16 19:52:29 +00:00
44c4f17f32
Massive rework of platform layer user/organization
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
2026-03-12 23:49:16 +00:00
e932c2c473
Rework publicreport addressing
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'.
2026-03-09 18:02:22 +00:00
ff1cd00c96
Ensure phone numbers are in the DB before adding pool 2026-02-14 05:05:31 +00:00
b25daf12fa
Add table for holding subscriptions from users 2026-02-10 04:31:57 +00:00
648e0ee567
Move emails to platform, make sure to create phone and email in DB 2026-02-10 04:07:59 +00:00
57191fa222
Alter report submission page to request reporter name and consent
This also adds the new mechanism for handling notifications on reports
2026-02-06 15:39:49 +00:00
47c3f7320c
Fix warning parsing nil OrganizationID on notification page 2026-02-05 16:56:53 +00:00
c5f6db0b73
Lookup district and show on report submission complete 2026-02-01 02:37:35 +00:00
f20067b323
Actually update reports when a subscriber subscribes 2026-01-31 21:07:03 +00:00
a9b0a55f20
Create report platform layer
Rework phone subscription at the database layer so that we have a
seprate phone status and subscriptions to district communications.
2026-01-31 20:08:08 +00:00