I had a brief conversation with @dominic where he walked me through how he'd go about implementing deletion. My implementation was mostly on the right track, but the gist is that I was messing around with this sort of nonsense instead of just filtering out deleted items before returning.
As far as I can tell it's working, but it requires changes to:
- aligned-block-file
- flumelog-offset
- flumeview-level
- flumeview-reduce (TODO)
- flumedb
- ssb-db
- ssb-server
I'm thinking that the best way to go about this is probably starting with the leafs of the dependency tree, bubbling my way up from there:
Most of this work took a few iterations so I'm sure I'll need some cleanup, but I think we're close. Once this is done then we can teach flumeviews to delete single items so that we can avoid resource-intensive rebuilds, but that's still on the horizon.