might be bugs in here but also some bugs have definitely been removed such as a problem with accepting events published by a different user such as happens with giftwraps
- expiration is implemented purely as deleting when fetched after expiration, not an active garbage collector
- mitigations include ignoring filters that are at most only since/until or less in the filter, capping the indexes that will be gathered to max 5000 for a query
doesn't seem to pass a last two tests:
Rejects submission of event before address is deleted: UNTESTED (blocked: not replacing newer parameterized replaceable event)
Accepts submission of event after address is deleted: FAIL (blocked: not replacing newer parameterized replaceable event)
but this may be because it tombstones deleted events and is rejecting resubmission of an older version that was thus deleted, so i'm calling it done
also changes the interface of unmarshal to not return an error, which is something that should really belong elsewhere, both a thing to forget and a thing to have divergences in, not the right way to do it
add flatten flag for store so it flattens on request at shutdown if an import has taken place
import runs GC every 10000 events to limit fragmentation of tables
implement a specific count function that only decodes the event if there is an extra filter (which should be the minority of cases)
change search to use maps for indexes to automatically deduplicate in case of multiple queries matching the same field
improve logging to show origins of request/events in relay accept req/event
count now returns an aproximate flag for the case of extrafilters finding replaceable events