Write event logs to database before transforming
- enables decoupling event extraction/persistence from transformation - modifies event transformer, converter, and log chunker to accept payload that includes internal log database ID with log data - remove alias for transformer pkg as shared_t - remove unused mock watcher repository
This commit is contained in:
@@ -16,9 +16,9 @@
|
||||
|
||||
package event
|
||||
|
||||
import "github.com/ethereum/go-ethereum/core/types"
|
||||
import "github.com/vulcanize/vulcanizedb/pkg/core"
|
||||
|
||||
type Converter interface {
|
||||
ToEntities(contractAbi string, ethLog []types.Log) ([]interface{}, error)
|
||||
ToEntities(contractAbi string, ethLog []core.HeaderSyncLog) ([]interface{}, error)
|
||||
ToModels([]interface{}) ([]interface{}, error)
|
||||
}
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
package event
|
||||
|
||||
import (
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/sirupsen/logrus"
|
||||
|
||||
"github.com/vulcanize/vulcanizedb/libraries/shared/transformer"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/core"
|
||||
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
|
||||
)
|
||||
|
||||
@@ -35,7 +35,7 @@ func (transformer Transformer) NewTransformer(db *postgres.DB) transformer.Event
|
||||
return transformer
|
||||
}
|
||||
|
||||
func (transformer Transformer) Execute(logs []types.Log, headerID int64) error {
|
||||
func (transformer Transformer) Execute(logs []core.HeaderSyncLog, headerID int64) error {
|
||||
transformerName := transformer.Config.TransformerName
|
||||
config := transformer.Config
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ package event_test
|
||||
import (
|
||||
"math/rand"
|
||||
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
@@ -38,7 +37,7 @@ var _ = Describe("Transformer", func() {
|
||||
t transformer.EventTransformer
|
||||
headerOne core.Header
|
||||
config = test_data.GenericTestConfig
|
||||
logs = test_data.GenericTestLogs
|
||||
logs []core.HeaderSyncLog
|
||||
)
|
||||
|
||||
BeforeEach(func() {
|
||||
@@ -52,6 +51,13 @@ var _ = Describe("Transformer", func() {
|
||||
}.NewTransformer(nil)
|
||||
|
||||
headerOne = core.Header{Id: rand.Int63(), BlockNumber: rand.Int63()}
|
||||
|
||||
logs = []core.HeaderSyncLog{{
|
||||
ID: 0,
|
||||
HeaderID: headerOne.Id,
|
||||
Log: test_data.GenericTestLog(),
|
||||
Transformed: false,
|
||||
}}
|
||||
})
|
||||
|
||||
It("sets the db", func() {
|
||||
@@ -59,14 +65,14 @@ var _ = Describe("Transformer", func() {
|
||||
})
|
||||
|
||||
It("marks header checked if no logs returned", func() {
|
||||
err := t.Execute([]types.Log{}, headerOne.Id)
|
||||
err := t.Execute([]core.HeaderSyncLog{}, headerOne.Id)
|
||||
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
repository.AssertMarkHeaderCheckedCalledWith(headerOne.Id)
|
||||
})
|
||||
|
||||
It("doesn't attempt to convert or persist an empty collection when there are no logs", func() {
|
||||
err := t.Execute([]types.Log{}, headerOne.Id)
|
||||
err := t.Execute([]core.HeaderSyncLog{}, headerOne.Id)
|
||||
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(converter.ToEntitiesCalledCounter).To(Equal(0))
|
||||
@@ -84,7 +90,7 @@ var _ = Describe("Transformer", func() {
|
||||
It("returns error if marking header checked returns err", func() {
|
||||
repository.SetMarkHeaderCheckedError(fakes.FakeError)
|
||||
|
||||
err := t.Execute([]types.Log{}, headerOne.Id)
|
||||
err := t.Execute([]core.HeaderSyncLog{}, headerOne.Id)
|
||||
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(err).To(MatchError(fakes.FakeError))
|
||||
|
||||
Reference in New Issue
Block a user