Skip to content

Commit

Permalink
[IND-495]: Update wallets postgres table with totalTradingRewards field
Browse files Browse the repository at this point in the history
  • Loading branch information
Christopher-Li committed Nov 29, 2023
1 parent d6fa5fd commit 9d8fe04
Show file tree
Hide file tree
Showing 10 changed files with 45 additions and 4 deletions.
1 change: 1 addition & 0 deletions indexer/packages/postgres/__tests__/helpers/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ export const defaultSubaccountId3: string = SubaccountTable.uuid(
// ============== Wallets ==============
export const defaultWallet: WalletCreateObject = {
address: defaultAddress,
totalTradingRewards: '0',
};

// ============== Assets ==============
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@ describe('Transfer store', () => {
it('Recipient/sender must exist', async () => {
await WalletTable.create({
address: defaultWalletAddress,
totalTradingRewards: '0',
});
const invalidDeposit: TransferCreateObject = {
...defaultDeposit,
Expand Down Expand Up @@ -297,6 +298,7 @@ describe('Transfer store', () => {
it('Successfully creates/finds a transfer/deposit/withdrawal', async () => {
await WalletTable.create({
address: defaultWalletAddress,
totalTradingRewards: '0',
});
await Promise.all([
TransferTable.create(defaultTransfer),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ describe('Wallet store', () => {
WalletTable.create(defaultWallet),
WalletTable.create({
address: 'fake_address',
totalTradingRewards: '0',
}),
]);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import * as Knex from 'knex';

export async function up(knex: Knex): Promise<void> {
return knex
.schema
.alterTable('wallets', (table) => {
table.decimal('totalTradingRewards', null).defaultTo('0').notNullable();
});
}

export async function down(knex: Knex): Promise<void> {
return knex
.schema
.alterTable('wallets', (table) => {
table.dropColumn('totalTradingRewards');
});
}
5 changes: 5 additions & 0 deletions indexer/packages/postgres/src/models/wallet-model.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { NumericPattern } from '../lib/validators';
import UpsertQueryBuilder from '../query-builders/upsert';
import BaseModel from './base-model';

Expand All @@ -17,9 +18,11 @@ export default class WalletModel extends BaseModel {
type: 'object',
required: [
'address',
'totalTradingRewards',
],
properties: {
address: { type: 'string' },
totalTradingRewards: { type: 'string', pattern: NumericPattern },
},
};
}
Expand All @@ -39,4 +42,6 @@ export default class WalletModel extends BaseModel {
QueryBuilderType!: UpsertQueryBuilder<this>;

address!: string;

totalTradingRewards!: string;
}
1 change: 1 addition & 0 deletions indexer/packages/postgres/src/types/db-model-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export interface SubaccountFromDatabase extends IdBasedModelFromDatabase {

export interface WalletFromDatabase {
address: string,
totalTradingRewards: string,
}

export interface PerpetualPositionFromDatabase extends IdBasedModelFromDatabase {
Expand Down
2 changes: 2 additions & 0 deletions indexer/packages/postgres/src/types/wallet-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

export interface WalletCreateObject {
address: string,
totalTradingRewards: string,
}

export enum WalletColumns {
address = 'address',
totalTradingRewards = 'totalTradingRewards',
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ describe('transfers-controller#V4', () => {
};
await WalletTable.create({
address: testConstants.defaultWalletAddress,
totalTradingRewards: '0',
});
await Promise.all([
TransferTable.create(testConstants.defaultTransfer),
Expand Down
15 changes: 12 additions & 3 deletions indexer/services/ender/__tests__/handlers/transfer-handler.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,10 @@ describe('transferHandler', () => {
const wallet: WalletFromDatabase | undefined = await WalletTable.findById(
defaultWalletAddress,
);
expect(wallet).toBeDefined();
expect(wallet).toEqual({
address: defaultWalletAddress,
totalTradingRewards: '0',
});
});

it('creates new deposit for previously non-existent subaccount', async () => {
Expand Down Expand Up @@ -350,7 +353,10 @@ describe('transferHandler', () => {
defaultRecipientSubaccountId,
);
expect(newRecipientSubaccount).toBeDefined();
expect(wallet).toBeDefined();
expect(wallet).toEqual({
address: defaultWalletAddress,
totalTradingRewards: '0',
});
});

it('creates new withdrawal for existing subaccount', async () => {
Expand Down Expand Up @@ -400,7 +406,10 @@ describe('transferHandler', () => {
const wallet: WalletFromDatabase | undefined = await WalletTable.findById(
defaultWalletAddress,
);
expect(wallet).toBeDefined();
expect(wallet).toEqual({
address: defaultWalletAddress,
totalTradingRewards: '0',
});
});

it('creates new transfer and the recipient subaccount', async () => {
Expand Down
4 changes: 3 additions & 1 deletion indexer/services/ender/src/scripts/dydx_transfer_handler.sql
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,15 @@ BEGIN
transfer_record."recipientWalletAddress" = event_data->'recipient'->>'address';

recipient_wallet_record."address" = transfer_record."recipientWalletAddress";
recipient_wallet_record."totalTradingRewards" = '0';
INSERT INTO wallets VALUES (recipient_wallet_record.*) ON CONFLICT DO NOTHING;
END IF;

IF event_data->'sender'->'address' IS NOT NULL THEN
transfer_record."senderWalletAddress" = event_data->'sender'->>'address';

sender_wallet_record."address" = transfer_record."senderWalletAddress";
sender_wallet_record."totalTradingRewards" = '0';
INSERT INTO wallets VALUES (sender_wallet_record.*) ON CONFLICT DO NOTHING;
END IF;

Expand Down Expand Up @@ -92,4 +94,4 @@ BEGIN
dydx_to_jsonb(transfer_record)
);
END;
$$ LANGUAGE plpgsql;
$$ LANGUAGE plpgsql;

0 comments on commit 9d8fe04

Please sign in to comment.