wormhole-explorer/api/handlers/vaa/service.go

64 lines
2.2 KiB
Go
Raw Normal View History

package vaa
import (
"context"
"github.com/certusone/wormhole/node/pkg/vaa"
"github.com/wormhole-foundation/wormhole-explorer/api/internal/pagination"
"github.com/wormhole-foundation/wormhole-explorer/api/response"
"go.uber.org/zap"
)
// Service definition.
type Service struct {
repo *Repository
logger *zap.Logger
}
// NewService create a new Service.
func NewService(r *Repository, logger *zap.Logger) *Service {
return &Service{repo: r, logger: logger.With(zap.String("module", "VaaService"))}
}
// FindAll get all the the vaa.
func (s *Service) FindAll(ctx context.Context, p *pagination.Pagination) (*response.Response[[]*VaaDoc], error) {
if p == nil {
p = pagination.FirstPage()
}
query := Query().SetPagination(p)
vaas, err := s.repo.Find(ctx, query)
res := response.Response[[]*VaaDoc]{Data: vaas}
return &res, err
}
// FindByChain get all the vaa by chainID.
func (s *Service) FindByChain(ctx context.Context, chain vaa.ChainID, p *pagination.Pagination) (*response.Response[[]*VaaDoc], error) {
query := Query().SetChain(chain).SetPagination(p)
vaas, err := s.repo.Find(ctx, query)
res := response.Response[[]*VaaDoc]{Data: vaas}
return &res, err
}
// FindByEmitter get all the vaa by chainID and emitter address.
func (s *Service) FindByEmitter(ctx context.Context, chain vaa.ChainID, emitter vaa.Address, p *pagination.Pagination) (*response.Response[[]*VaaDoc], error) {
query := Query().SetChain(chain).SetEmitter(emitter.String()).SetPagination(p)
vaas, err := s.repo.Find(ctx, query)
res := response.Response[[]*VaaDoc]{Data: vaas}
return &res, err
}
// FindById get a vaa by chainID, emitter address and sequence number.
func (s *Service) FindById(ctx context.Context, chain vaa.ChainID, emitter vaa.Address, seq uint64) (*response.Response[*VaaDoc], error) {
query := Query().SetChain(chain).SetEmitter(emitter.String()).SetSequence(seq)
vaas, err := s.repo.FindOne(ctx, query)
res := response.Response[*VaaDoc]{Data: vaas}
return &res, err
}
func (s *Service) GetVAAStats(ctx context.Context) (*response.Response[[]*VaaStats], error) {
stats, err := s.repo.FindStats(ctx)
res := response.Response[[]*VaaStats]{Data: stats}
return &res, err
}