add includeUserStats to /topMakers
This commit is contained in:
16
src/index.ts
16
src/index.ts
@@ -33,6 +33,7 @@ import {
|
|||||||
groupL2,
|
groupL2,
|
||||||
L2OrderBook,
|
L2OrderBook,
|
||||||
Wallet,
|
Wallet,
|
||||||
|
UserStatsMap,
|
||||||
} from '@drift-labs/sdk';
|
} from '@drift-labs/sdk';
|
||||||
|
|
||||||
import { Mutex } from 'async-mutex';
|
import { Mutex } from 'async-mutex';
|
||||||
@@ -391,6 +392,10 @@ const main = async () => {
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
await userMap.subscribe();
|
await userMap.subscribe();
|
||||||
|
const userStatsMap = new UserStatsMap(
|
||||||
|
driftClient,
|
||||||
|
driftClient.userStatsAccountSubscriptionConfig
|
||||||
|
);
|
||||||
|
|
||||||
const dlobSubscriber = new DLOBSubscriber({
|
const dlobSubscriber = new DLOBSubscriber({
|
||||||
driftClient,
|
driftClient,
|
||||||
@@ -787,6 +792,7 @@ const main = async () => {
|
|||||||
marketType,
|
marketType,
|
||||||
side, // bid or ask
|
side, // bid or ask
|
||||||
limit, // number of unique makers to return, if undefined will return all
|
limit, // number of unique makers to return, if undefined will return all
|
||||||
|
includeUserStats,
|
||||||
} = req.query;
|
} = req.query;
|
||||||
|
|
||||||
const { normedMarketType, normedMarketIndex, error } = validateDlobQuery(
|
const { normedMarketType, normedMarketIndex, error } = validateDlobQuery(
|
||||||
@@ -817,7 +823,7 @@ const main = async () => {
|
|||||||
normedLimit = parseInt(limit as string);
|
normedLimit = parseInt(limit as string);
|
||||||
}
|
}
|
||||||
|
|
||||||
const topMakers: Set<string> = new Set();
|
const topMakers = new Set();
|
||||||
let foundMakers = 0;
|
let foundMakers = 0;
|
||||||
const findMakers = (sideGenerator: Generator<DLOBNode>) => {
|
const findMakers = (sideGenerator: Generator<DLOBNode>) => {
|
||||||
for (const side of sideGenerator) {
|
for (const side of sideGenerator) {
|
||||||
@@ -828,8 +834,16 @@ const main = async () => {
|
|||||||
const maker = side.userAccount.toBase58();
|
const maker = side.userAccount.toBase58();
|
||||||
if (topMakers.has(maker)) {
|
if (topMakers.has(maker)) {
|
||||||
continue;
|
continue;
|
||||||
|
} else {
|
||||||
|
if (`${includeUserStats}`.toLowerCase() === 'true') {
|
||||||
|
const userAccount = side.userAccount.toBase58();
|
||||||
|
const userStats = userStatsMap
|
||||||
|
.get(userAccount)
|
||||||
|
.userStatsAccountPublicKey.toBase58();
|
||||||
|
topMakers.add([userAccount, userStats]);
|
||||||
} else {
|
} else {
|
||||||
topMakers.add(side.userAccount.toBase58());
|
topMakers.add(side.userAccount.toBase58());
|
||||||
|
}
|
||||||
foundMakers++;
|
foundMakers++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user