2018-02-13 16:31:57 +00:00
|
|
|
package shared
|
|
|
|
|
|
|
|
import (
|
2018-11-28 16:00:04 +00:00
|
|
|
"github.com/ethereum/go-ethereum/core/types"
|
2018-02-13 16:31:57 +00:00
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/core"
|
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
|
2018-08-09 21:55:02 +00:00
|
|
|
"github.com/vulcanize/vulcanizedb/pkg/transformers/shared"
|
2018-02-13 16:31:57 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type Watcher struct {
|
2018-08-09 21:55:02 +00:00
|
|
|
Transformers []shared.Transformer
|
2018-03-21 14:53:20 +00:00
|
|
|
DB postgres.DB
|
2018-07-20 16:37:46 +00:00
|
|
|
Blockchain core.BlockChain
|
2018-02-13 16:31:57 +00:00
|
|
|
}
|
|
|
|
|
2018-08-09 21:55:02 +00:00
|
|
|
func (watcher *Watcher) AddTransformers(us []shared.TransformerInitializer) {
|
2018-03-16 19:34:18 +00:00
|
|
|
for _, transformerInitializer := range us {
|
2018-11-28 16:00:04 +00:00
|
|
|
transformer := transformerInitializer(&watcher.DB)
|
2018-03-16 19:34:18 +00:00
|
|
|
watcher.Transformers = append(watcher.Transformers, transformer)
|
2018-02-13 16:31:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (watcher *Watcher) Execute() error {
|
2018-11-28 16:00:04 +00:00
|
|
|
// TODO Solve checkedHeadersColumn issue
|
|
|
|
// TODO Handle start and end numbers in transformers?
|
|
|
|
var missingHeaders []core.Header
|
|
|
|
|
|
|
|
// TODO Get contract addresses and topic0s
|
|
|
|
var logs []types.Log
|
|
|
|
|
2018-02-13 16:31:57 +00:00
|
|
|
var err error
|
2018-03-16 19:34:18 +00:00
|
|
|
for _, transformer := range watcher.Transformers {
|
2018-11-28 16:00:04 +00:00
|
|
|
err = transformer.Execute(logs, missingHeaders)
|
2018-02-13 16:31:57 +00:00
|
|
|
}
|
|
|
|
return err
|
|
|
|
}
|