aboutsummaryrefslogtreecommitdiffstats
path: root/packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts')
-rw-r--r--packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts b/packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts
new file mode 100644
index 000000000..21b08f0ef
--- /dev/null
+++ b/packages/pipeline/migrations/1548809952793-AllowDuplicateTxHashesInDexTrades.ts
@@ -0,0 +1,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');
+ }
+ }
+}