aboutsummaryrefslogtreecommitdiffstats
path: root/packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts
blob: 21b08f0ef75a797cf0ec5a9fb070cdf79b377578 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { MigrationInterface, QueryRunner, TableColumn } from 'typeorm';

const DEX_TRADES_TABLE_NAME = 'raw.dex_trades';

export class AllowDuplicateTxHashesInDexTrades1548809952793 implements MigrationInterface {
    public async up(queryRunner: QueryRunner): Promise<any> {
        const dexTradesTable = await queryRunner.getTable(DEX_TRADES_TABLE_NAME);
        if (dexTradesTable) {
            // Need new primary key to be non-null. No default value makes sense, so drop table.
            await queryRunner.query(`DELETE from ${DEX_TRADES_TABLE_NAME}`);
            // Composite key goes from (source_url, tx_hash) to (source_url, tx_hash, trade_index)
            await queryRunner.addColumn(
                DEX_TRADES_TABLE_NAME,
                new TableColumn({
                    name: 'trade_index',
                    type: 'varchar',
                    isPrimary: true,
                }),
            );
        }
    }

    public async down(queryRunner: QueryRunner): Promise<any> {
        const dexTradesTable = await queryRunner.getTable(DEX_TRADES_TABLE_NAME);
        if (dexTradesTable) {
            await queryRunner.dropColumn(dexTradesTable, 'trade_index');
        }
    }
}