(VDB-380) Create separate table for ilks

- reference ilk by foreign key every place it's used
This commit is contained in:
Rob Mulholand
2019-02-21 11:23:00 -06:00
parent a27aaa7e68
commit dbdd16d3a2
64 changed files with 885 additions and 149 deletions
@@ -19,6 +19,7 @@ package pit
import (
"fmt"
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
shared2 "github.com/vulcanize/vulcanizedb/pkg/transformers/shared"
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/shared"
)
@@ -50,13 +51,51 @@ func (repository PitStorageRepository) Create(blockNumber int, blockHash string,
}
func (repository PitStorageRepository) insertIlkLine(blockNumber int, blockHash string, ilk string, line string) error {
_, err := repository.db.Exec(`INSERT INTO maker.pit_ilk_line (block_number, block_hash, ilk, line) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, line)
return err
tx, err := repository.db.Begin()
if err != nil {
return err
}
ilkID, ilkErr := shared2.GetOrCreateIlkInTransaction(ilk, tx)
if ilkErr != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
return fmt.Errorf("failed to rollback transaction after failing to insert ilk: %s", ilkErr.Error())
}
return ilkErr
}
_, writeErr := tx.Exec(`INSERT INTO maker.pit_ilk_line (block_number, block_hash, ilk, line) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, line)
if writeErr != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
return fmt.Errorf("failed to rollback transaction after failing to insert pit ilk line: %s", writeErr.Error())
}
return writeErr
}
return tx.Commit()
}
func (repository PitStorageRepository) insertIlkSpot(blockNumber int, blockHash string, ilk string, spot string) error {
_, err := repository.db.Exec(`INSERT INTO maker.pit_ilk_spot (block_number, block_hash, ilk, spot) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, spot)
return err
tx, err := repository.db.Begin()
if err != nil {
return err
}
ilkID, ilkErr := shared2.GetOrCreateIlkInTransaction(ilk, tx)
if ilkErr != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
return fmt.Errorf("failed to rollback transaction after failing to insert ilk: %s", ilkErr.Error())
}
return ilkErr
}
_, writeErr := tx.Exec(`INSERT INTO maker.pit_ilk_spot (block_number, block_hash, ilk, spot) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, spot)
if writeErr != nil {
rollbackErr := tx.Rollback()
if rollbackErr != nil {
return fmt.Errorf("failed to rollback transaction after failing to insert pit ilk spot: %s", writeErr.Error())
}
return writeErr
}
return tx.Commit()
}
func (repository PitStorageRepository) insertPitDrip(blockNumber int, blockHash string, drip string) error {
@@ -20,10 +20,12 @@ import (
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
shared2 "github.com/vulcanize/vulcanizedb/pkg/transformers/shared"
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/maker/pit"
. "github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/maker/test_helpers"
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/shared"
"github.com/vulcanize/vulcanizedb/test_config"
"strconv"
)
var _ = Describe("Pit storage repository", func() {
@@ -59,7 +61,9 @@ var _ = Describe("Pit storage repository", func() {
var result MappingRes
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, line AS value FROM maker.pit_ilk_line`)
Expect(err).NotTo(HaveOccurred())
AssertMapping(result, blockNumber, blockHash, expectedIlk, expectedLine)
ilkID, err := shared2.GetOrCreateIlk(expectedIlk, db)
Expect(err).NotTo(HaveOccurred())
AssertMapping(result, blockNumber, blockHash, strconv.Itoa(ilkID), expectedLine)
})
It("persists an ilk spot", func() {
@@ -77,7 +81,9 @@ var _ = Describe("Pit storage repository", func() {
var result MappingRes
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, spot AS value FROM maker.pit_ilk_spot`)
Expect(err).NotTo(HaveOccurred())
AssertMapping(result, blockNumber, blockHash, expectedIlk, expectedSpot)
ilkID, err := shared2.GetOrCreateIlk(expectedIlk, db)
Expect(err).NotTo(HaveOccurred())
AssertMapping(result, blockNumber, blockHash, strconv.Itoa(ilkID), expectedSpot)
})
It("persists a pit drip", func() {