Persist solves by hiding expired rooms#140
Draft
coder13 wants to merge 2 commits into
Draft
Conversation
Archive submitted and edited room results into a durable solves collection with room, attempt, and scramble context. Add a backfill command for existing embedded room results so historical solves can be preserved before room TTL cleanup.
Replace the solve archive approach with retained room documents: normal rooms now use hiddenAt for lobby visibility and clear expireAt so MongoDB TTL cleanup no longer removes their attempts/results. Room deletion now hides the room document, and lobby queries exclude hidden rooms while existing solve data remains embedded on the room.
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.
Summary
hiddenAtto rooms and use it as the lobby visibility cutoff while keeping room documents, scrambles, attempts, and embedded solve results intact.ROOM_DELETEDsocket event when a room reacheshiddenAt, so connected clients remove it from the lobby without deleting it from MongoDB.server/middlewares/auth.jsso server lint passes.Notes
The old
expireAtfield is now cleared whenever room stale state changes, so an existing production TTL index onexpireAtwill no longer remove rooms touched by the app. New hide timing is stored inhiddenAtinstead.Validation
cd server && npm run lint