48 lines
1.6 KiB
Go
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
|
|
}
|