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 }