Add log index to Vat heal

This commit is contained in:
Rob Mulholand
2018-10-23 15:25:21 -05:00
parent 650bbf5874
commit 702f90367a
10 changed files with 38 additions and 22 deletions
+3 -2
View File
@@ -35,7 +35,7 @@ var VatHealLog = types.Log{
TxHash: common.HexToHash("0x991b8079b1333024000dcaf2b00c24c5db0315e112a4ac4d912aa96a602e12b9"),
TxIndex: 2,
BlockHash: common.HexToHash("0x0c54bdadb149691a103cfa5ad57329bda1e0fe55f1ba1ce5dd49dc1ecfe03daa"),
Index: 0,
Index: 3,
Removed: false,
}
@@ -44,6 +44,7 @@ var VatHealModel = vat_heal.VatHealModel{
Urn: "0x7d7bEe5fCfD8028cf7b00876C5b1421c800561A6",
V: "0x7340e006f4135BA6970D43bf43d88DCAD4e7a8CA",
Rad: "120",
TransactionIndex: 2,
LogIndex: VatHealLog.Index,
TransactionIndex: VatHealLog.TxIndex,
Raw: rawHealLog,
}
+1
View File
@@ -52,6 +52,7 @@ func (VatHealConverter) ToModels(ethLogs []types.Log) ([]VatHealModel, error) {
Urn: urn.String(),
V: v.String(),
Rad: radInt.String(),
LogIndex: ethLog.Index,
TransactionIndex: ethLog.TxIndex,
Raw: rawLogJson,
}
+2 -5
View File
@@ -30,11 +30,8 @@ var _ = Describe("VatHeal converter", func() {
models, err := converter.ToModels([]types.Log{test_data.VatHealLog})
Expect(err).NotTo(HaveOccurred())
Expect(models[0].Urn).To(Equal(test_data.VatHealModel.Urn))
Expect(models[0].V).To(Equal(test_data.VatHealModel.V))
Expect(models[0].Rad).To(Equal(test_data.VatHealModel.Rad))
Expect(models[0].TransactionIndex).To(Equal(test_data.VatHealModel.TransactionIndex))
Expect(models[0].Raw).To(Equal(test_data.VatHealModel.Raw))
Expect(len(models)).To(Equal(1))
Expect(models[0]).To(Equal(test_data.VatHealModel))
})
It("Returns an error there are missing topics", func() {
+1
View File
@@ -18,6 +18,7 @@ type VatHealModel struct {
Urn string
V string
Rad string
LogIndex uint `db:"log_idx"`
TransactionIndex uint `db:"tx_idx"`
Raw []byte `db:"raw_log"`
}
+3 -3
View File
@@ -40,9 +40,9 @@ func (repository VatHealRepository) Create(headerId int64, models []VatHealModel
}
for _, model := range models {
_, err := tx.Exec(`INSERT INTO maker.vat_heal (header_id, urn, v, rad, tx_idx, raw_log)
VALUES($1, $2, $3, $4::NUMERIC, $5, $6)`,
headerId, model.Urn, model.V, model.Rad, model.TransactionIndex, model.Raw)
_, err := tx.Exec(`INSERT INTO maker.vat_heal (header_id, urn, v, rad, log_idx, tx_idx, raw_log)
VALUES($1, $2, $3, $4::NUMERIC, $5, $6, $7)`,
headerId, model.Urn, model.V, model.Rad, model.LogIndex, model.TransactionIndex, model.Raw)
if err != nil {
tx.Rollback()
return err
+18 -2
View File
@@ -62,7 +62,7 @@ var _ = Describe("VatHeal Repository", func() {
It("persists vat heal records", func() {
anotherVatHeal := test_data.VatHealModel
anotherVatHeal.TransactionIndex = test_data.VatHealModel.TransactionIndex + 1
anotherVatHeal.LogIndex = test_data.VatHealModel.LogIndex + 1
err = repository.Create(headerId, []vat_heal.VatHealModel{test_data.VatHealModel, anotherVatHeal})
var dbResult []VatHealDBResult
@@ -72,8 +72,9 @@ var _ = Describe("VatHeal Repository", func() {
Expect(dbResult[0].Urn).To(Equal(test_data.VatHealModel.Urn))
Expect(dbResult[0].V).To(Equal(test_data.VatHealModel.V))
Expect(dbResult[0].Rad).To(Equal(test_data.VatHealModel.Rad))
Expect(dbResult[0].LogIndex).To(Equal(test_data.VatHealModel.LogIndex))
Expect(dbResult[1].LogIndex).To(Equal(test_data.VatHealModel.LogIndex + 1))
Expect(dbResult[0].TransactionIndex).To(Equal(test_data.VatHealModel.TransactionIndex))
Expect(dbResult[1].TransactionIndex).To(Equal(test_data.VatHealModel.TransactionIndex + 1))
Expect(dbResult[0].Raw).To(MatchJSON(test_data.VatHealModel.Raw))
Expect(dbResult[0].HeaderId).To(Equal(headerId))
})
@@ -81,7 +82,9 @@ var _ = Describe("VatHeal Repository", func() {
It("returns an error if the insertion fails", func() {
err = repository.Create(headerId, []vat_heal.VatHealModel{test_data.VatHealModel})
Expect(err).NotTo(HaveOccurred())
err = repository.Create(headerId, []vat_heal.VatHealModel{test_data.VatHealModel})
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("pq: duplicate key value violates unique constraint"))
})
@@ -96,6 +99,19 @@ var _ = Describe("VatHeal Repository", func() {
Expect(headerChecked).To(BeTrue())
})
It("updates the header to checked if checked headers row already exists", func() {
_, err = db.Exec(`INSERT INTO public.checked_headers (header_id) VALUES ($1)`, headerId)
Expect(err).NotTo(HaveOccurred())
err = repository.Create(headerId, []vat_heal.VatHealModel{test_data.VatHealModel})
Expect(err).NotTo(HaveOccurred())
var headerChecked bool
err = db.Get(&headerChecked, `SELECT vat_heal_checked FROM public.checked_headers WHERE header_id = $1`, headerId)
Expect(err).NotTo(HaveOccurred())
Expect(headerChecked).To(BeTrue())
})
It("removes vat heal if corresponding header is deleted", func() {
err = repository.Create(headerId, []vat_heal.VatHealModel{test_data.VatHealModel})
Expect(err).NotTo(HaveOccurred())