Skip to content

fix(api): name unknown fields in leaderboard errors - #1009

Open
ugcodrr wants to merge 11 commits into
mainfrom
fix/rankings-error-message
Open

ugcodrr wants to merge 11 commits into
mainfrom
fix/rankings-error-message

Conversation

@ugcodrr

@ugcodrr ugcodrr commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Description: A bad field in a rankings or leaderboard request got a 400 that ended at "must be one of the following values: " and never named the field.

  1. Sending fields as a plain string got it ranked one letter at a time and failed with a 500. Now it's a 400.
  2. Guild rankings and the player and guild leaderboards get the same check.

Merge order for the perf PRs is in #1002. Conflicts with #875 and #1053 in the player DTOs.

Testing: POST {"uuid": "<uuid>", "fields": ["stats.bedwars.foo"]} to /player/leaderboards/rankings, and the 400 says unknown leaderboard field: "stats.bedwars.foo".

@IsEnum(fields, { each: true }) rebuilt the list of all 2,718 player leaderboard
fields for every value, and getLeaderboardField searched the metadata array for
each field. Validate against a Set with IsEnum's message, and look fields up in
a Map built once per class. A test checks that scanMetadata returns each Player
and Guild key once, since a Map keeps the last entry for a repeated key.
A bad field in a player or guild rankings request got "each value in fields
must be one of the following values: " with nothing after it, since IsEnum
reads an array's indexes as enum keys. A valid field sent as a string instead
of an array passed validation, was ranked letter by letter and threw a 500.

- Name the values that aren't leaderboard fields, e.g.
  unknown leaderboard field: "stats.bedwars.foo"
- Answer anything but an array with a 400:
  fields must be an array of leaderboard fields
- Give guild rankings the same check
- Run apps/api's in-source tests, for the message test
@vercel

vercel Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
statsify Ignored Ignored Nov 5, 2026 6:09am UTC

@ugcodrr
ugcodrr changed the base branch from fix/rankings-lookups to main October 22, 2026 06:02
@vercel

vercel Bot commented Nov 3, 2026

Copy link
Copy Markdown

Deployment failed for project statsify with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/statsify-net?upgradeToPro=build-rate-limit

@ugcodrr ugcodrr changed the title fix(api): name the unknown fields in rankings errors fix(api): name unknown fields in leaderboard errors Nov 5, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant