feat(leaderboard): add ETag/304 caching on /api/leaderboard - #726
Merged
greatest0fallt1me merged 3 commits intoJul 29, 2026
Merged
Conversation
- Added conditionalGet from etag middleware to both leaderboard endpoints - GET / returns 304 when If-None-Match matches the leaderboard payload - GET /user/:stellarAddress returns 304 when If-None-Match matches the entry payload - Added comprehensive ETag test coverage (10 tests) - Updated jest config to also match src/__tests__ tests Closes Predictify-org#635
|
@Obaara293 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
Green across the board — merging. Thanks! |
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.
Overview
This PR adds strong ETag support to both
/api/leaderboardendpoints (GET /andGET /user/:stellarAddress) to enable conditional GET responses — cutting bandwidth on repeat reads via 304 Not Modified.Related Issue
Closes #635
Changes
Routes
src/routes/leaderboard.ts— addedconditionalGettoGET /andGET /user/:stellarAddress:ETag(SHA-256 of the JSON payload) andCache-Control: no-cacheheadersIf-None-Matchmatching the current ETag, responds with 304 Not Modified (no body)If-None-Matchvalues are handled correctly via existing middleware normalizationTests
src/__tests__/routes/leaderboard.test.ts— 10 new integration tests covering:ETagandCache-Controlheaders on first requestIf-None-MatchmatchesIf-None-MatchConfig
jest.config.js— addedsrc/__tests__/**/*.test.tsto test match pattern so co-located tests are discoveredVerification Results
GET /api/leaderboardGET /api/leaderboard/user/:stellarAddressIf-None-MatchmatchesCache-Control: no-cacheon every responsesortedReplacerfrom existingetag.tsmiddleware