Skip to content

Commit

Permalink
chore: GraphQL best practices (pancakeswap#68)
Browse files Browse the repository at this point in the history
  • Loading branch information
ChefKai authored Jul 27, 2021
1 parent be7d360 commit f92c784
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 29 deletions.
10 changes: 5 additions & 5 deletions api/leaderboard/global.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default async (req: VercelRequest, res: VercelResponse): Promise<VercelRe
return res.status(204).end();
}

const result = await request(
const { competition, users } = await request(
TRADING_COMPETITION_V1_SUBGRAPH,
gql`
{
Expand All @@ -25,7 +25,7 @@ export default async (req: VercelRequest, res: VercelResponse): Promise<VercelRe
userCount
volumeUSD
}
users(first: 500, orderBy: volumeUSD, orderDirection: desc, block: { number: 6553043 }) {
users(first: 500, orderBy: volumeUSD, orderDirection: desc) {
id
volumeUSD
team {
Expand All @@ -36,16 +36,16 @@ export default async (req: VercelRequest, res: VercelResponse): Promise<VercelRe
`
);

const data = result.users.map((user: User, index: number) => ({
const data = users.map((user: User, index: number) => ({
rank: index + 1,
address: toChecksumAddress(user.id),
volume: parseFloat(user.volumeUSD),
teamId: parseInt(user.team.id),
}));

return res.status(200).json({
total: parseInt(result.competition.userCount),
volume: parseFloat(result.competition.volumeUSD),
total: parseInt(competition.userCount),
volume: parseFloat(competition.volumeUSD),
data,
});
};
31 changes: 16 additions & 15 deletions api/leaderboard/team.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,36 +20,37 @@ export default async (req: VercelRequest, res: VercelResponse): Promise<VercelRe
teamId = teamId as string;

if (teamId) {
const result = await request(
const { users } = await request(
TRADING_COMPETITION_V1_SUBGRAPH,
gql`
{
users (first: 500, where: { team: "${teamId}" }, orderBy: volumeUSD, orderDirection: desc, block: { number: 6553043 }) {
id
volumeUSD
team {
id
userCount
}
query getUsersByVolumeDesc($teamId: ID!) {
users(first: 500, where: { team: $teamId }, orderBy: volumeUSD, orderDirection: desc) {
id
volumeUSD
team {
id
userCount
}
}
}
`
`,
{
teamId,
}
);

const volume = result.users.reduce((acc: number, user: User) => {
const volume = users.reduce((acc: number, user: User) => {
return acc + parseFloat(user.volumeUSD);
}, 0);

const data = result.users.map((user: User, index: number) => ({
const data = users.map((user: User, index: number) => ({
rank: index + 1,
address: toChecksumAddress(user.id),
volume: parseFloat(user.volumeUSD),
teamId: parseInt(user.team.id),
}));

return res
.status(200)
.json({ total: parseInt(result.users[0].team.userCount), volume: volume, data });
return res.status(200).json({ total: parseInt(users[0].team.userCount), volume: volume, data });
}

return res.status(400).json({ error: { message: "Team unknown." } });
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"dependencies": {
"ethereumjs-util": "^7.0.10",
"graphql": "^15.5.1",
"graphql-request": "^3.4.0",
"graphql-request": "^3.5.0",
"mongoose": "^5.13.0"
},
"devDependencies": {
Expand All @@ -41,6 +41,6 @@
"prettier": "^2.3.2",
"ts-jest": "^27.0.3",
"ts-node": "^10.0.0",
"typescript": "^4.3.4"
"typescript": "^4.3.5"
}
}
6 changes: 3 additions & 3 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

/* Basic Options */
// "incremental": true, /* Enable incremental compilation */
"target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
"target": "ES6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
"module": "CommonJS", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
// "lib": [], /* Specify library files to be included in the compilation. */
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
Expand Down Expand Up @@ -68,6 +68,6 @@
"forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */
"resolveJsonModule": true /* Allows importing modules with a ‘.json’ extension. */
},
"include": ["api"],
"include": ["api", "utils"],
"exclude": ["node_modules"]
}
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2187,10 +2187,10 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==

graphql-request@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.4.0.tgz#3a400cd5511eb3c064b1873afb059196bbea9c2b"
integrity sha512-acrTzidSlwAj8wBNO7Q/UQHS8T+z5qRGquCQRv9J1InwR01BBWV9ObnoE+JS5nCCEj8wSGS0yrDXVDoRiKZuOg==
graphql-request@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.5.0.tgz#7e69574e15875fb3f660a4b4be3996ecd0bbc8b7"
integrity sha512-Io89QpfU4rqiMbqM/KwMBzKaDLOppi8FU8sEccCE4JqCgz95W9Q8bvxQ4NfPALLSMvg9nafgg8AkYRmgKSlukA==
dependencies:
cross-fetch "^3.0.6"
extract-files "^9.0.0"
Expand Down

0 comments on commit f92c784

Please sign in to comment.