speedruncomorg / api

REST API Documentation for speedrun.com
346 stars 36 forks source link

Missing Runs/Games when ordering by date field that Run/Game does not have #159

Open mgmedick opened 1 year ago

mgmedick commented 1 year ago

Hi There,

Games are Runs are missing when ordering by a date field that Game/Run does not have (date is null).

Runs: For example, RunID “y896w0xm” has a null Submitted Date, if you filter by GameID and order by “submitted”, the run never returns in the results. Curiously if you further narrow by category the run returns, additionally if you don’t order by the date the run returns.

Run “y896w0xm” never returned: https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=200 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=400 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=200 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=600 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=200 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=800 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=1000 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=1200 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=1400 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=1600 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=1800 https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&orderby=submitted&max=200&offset=2000

Run “y896w0xm” returned: https://www.speedrun.com/api/v1/runs?game=4pd03de5&category=jdrq07lk&status=verified&orderby=submitted&max=200

Run “y896w0xm” returned: https://www.speedrun.com/api/v1/runs?game=4pd03de5&status=verified&max=200

Work around suggestion: Avoid using OrderBy when pulling runs unless filtering by categories or below. The 20k technique (10k one way, 10k the other) can be used when filtering by category. Otherwise just let the api use it’s default order.

Games: For example, GameID “nd2egvd0” has a null Created Date, if you order by “created”, the game never returns in the results. If you don’t order by that date the game returns in the results. It's too laborious to go through all games and find it again, but at one point I did and confirmed this issue.

Work around suggestion: When pulling games don’t sort by anything (let api sort by default) to get all games.