forked from cerc-io/ipld-eth-server
(VDB-380) Create separate table for ilks
- reference ilk by foreign key every place it's used
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user