eth-indexer/internal/handler/handler.go

53 lines
1.1 KiB
Go

package handler
import (
"context"
"encoding/json"
"github.com/grassrootseconomics/celo-tracker/pkg/event"
"github.com/grassrootseconomics/eth-indexer/internal/store"
)
type (
HandlerOpts struct {
Store store.Store
}
Handler struct {
store store.Store
}
)
func NewHandler(o HandlerOpts) *Handler {
return &Handler{
store: o.Store,
}
}
func (h *Handler) Handle(ctx context.Context, msgSubject string, msgData []byte) error {
var chainEvent event.Event
if err := json.Unmarshal(msgData, &chainEvent); err != nil {
return err
}
switch msgSubject {
case "TRACKER.TOKEN_TRANSFER":
return h.store.InsertTokenTransfer(ctx, chainEvent)
case "TRACKER.POOL_SWAP":
return h.store.InsertPoolSwap(ctx, chainEvent)
case "TRACKER.FAUCET_GIVE":
return h.store.InsertFaucetGive(ctx, chainEvent)
case "TRACKER.POOL_DEPOSIT":
return h.store.InsertPoolDeposit(ctx, chainEvent)
case "TRACKER.TOKEN_MINT":
return h.store.InsertTokenMint(ctx, chainEvent)
case "TRACKER.TOKEN_BURN":
return h.store.InsertTokenBurn(ctx, chainEvent)
case "TRACKER.QUOTER_PRICE_INDEX_UPDATED":
return h.store.InsertPriceQuoteUpdate(ctx, chainEvent)
}
return nil
}