mirror of
https://github.com/grassrootseconomics/cic-chain-events.git
synced 2024-07-06 13:38:31 +02:00
* feat: init base logic for rpc fetcher * feat: rpc block fetcher, move filters to internal * move filters to internal folder * rpc block fetcher * add benchmarks: goos: linux goarch: amd64 pkg: github.com/grassrootseconomics/cic-chain-events/pkg/fetch cpu: AMD EPYC Processor Benchmark_RPC Benchmark_RPC/RPC_Block_Fetcher_Benchmark Benchmark_RPC/RPC_Block_Fetcher_Benchmark-4 25 46000646 ns/op 221697 B/op 844 allocs/op Benchmark_GraphQL Benchmark_GraphQL/GraphQL_Block_Fetcher_Benchmark Benchmark_GraphQL/GraphQL_Block_Fetcher_Benchmark-4 56 21219962 ns/op 56686 B/op 94 allocs/op PASS ok github.com/grassrootseconomics/cic-chain-events/pkg/fetch 2.920s * inline-docs: Describe RPC fetcher
35 lines
595 B
Go
35 lines
595 B
Go
package filter
|
|
|
|
import (
|
|
"context"
|
|
"sync"
|
|
|
|
"github.com/grassrootseconomics/cic-chain-events/pkg/fetch"
|
|
"github.com/zerodha/logf"
|
|
)
|
|
|
|
type AddressFilterOpts struct {
|
|
Cache *sync.Map
|
|
Logg logf.Logger
|
|
}
|
|
|
|
type AddressFilter struct {
|
|
cache *sync.Map
|
|
logg logf.Logger
|
|
}
|
|
|
|
func NewAddressFilter(o AddressFilterOpts) Filter {
|
|
return &AddressFilter{
|
|
cache: o.Cache,
|
|
logg: o.Logg,
|
|
}
|
|
}
|
|
|
|
func (f *AddressFilter) Execute(_ context.Context, transaction fetch.Transaction) (bool, error) {
|
|
if _, found := f.cache.Load(transaction.To.Address); found {
|
|
return true, nil
|
|
}
|
|
|
|
return false, nil
|
|
}
|