From 99e549b3df604ce8e46d05048e70902a5d6be193 Mon Sep 17 00:00:00 2001 From: Ian Norden Date: Sun, 12 Aug 2018 15:35:23 -0500 Subject: [PATCH] changes to repo and repo tests so that supply table is organized and accessed by token_address --- .../erc20_watcher/every_block/repository.go | 10 ++++++---- .../every_block/repository_test.go | 20 +++++++++++-------- examples/test_helpers/database.go | 4 ++-- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/erc20_watcher/every_block/repository.go b/examples/erc20_watcher/every_block/repository.go index 55501532..43c96e3b 100644 --- a/examples/erc20_watcher/every_block/repository.go +++ b/examples/erc20_watcher/every_block/repository.go @@ -83,12 +83,14 @@ func (tsp *ERC20TokenRepository) MissingSupplyBlocks(startingBlock, highestBlock err := tsp.DB.Select( &blockNumbers, `SELECT number FROM BLOCKS - LEFT JOIN token_supply ON blocks.id = block_id + LEFT JOIN token_supply ON blocks.id = block_id + AND token_address = $1 WHERE block_id ISNULL - AND eth_node_id = $1 - AND number >= $2 - AND number <= $3 + AND eth_node_id = $2 + AND number >= $3 + AND number <= $4 LIMIT 20`, + tokenAddress, tsp.NodeID, startingBlock, highestBlock, diff --git a/examples/erc20_watcher/every_block/repository_test.go b/examples/erc20_watcher/every_block/repository_test.go index e3e7c13d..3d4047ed 100644 --- a/examples/erc20_watcher/every_block/repository_test.go +++ b/examples/erc20_watcher/every_block/repository_test.go @@ -27,7 +27,7 @@ import ( "math/rand" ) -var _ = Describe("ERC20 Token Repository", func() { +var _ = Describe("ERC20 Token Supply Repository", func() { var db *postgres.DB var blockId int64 var blockNumber int64 @@ -136,7 +136,7 @@ var _ = Describe("ERC20 Token Repository", func() { Describe("MissingBlocks", func() { It("returns the block numbers for which an associated TokenSupply record hasn't been created", func() { - createTokenSupplyFor(repository, blockNumber) + createTokenSupplyFor(repository, blockNumber, testAddress) newBlockNumber := blockNumber + 1 test_helpers.CreateBlock(newBlockNumber, blockRepository) @@ -156,7 +156,7 @@ var _ = Describe("ERC20 Token Repository", func() { }) It("does not return numbers that already have an associated TokenSupply record", func() { - createTokenSupplyFor(repository, blockNumber) + createTokenSupplyFor(repository, blockNumber, testAddress) blocks, err := repository.MissingSupplyBlocks(blockNumber, blockNumber, testAddress) Expect(blocks).To(BeEmpty()) @@ -165,7 +165,7 @@ var _ = Describe("ERC20 Token Repository", func() { }) It("deletes the token supply record when the associated block is deleted", func() { - err := repository.CreateSupply(every_block.TokenSupply{BlockNumber: blockNumber, Value: "0"}) + err := repository.CreateSupply(every_block.TokenSupply{BlockNumber: blockNumber, TokenAddress: testAddress, Value: "0"}) Expect(err).NotTo(HaveOccurred()) var count int @@ -182,16 +182,20 @@ var _ = Describe("ERC20 Token Repository", func() { }) }) -func supplyModel(blockNumber int64, tokenAddress string, supplyValue string) every_block.TokenSupply { +func supplyModel(blockNumber int64, tokenAddress, supplyValue string) every_block.TokenSupply { return every_block.TokenSupply{ Value: supplyValue, TokenAddress: tokenAddress, - BlockNumber: int64(blockNumber), + BlockNumber: blockNumber, } } -func createTokenSupplyFor(repository every_block.ERC20TokenRepository, blockNumber int64) { - err := repository.CreateSupply(every_block.TokenSupply{BlockNumber: blockNumber, Value: "0"}) +func createTokenSupplyFor(repository every_block.ERC20TokenRepository, blockNumber int64, tokenAddress string) { + err := repository.CreateSupply(every_block.TokenSupply{ + BlockNumber: blockNumber, + TokenAddress: tokenAddress, + Value: "0", + }) Expect(err).NotTo(HaveOccurred()) } diff --git a/examples/test_helpers/database.go b/examples/test_helpers/database.go index d4d5e9ad..b15521d7 100644 --- a/examples/test_helpers/database.go +++ b/examples/test_helpers/database.go @@ -24,8 +24,8 @@ import ( ) type TokenSupplyDBRow struct { - ID int64 - Supply int64 + ID int64 `db:"id"` + Supply int64 `db:"supply"` BlockID int64 `db:"block_id"` TokenAddress string `db:"token_address"` }