A quick experiment.
Spin up postgres docker containerUI:a.Query editor in topbar -- pushes data into datagridb.Data grid -- 2d table of input elements, matching data sizec.Bottom (add new row) buttonEdit row wise using primary key as id, push back out to database(transaction processing) a.Need row-table provenance for each cell.- Either:
- Forward errors to frontend in modal + reject action, or
- Accept edit
- Propagate changes to other clients
- Can use pgoutput / wal2json for notification mechanism (via web sockets)
-
4. Optimistic update to frontend + loading spinner if accept takes a while -- can do this because of 204 status -- easy heuristic
-
4. Error modals
-
5. WAL streaming to other clients.
- pg_lineage extensions
-
column / table provenance
-
[o] row level provenance
- rebuild queries with better edithandles (column + pk), and do filtration to present clean edithandles to users
- fixes missing edithandle problem
- rebuild queries with better edithandles (column + pk), and do filtration to present clean edithandles to users
-
- parse WAL stream and provide edithandles for tuples
- fixes reactivity because we reconcile on frontend via edithandle
- switch architecture to "subscribe" to a query, and only push the relevant changes instead of the entire WAL to the client.
- Store queries
- pg_lineage extensions
-
Add a notimplemented error in case we're editing a join.
-
switch from modifying group by clause to group keys, where group keys are computed per group
- ignore this case for now, group keys / aggregates are a particularly difficult case
- schema introspection endpoint + ui
- better navigation / baked (SELECT * FROM table;) / saved (SELECT [...complicated mess...]) queries
- better collaboration (change notifications, live cursor)
- time travel + undo (need activities table)
- csv imports (no cap frfr)