leaderboard.ts
1 import { authenticatedCall } from './call'; 2 import { toFilterParams } from './types/filter'; 3 import { 4 leaderboardEntryDtoSchema, 5 leaderboardFiltersSchema, 6 type LeaderboardFilters, 7 } from './types/leaderboard'; 8 import { 9 paginatedResponseSchema, 10 toPaginationParams, 11 type PaginationInput, 12 } from './types/pagination'; 13 import parseRes from './utils/parse-res'; 14 15 export async function getLeaderboard( 16 f = fetch, 17 filters: LeaderboardFilters, 18 pagination?: PaginationInput, 19 ) { 20 return parseRes( 21 paginatedResponseSchema(leaderboardEntryDtoSchema), 22 await authenticatedCall( 23 f, 24 `/api/leaderboard?${toPaginationParams(pagination)}&${toFilterParams(leaderboardFiltersSchema, filters)}`, 25 { 26 method: 'GET', 27 }, 28 ), 29 ); 30 }