(VDB-380) Create separate table for ilks
- reference ilk by foreign key every place it's used
This commit is contained in:
@@ -66,19 +66,36 @@ func (repository *MakerStorageRepository) GetMaxFlip() (*big.Int, error) {
|
||||
func (repository *MakerStorageRepository) GetGemKeys() ([]Urn, error) {
|
||||
var gems []Urn
|
||||
err := repository.db.Select(&gems, `
|
||||
SELECT DISTINCT ilk, guy FROM maker.vat_slip UNION
|
||||
SELECT DISTINCT ilk, src AS guy FROM maker.vat_flux UNION
|
||||
SELECT DISTINCT ilk, dst AS guy FROM maker.vat_flux UNION
|
||||
SELECT DISTINCT ilk, v AS guy FROM maker.vat_tune UNION
|
||||
SELECT DISTINCT ilk, v AS guy FROM maker.vat_grab UNION
|
||||
SELECT DISTINCT ilk, urn AS guy FROM maker.vat_toll
|
||||
SELECT DISTINCT ilks.ilk, slip.guy
|
||||
FROM maker.vat_slip slip
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = slip.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, flux.src AS guy
|
||||
FROM maker.vat_flux flux
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = flux.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, flux.dst AS guy
|
||||
FROM maker.vat_flux flux
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = flux.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, tune.v AS guy
|
||||
FROM maker.vat_tune tune
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = tune.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, grab.v AS guy
|
||||
FROM maker.vat_grab grab
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = grab.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, toll.urn AS guy
|
||||
FROM maker.vat_toll toll
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = toll.ilk
|
||||
`)
|
||||
return gems, err
|
||||
}
|
||||
|
||||
func (repository MakerStorageRepository) GetIlks() ([]string, error) {
|
||||
var ilks []string
|
||||
err := repository.db.Select(&ilks, `SELECT DISTINCT ilk FROM maker.vat_init`)
|
||||
err := repository.db.Select(&ilks, `SELECT DISTINCT ilk FROM maker.ilks`)
|
||||
return ilks, err
|
||||
}
|
||||
|
||||
@@ -91,8 +108,15 @@ func (repository *MakerStorageRepository) GetSinKeys() ([]string, error) {
|
||||
|
||||
func (repository *MakerStorageRepository) GetUrns() ([]Urn, error) {
|
||||
var urns []Urn
|
||||
err := repository.db.Select(&urns, `SELECT DISTINCT ilk, urn AS guy FROM maker.vat_tune UNION
|
||||
SELECT DISTINCT ilk, urn AS guy FROM maker.vat_grab`)
|
||||
err := repository.db.Select(&urns, `
|
||||
SELECT DISTINCT ilks.ilk, tune.urn AS guy
|
||||
FROM maker.vat_tune tune
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = tune.ilk
|
||||
UNION
|
||||
SELECT DISTINCT ilks.ilk, grab.urn AS guy
|
||||
FROM maker.vat_grab grab
|
||||
INNER JOIN maker.ilks ilks ON ilks.id = grab.ilk
|
||||
`)
|
||||
return urns, err
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import (
|
||||
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres/repositories"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/fakes"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/transformers/shared"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/maker"
|
||||
"github.com/vulcanize/vulcanizedb/test_config"
|
||||
)
|
||||
@@ -289,10 +290,12 @@ func insertVatFold(urn string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk("fake_ilk", db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_fold (header_id, urn, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4)`,
|
||||
headerID, urn, 0, 0,
|
||||
`INSERT INTO maker.vat_fold (header_id, urn, ilk, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5)`,
|
||||
headerID, urn, ilkID, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -301,10 +304,12 @@ func insertVatFlux(ilk, src, dst string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_flux (header_id, ilk, src, dst, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5, $6)`,
|
||||
headerID, ilk, src, dst, 0, 0,
|
||||
headerID, ilkID, src, dst, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -313,10 +318,12 @@ func insertVatGrab(ilk, urn, v, w string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_grab (header_id, ilk, urn, v, w, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5, $6, $7)`,
|
||||
headerID, ilk, urn, v, w, 0, 0,
|
||||
headerID, ilkID, urn, v, w, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -337,10 +344,12 @@ func insertVatInit(ilk string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_init (header_id, ilk, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4)`,
|
||||
headerID, ilk, 0, 0,
|
||||
headerID, ilkID, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -361,10 +370,12 @@ func insertVatSlip(ilk, guy string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_slip (header_id, ilk, guy, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5)`,
|
||||
headerID, ilk, guy, 0, 0,
|
||||
headerID, ilkID, guy, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -373,10 +384,12 @@ func insertVatToll(ilk, urn string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_toll (header_id, ilk, urn, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5)`,
|
||||
headerID, ilk, urn, 0, 0,
|
||||
headerID, ilkID, urn, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
@@ -385,10 +398,12 @@ func insertVatTune(ilk, urn, v, w string, blockNumber int64, db *postgres.DB) {
|
||||
headerRepository := repositories.NewHeaderRepository(db)
|
||||
headerID, err := headerRepository.CreateOrUpdateHeader(fakes.GetFakeHeader(blockNumber))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
ilkID, err := shared.GetOrCreateIlk(ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
_, execErr := db.Exec(
|
||||
`INSERT INTO maker.vat_tune (header_id, ilk, urn, v, w, log_idx, tx_idx)
|
||||
VALUES($1, $2, $3, $4, $5, $6, $7)`,
|
||||
headerID, ilk, urn, v, w, 0, 0,
|
||||
headerID, ilkID, urn, v, w, 0, 0,
|
||||
)
|
||||
Expect(execErr).NotTo(HaveOccurred())
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package vat
|
||||
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"
|
||||
)
|
||||
|
||||
@@ -53,16 +54,35 @@ func (repository *VatStorageRepository) insertDai(blockNumber int, blockHash str
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertGem(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, gem string) error {
|
||||
ilk, ilkErr := getIlk(metadata.Keys)
|
||||
if ilkErr != nil {
|
||||
return ilkErr
|
||||
ilk, err := getIlk(metadata.Keys)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
guy, guyErr := getGuy(metadata.Keys)
|
||||
if guyErr != nil {
|
||||
return guyErr
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_gem (block_number, block_hash, ilk, guy, gem) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilk, guy, gem)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_gem (block_number, block_hash, ilk, guy, gem) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilkID, guy, gem)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert gem: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertIlkArt(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, art string) error {
|
||||
@@ -70,8 +90,27 @@ func (repository *VatStorageRepository) insertIlkArt(blockNumber int, blockHash
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_ilk_art (block_number, block_hash, ilk, art) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, art)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_ilk_art (block_number, block_hash, ilk, art) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, art)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert ilk art: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertIlkInk(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, ink string) error {
|
||||
@@ -79,8 +118,27 @@ func (repository *VatStorageRepository) insertIlkInk(blockNumber int, blockHash
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_ilk_ink (block_number, block_hash, ilk, ink) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, ink)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_ilk_ink (block_number, block_hash, ilk, ink) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, ink)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert ilk ink: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertIlkRate(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, rate string) error {
|
||||
@@ -88,8 +146,27 @@ func (repository *VatStorageRepository) insertIlkRate(blockNumber int, blockHash
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_ilk_rate (block_number, block_hash, ilk, rate) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, rate)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_ilk_rate (block_number, block_hash, ilk, rate) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, rate)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert ilk rate: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertIlkTake(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, take string) error {
|
||||
@@ -97,8 +174,27 @@ func (repository *VatStorageRepository) insertIlkTake(blockNumber int, blockHash
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_ilk_take (block_number, block_hash, ilk, take) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilk, take)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_ilk_take (block_number, block_hash, ilk, take) VALUES ($1, $2, $3, $4)`, blockNumber, blockHash, ilkID, take)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert ilk take: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertSin(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, sin string) error {
|
||||
@@ -111,29 +207,67 @@ func (repository *VatStorageRepository) insertSin(blockNumber int, blockHash str
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertUrnArt(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, art string) error {
|
||||
ilk, ilkErr := getIlk(metadata.Keys)
|
||||
if ilkErr != nil {
|
||||
return ilkErr
|
||||
ilk, err := getIlk(metadata.Keys)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
guy, guyErr := getGuy(metadata.Keys)
|
||||
if guyErr != nil {
|
||||
return guyErr
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_urn_art (block_number, block_hash, ilk, urn, art) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilk, guy, art)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_urn_art (block_number, block_hash, ilk, urn, art) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilkID, guy, art)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert urn art: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertUrnInk(blockNumber int, blockHash string, metadata shared.StorageValueMetadata, ink string) error {
|
||||
ilk, ilkErr := getIlk(metadata.Keys)
|
||||
if ilkErr != nil {
|
||||
return ilkErr
|
||||
ilk, err := getIlk(metadata.Keys)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
guy, guyErr := getGuy(metadata.Keys)
|
||||
if guyErr != nil {
|
||||
return guyErr
|
||||
}
|
||||
_, writeErr := repository.db.Exec(`INSERT INTO maker.vat_urn_ink (block_number, block_hash, ilk, urn, ink) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilk, guy, ink)
|
||||
return writeErr
|
||||
tx, txErr := repository.db.Begin()
|
||||
if txErr != nil {
|
||||
return txErr
|
||||
}
|
||||
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.vat_urn_ink (block_number, block_hash, ilk, urn, ink) VALUES ($1, $2, $3, $4, $5)`, blockNumber, blockHash, ilkID, guy, ink)
|
||||
if writeErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
return fmt.Errorf("failed to rollback transaction after failing to insert urn ink: %s", writeErr.Error())
|
||||
}
|
||||
return writeErr
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (repository *VatStorageRepository) insertVatDebt(blockNumber int, blockHash, debt string) error {
|
||||
|
||||
@@ -4,10 +4,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/test_helpers"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/maker/vat"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/transformers/storage_diffs/shared"
|
||||
"github.com/vulcanize/vulcanizedb/test_config"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
var _ = Describe("Vat storage repository", func() {
|
||||
@@ -75,7 +77,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result DoubleMappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key_one, guy AS key_two, gem AS value FROM maker.vat_gem`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeGuy, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeGuy, fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -120,7 +124,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result MappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, art AS value FROM maker.vat_ilk_art`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -152,7 +158,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result MappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, ink AS value FROM maker.vat_ilk_ink`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -184,7 +192,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result MappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, rate AS value FROM maker.vat_ilk_rate`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -216,7 +226,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result MappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key, take AS value FROM maker.vat_ilk_take`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -280,7 +292,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result DoubleMappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key_one, urn AS key_two, art AS value FROM maker.vat_urn_art`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeGuy, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeGuy, fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
@@ -325,7 +339,9 @@ var _ = Describe("Vat storage repository", func() {
|
||||
var result DoubleMappingRes
|
||||
err = db.Get(&result, `SELECT block_number, block_hash, ilk AS key_one, urn AS key_two, ink AS value FROM maker.vat_urn_ink`)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, fakeIlk, fakeGuy, fakeUint256)
|
||||
ilkID, err := shared2.GetOrCreateIlk(fakeIlk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
AssertDoubleMapping(result, fakeBlockNumber, fakeBlockHash, strconv.Itoa(ilkID), fakeGuy, fakeUint256)
|
||||
})
|
||||
|
||||
It("returns error if metadata missing ilk", func() {
|
||||
|
||||
Reference in New Issue
Block a user