/ src / lib / utils / wave / leaderboard.ts
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  }