Skip to content

Commit 6e3b838

Browse files
authored
remove unused graphql fields (#1448)
* remove unused graphql fields * includeHasFarms filter * update specs * fix specs * fixes * refactoring * add context tracker * add selftUrl * mexsettings refactoring * remove double filters * remove unused import * implement curso pagination * fix spec * remove logs * use filteredPairs instead of pairs in settings * pairs are already filtered by state Active * remove hardcoded pairs count and add factory query to fetch the pairs count * update logs * Refactor GraphQL queries into separate files for MEX services * add API documentation and error handling for MEX endpoints * update readme * undo changes
1 parent 56d6741 commit 6e3b838

21 files changed

Lines changed: 438 additions & 361 deletions

src/common/graphql/graphql.service.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ export class GraphQlService {
1616
const exchangeServiceUrl = this.apiConfigService.getExchangeServiceUrlMandatory();
1717
const graphqlClient = new GraphQLClient(exchangeServiceUrl, {
1818
fetch: this.createFetchWithTimeout(60_000),
19+
headers: {
20+
'origin': this.apiConfigService.getSelfUrl(),
21+
},
1922
});
2023

2124
try {

src/endpoints/mex/entities/mex.pair.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,6 @@ export class MexPair {
6868
@ApiProperty({ type: String, example: 'jungledex' })
6969
exchange: MexPairExchange | undefined;
7070

71-
@ApiProperty({ type: Boolean, nullable: true })
72-
hasFarms: boolean | undefined = undefined;
73-
74-
@ApiProperty({ type: Boolean, nullable: true })
75-
hasDualFarms: boolean | undefined = undefined;
76-
7771
@ApiProperty({ type: Number, nullable: true })
7872
tradesCount: number | undefined = undefined;
7973

@@ -82,4 +76,10 @@ export class MexPair {
8276

8377
@ApiProperty({ type: Number, nullable: true })
8478
deployedAt: number | undefined = undefined;
79+
80+
@ApiProperty({ type: Boolean, nullable: true })
81+
hasFarms?: boolean;
82+
83+
@ApiProperty({ type: Boolean, nullable: true })
84+
hasDualFarms?: boolean;
8585
}

src/endpoints/mex/entities/mex.pairs..filter.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ export class MexPairsFilter {
55
Object.assign(this, init);
66
}
77
exchange?: MexPairExchange;
8+
includeFarms?: boolean;
89
}

src/endpoints/mex/entities/mex.settings.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class MexSettings {
2323
...response.proxy.map((x: any) => x.address),
2424
];
2525
settings.pairContracts = [
26-
...response.pairs.filter((x: any) => x.state === 'Active').map((x: any) => x.address),
26+
...response.pairs.map((x: any) => x.address),
2727
...response.proxy.map((x: any) => x.address),
2828
];
2929
settings.wrapContracts = response.wrappingInfo.map((x: any) => x.address);
@@ -39,11 +39,11 @@ export class MexSettings {
3939
settings.lockedAssetIdentifier = lockedAssetIdentifiers.find((identifier: string) => identifier.startsWith('LKMEX'));
4040
settings.lockedAssetIdentifierV2 = lockedAssetIdentifiers.find((identifier: string) => identifier.startsWith('XMEX'));
4141

42-
const mexEgldPairs = response.pairs.filter((x: any) => x.firstToken.name === 'WrappedEGLD' && x.secondToken.name === 'MEX');
43-
if (mexEgldPairs.length > 0) {
44-
settings.wegldId = mexEgldPairs[0].firstToken.identifier;
45-
settings.mexId = mexEgldPairs[0].secondToken.identifier;
46-
}
42+
const wrappedToken = response.wrappingInfo[0].wrappedToken.identifier;
43+
const mexToken = response.simpleLockEnergy.baseAssetToken.identifier;
44+
45+
settings.wegldId = wrappedToken;
46+
settings.mexId = mexToken;
4747

4848
return settings;
4949
}
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import { gql } from "graphql-request";
2+
3+
export const farmsQuery = gql`
4+
query {
5+
farms {
6+
... on FarmModelV1_2 {
7+
version
8+
address
9+
farmToken {
10+
collection
11+
name
12+
ticker
13+
__typename
14+
}
15+
farmingToken {
16+
name
17+
identifier
18+
decimals
19+
__typename
20+
}
21+
farmedToken {
22+
name
23+
identifier
24+
decimals
25+
__typename
26+
}
27+
farmTokenPriceUSD
28+
farmingTokenPriceUSD
29+
farmedTokenPriceUSD
30+
}
31+
... on FarmModelV1_3 {
32+
version
33+
address
34+
farmToken {
35+
collection
36+
name
37+
ticker
38+
__typename
39+
}
40+
farmingToken {
41+
name
42+
identifier
43+
decimals
44+
__typename
45+
}
46+
farmedToken {
47+
name
48+
identifier
49+
decimals
50+
__typename
51+
}
52+
farmTokenPriceUSD
53+
farmingTokenPriceUSD
54+
farmedTokenPriceUSD
55+
}
56+
... on FarmModelV2 {
57+
version
58+
address
59+
farmToken {
60+
collection
61+
name
62+
ticker
63+
__typename
64+
}
65+
farmingToken {
66+
name
67+
identifier
68+
decimals
69+
__typename
70+
}
71+
farmedToken {
72+
name
73+
identifier
74+
decimals
75+
__typename
76+
}
77+
farmTokenPriceUSD
78+
farmingTokenPriceUSD
79+
farmedTokenPriceUSD
80+
}
81+
}
82+
stakingFarms {
83+
address
84+
farmingToken {
85+
name
86+
identifier
87+
decimals
88+
__typename
89+
}
90+
farmToken {
91+
name
92+
collection
93+
decimals
94+
__typename
95+
}
96+
}
97+
}
98+
`;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { gql } from "graphql-request";
2+
3+
export const filteredPairsQuery = (includeFarms: boolean = false) => {
4+
const farmFields = includeFarms ? `
5+
hasFarms
6+
hasDualFarms` : '';
7+
8+
return gql`
9+
query filteredPairs($pagination: ConnectionArgs!, $filters: PairsFilter!) {
10+
filteredPairs(pagination: $pagination, filters: $filters) {
11+
edges {
12+
cursor
13+
node {
14+
address
15+
liquidityPoolToken {
16+
identifier
17+
name
18+
__typename
19+
}
20+
liquidityPoolTokenPriceUSD
21+
firstToken {
22+
name
23+
identifier
24+
previous24hPrice
25+
__typename
26+
}
27+
secondToken {
28+
name
29+
identifier
30+
previous24hPrice
31+
__typename
32+
}
33+
firstTokenPriceUSD
34+
secondTokenPriceUSD
35+
state
36+
type
37+
lockedValueUSD
38+
volumeUSD24h
39+
tradesCount
40+
tradesCount24h
41+
deployedAt
42+
${farmFields}
43+
}
44+
}
45+
pageInfo {
46+
hasNextPage
47+
}
48+
}
49+
}
50+
`;
51+
};
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { gql } from "graphql-request";
2+
3+
export const pairCountQuery = gql`
4+
query PairCount {
5+
factory {
6+
pairCount
7+
}
8+
}`;
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { gql } from "graphql-request";
2+
3+
export const settingsQuery = (pairLimitCount: number) => gql`
4+
query {
5+
filteredPairs(pagination: {first: ${pairLimitCount}}, filters: {state: ["Active"]}) {
6+
edges {
7+
node {
8+
address
9+
}
10+
}
11+
}
12+
proxy {
13+
address
14+
lockedAssetTokens {
15+
collection
16+
}
17+
}
18+
farms {
19+
... on FarmModelV1_2 {
20+
state
21+
address
22+
}
23+
... on FarmModelV1_3 {
24+
state
25+
address
26+
}
27+
... on FarmModelV2 {
28+
state
29+
address
30+
}
31+
}
32+
wrappingInfo {
33+
address
34+
wrappedToken {
35+
identifier
36+
}
37+
}
38+
distribution {
39+
address
40+
}
41+
lockedAssetFactory {
42+
address
43+
}
44+
stakingFarms {
45+
state
46+
address
47+
}
48+
stakingProxies {
49+
address
50+
}
51+
factory {
52+
address
53+
}
54+
simpleLockEnergy {
55+
baseAssetToken {
56+
identifier
57+
}
58+
}
59+
}
60+
`;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { gql } from "graphql-request";
2+
3+
export const stakingProxyQuery = gql`
4+
query StakingProxy {
5+
stakingProxies {
6+
address
7+
dualYieldToken {
8+
name
9+
collection
10+
}
11+
}
12+
}`;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { gql } from "graphql-request";
2+
3+
export const tokenPricesHourResolutionQuery = (tokenIdentifier: string) => gql`
4+
query tokenPricesHourResolution {
5+
values24h(
6+
series: "${tokenIdentifier}",
7+
metric: "priceUSD"
8+
) {
9+
timestamp
10+
value
11+
}
12+
}
13+
`;

0 commit comments

Comments
 (0)