aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/pipeline/migrations/1543983324954-ConvertTransactionGasPriceToBigNumber.ts19
-rw-r--r--packages/pipeline/src/entities/transaction.ts11
-rw-r--r--packages/pipeline/src/parsers/web3/index.ts5
-rw-r--r--packages/pipeline/test/entities/transaction_test.ts5
4 files changed, 31 insertions, 9 deletions
diff --git a/packages/pipeline/migrations/1543983324954-ConvertTransactionGasPriceToBigNumber.ts b/packages/pipeline/migrations/1543983324954-ConvertTransactionGasPriceToBigNumber.ts
new file mode 100644
index 000000000..dcb0fd727
--- /dev/null
+++ b/packages/pipeline/migrations/1543983324954-ConvertTransactionGasPriceToBigNumber.ts
@@ -0,0 +1,19 @@
+import { MigrationInterface, QueryRunner } from 'typeorm';
+
+export class ConvertTransactionGasPriceToBigNumber1543983324954 implements MigrationInterface {
+ public async up(queryRunner: QueryRunner): Promise<any> {
+ await queryRunner.query(
+ `ALTER TABLE raw.transactions
+ ALTER COLUMN gas_price TYPE numeric USING gas_price::numeric,
+ ALTER COLUMN gas_used TYPE numeric USING gas_used::numeric;`,
+ );
+ }
+
+ public async down(queryRunner: QueryRunner): Promise<any> {
+ await queryRunner.query(
+ `ALTER TABLE raw.transactions
+ ALTER COLUMN gas_price TYPE numeric USING gas_price::bigint,
+ ALTER COLUMN gas_used TYPE numeric USING gas_used::bigint;`,
+ );
+ }
+}
diff --git a/packages/pipeline/src/entities/transaction.ts b/packages/pipeline/src/entities/transaction.ts
index 91e4ecb5d..742050177 100644
--- a/packages/pipeline/src/entities/transaction.ts
+++ b/packages/pipeline/src/entities/transaction.ts
@@ -1,6 +1,7 @@
+import { BigNumber } from '@0x/utils';
import { Column, Entity, PrimaryColumn } from 'typeorm';
-import { numberToBigIntTransformer } from '../utils';
+import { bigNumberTransformer, numberToBigIntTransformer } from '../utils';
@Entity({ name: 'transactions', schema: 'raw' })
export class Transaction {
@@ -11,8 +12,8 @@ export class Transaction {
@PrimaryColumn({ name: 'block_number', transformer: numberToBigIntTransformer })
public blockNumber!: number;
- @Column({ type: 'bigint', name: 'gas_used', transformer: numberToBigIntTransformer })
- public gasUsed!: number;
- @Column({ type: 'bigint', name: 'gas_price', transformer: numberToBigIntTransformer })
- public gasPrice!: number;
+ @Column({ type: 'numeric', name: 'gas_used', transformer: bigNumberTransformer })
+ public gasUsed!: BigNumber;
+ @Column({ type: 'numeric', name: 'gas_price', transformer: bigNumberTransformer })
+ public gasPrice!: BigNumber;
}
diff --git a/packages/pipeline/src/parsers/web3/index.ts b/packages/pipeline/src/parsers/web3/index.ts
index 86f924151..f986efc59 100644
--- a/packages/pipeline/src/parsers/web3/index.ts
+++ b/packages/pipeline/src/parsers/web3/index.ts
@@ -1,3 +1,4 @@
+import { BigNumber } from '@0x/utils';
import { BlockWithoutTransactionData, Transaction as EthTransaction } from 'ethereum-types';
import { Block, Transaction } from '../../entities';
@@ -41,8 +42,8 @@ export function parseTransaction(rawTransaction: EthTransaction): Transaction {
tx.blockHash = rawTransaction.blockHash;
tx.blockNumber = rawTransaction.blockNumber;
- tx.gasUsed = rawTransaction.gas;
- tx.gasPrice = rawTransaction.gasPrice.toNumber();
+ tx.gasUsed = new BigNumber(rawTransaction.gas);
+ tx.gasPrice = rawTransaction.gasPrice;
return tx;
}
diff --git a/packages/pipeline/test/entities/transaction_test.ts b/packages/pipeline/test/entities/transaction_test.ts
index 027de7d32..634844544 100644
--- a/packages/pipeline/test/entities/transaction_test.ts
+++ b/packages/pipeline/test/entities/transaction_test.ts
@@ -1,3 +1,4 @@
+import { BigNumber } from '@0x/utils';
import 'mocha';
import 'reflect-metadata';
@@ -17,8 +18,8 @@ describe('Transaction entity', () => {
const transaction = new Transaction();
transaction.blockHash = '0x6ff106d00b6c3746072fc06bae140fb2549036ba7bcf9184ae19a42fd33657fd';
transaction.blockNumber = 6276262;
- transaction.gasPrice = 3000000;
- transaction.gasUsed = 125000;
+ transaction.gasPrice = new BigNumber(3000000);
+ transaction.gasUsed = new BigNumber(125000);
transaction.transactionHash = '0x6dd106d002873746072fc5e496dd0fb2541b68c77bcf9184ae19a42fd33657fe';
await testSaveAndFindEntityAsync(transactionRepository, transaction);
});