Files
GL/interface/grpc/health.go
T

48 lines
1.6 KiB
Go

package grpcadapter
import (
"context"
"gl/application/health"
applicationledger "gl/application/ledger"
applicationsettlement "gl/application/settlement"
basev1 "gl/gen/base/v1"
ledgerv1 "gl/gen/ledger/v1"
)
type Handler struct {
ledgerv1.UnimplementedGeneralLedgerServiceServer
health *health.Service
ledger *applicationledger.Service
settlement *applicationsettlement.Service
adminToken string
}
func (h *Handler) WithSettlementAdminToken(token string) *Handler { h.adminToken = token; return h }
func NewHandler(healthService *health.Service, ledgerService *applicationledger.Service, settlementService ...*applicationsettlement.Service) *Handler {
var settlement *applicationsettlement.Service
if len(settlementService) > 0 {
settlement = settlementService[0]
}
return &Handler{health: healthService, ledger: ledgerService, settlement: settlement}
}
func NewHealthHandler(service *health.Service) *Handler {
return NewHandler(service, nil)
}
func (h *Handler) Health(ctx context.Context, _ *basev1.Empty) (*ledgerv1.HealthResponse, error) {
result := h.health.Check(ctx)
return &ledgerv1.HealthResponse{
Serving: result.Serving,
DatabaseReady: result.DatabaseReady,
SettlementEnabled: result.SettlementEnabled,
SettlementReady: result.SettlementReady,
SettlementPending: result.SettlementStats.Pending,
SettlementRetryable: result.SettlementStats.Retryable,
SettlementManualReview: result.SettlementStats.ManualReview,
OldestPendingSeconds: result.SettlementStats.OldestPendingSeconds,
}, nil
}