(VDB-380) Create separate table for ilks
- reference ilk by foreign key every place it's used
This commit is contained in:
@@ -45,11 +45,20 @@ func (repository VatFoldRepository) Create(headerID int64, models []interface{})
|
||||
return fmt.Errorf("model of type %T, not %T", model, VatFoldModel{})
|
||||
}
|
||||
|
||||
ilkID, ilkErr := shared.GetOrCreateIlkInTransaction(vatFold.Ilk, tx)
|
||||
if ilkErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
if rollbackErr != nil {
|
||||
log.Error("failed to rollback ", rollbackErr)
|
||||
}
|
||||
return ilkErr
|
||||
}
|
||||
|
||||
_, execErr := tx.Exec(
|
||||
`INSERT into maker.vat_fold (header_id, ilk, urn, rate, log_idx, tx_idx, raw_log)
|
||||
VALUES($1, $2, $3, $4::NUMERIC, $5, $6, $7)
|
||||
ON CONFLICT (header_id, tx_idx, log_idx) DO UPDATE SET ilk = $2, urn = $3, rate = $4, raw_log = $7;`,
|
||||
headerID, vatFold.Ilk, vatFold.Urn, vatFold.Rate, vatFold.LogIndex, vatFold.TransactionIndex, vatFold.Raw,
|
||||
headerID, ilkID, vatFold.Urn, vatFold.Rate, vatFold.LogIndex, vatFold.TransactionIndex, vatFold.Raw,
|
||||
)
|
||||
if execErr != nil {
|
||||
rollbackErr := tx.Rollback()
|
||||
|
||||
@@ -19,6 +19,8 @@ package vat_fold_test
|
||||
import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/transformers/shared"
|
||||
"strconv"
|
||||
|
||||
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres/repositories"
|
||||
@@ -69,7 +71,9 @@ var _ = Describe("Vat.fold repository", func() {
|
||||
err = db.Get(&dbVatFold, `SELECT ilk, urn, rate, log_idx, tx_idx, raw_log FROM maker.vat_fold WHERE header_id = $1`, headerID)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
Expect(dbVatFold.Ilk).To(Equal(test_data.VatFoldModel.Ilk))
|
||||
ilkID, err := shared.GetOrCreateIlk(test_data.VatFoldModel.Ilk, db)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(dbVatFold.Ilk).To(Equal(strconv.Itoa(ilkID)))
|
||||
Expect(dbVatFold.Urn).To(Equal(test_data.VatFoldModel.Urn))
|
||||
Expect(dbVatFold.Rate).To(Equal(test_data.VatFoldModel.Rate))
|
||||
Expect(dbVatFold.LogIndex).To(Equal(test_data.VatFoldModel.LogIndex))
|
||||
|
||||
Reference in New Issue
Block a user