refactor: extract Queues and EnvelopeStore interfaces to decouple storage backends#41
Merged
Conversation
…rage backends - Add EnvelopeStore interface to metadb; embed in MetaDB so all envelope methods are part of the unified storage contract - Add Queues interface to s3fifo; rename BoltDB-backed impl to BoltQueues - NewManager now takes Queues interface instead of *bbolt.DB - EnvelopeIndex takes EnvelopeStore instead of *BoltDB; creates its own EnvelopeCodec internally, removing the db.Codec() coupling - EnvelopeReaper takes EnvelopeStore; ExpiryReaper takes MetaDB - ExpiryReaper gains WithReaperNow option for test time control, parallel to EnvelopeReaper - server/http.go: type assertion to *BoltDB narrowed to S3-FIFO block only; all NewEnvelopeIndex calls use metaDB directly
- Fix gofmt formatting in queues.go (missing space before method names) - Split EnvelopeStore interface: separate EnvelopeExpiryStore for reaper, MetaExpiryStore for ExpiryReaper, keeping each type to its minimal surface - Add WithEnvelopeIndexCodec option to share a single zstd codec across all EnvelopeIndex instances, restoring the one-encoder-per-process behaviour
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
methods are part of the unified storage contract
EnvelopeCodec internally, removing the db.Codec() coupling
parallel to EnvelopeReaper
all NewEnvelopeIndex calls use metaDB directly