-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[IND-500]: Create Aggregate trading rewards roundtable task outline (#…
…917) * [IND-500]: Create Aggregate trading rewards roundtable task outline * lint * nit
- Loading branch information
1 parent
5ef9175
commit 3e2c518
Showing
4 changed files
with
103 additions
and
0 deletions.
There are no files selected for viewing
27 changes: 27 additions & 0 deletions
27
indexer/services/roundtable/__tests__/tasks/aggregate-trading-rewards.test.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
import { | ||
dbHelpers, testMocks, | ||
} from '@dydxprotocol-indexer/postgres'; | ||
|
||
describe('aggregate-trading-rewards', () => { | ||
beforeAll(async () => { | ||
await dbHelpers.migrate(); | ||
await dbHelpers.clearData(); | ||
}); | ||
|
||
beforeEach(async () => { | ||
await testMocks.seedData(); | ||
}); | ||
|
||
afterEach(async () => { | ||
await dbHelpers.clearData(); | ||
jest.resetAllMocks(); | ||
}); | ||
|
||
afterAll(async () => { | ||
await dbHelpers.teardown(); | ||
}); | ||
|
||
it('temp', () => { | ||
expect(true).toEqual(true); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
indexer/services/roundtable/src/tasks/aggregate-trading-rewards.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import { | ||
BlockFromDatabase, | ||
BlockTable, | ||
TradingRewardFromDatabase, | ||
} from '@dydxprotocol-indexer/postgres'; | ||
import { DateTime } from 'luxon'; | ||
|
||
/** | ||
* Task: Aggregate Trading Rewards | ||
* Description: This task aggregates trading rewards for a specific period of time. | ||
* It retrieves trading data from the database, calculates the rewards, and stores the aggregated | ||
* results. | ||
*/ | ||
interface Interval { | ||
start: DateTime; | ||
end: DateTime; | ||
} | ||
|
||
interface SortedTradingRewardData { | ||
[address: string]: TradingRewardFromDatabase[]; | ||
} | ||
|
||
export default async function runTask(): Promise<void> { | ||
// TODO(IND-499): Add resetting aggregation data when cache is empty | ||
const interval: Interval | undefined = await getTradingRewardDataToProcessInterval(); | ||
|
||
const tradingRewardData: TradingRewardFromDatabase[] = await getTradingRewardDataToProcess( | ||
interval, | ||
); | ||
const sortedTradingRewardData: SortedTradingRewardData = sortTradingRewardData(tradingRewardData); | ||
await updateTradingRewardsAggregation(sortedTradingRewardData); | ||
// TODO(IND-499): Update AggregateTradingRewardsProcessedCache | ||
} | ||
|
||
async function getTradingRewardDataToProcessInterval(): Promise<Interval> { | ||
const latestBlock: BlockFromDatabase = await BlockTable.getLatest(); | ||
|
||
// TODO(IND-499): Setup AggregateTradingRewardsProcessedCache for start time and add end time | ||
return { | ||
start: DateTime.fromISO(latestBlock.time), | ||
end: DateTime.fromISO(latestBlock.time), | ||
}; | ||
} | ||
|
||
async function getTradingRewardDataToProcess( | ||
_interval: Interval, | ||
): Promise<TradingRewardFromDatabase[]> { | ||
// TODO: Implement | ||
return Promise.resolve([]); | ||
} | ||
|
||
function sortTradingRewardData( | ||
_tradingRewardData: TradingRewardFromDatabase[], | ||
): SortedTradingRewardData { | ||
// TODO: Implement | ||
return {}; | ||
} | ||
|
||
async function updateTradingRewardsAggregation( | ||
_sortedTradingRewardData: SortedTradingRewardData, | ||
): Promise<void> { | ||
// TODO: Implement | ||
} |