79 lines
2.3 KiB
Go
Executable File
79 lines
2.3 KiB
Go
Executable File
package services
|
|
|
|
import (
|
|
agenda "git.coopgo.io/coopgo-platform/agenda/grpcapi"
|
|
fleets "git.coopgo.io/coopgo-platform/fleets/grpcapi"
|
|
groupsmanagement "git.coopgo.io/coopgo-platform/groups-management/grpcapi"
|
|
mobilityaccounts "git.coopgo.io/coopgo-platform/mobility-accounts/grpcapi"
|
|
routing "git.coopgo.io/coopgo-platform/routing-service"
|
|
solidarityservice "git.coopgo.io/sbouaram/solidarity-service/servers/grpc/proto"
|
|
"github.com/spf13/viper"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
type ServicesHandler struct {
|
|
GRPC GRPCServices
|
|
}
|
|
|
|
type GRPCServices struct {
|
|
MobilityAccounts mobilityaccounts.MobilityAccountsClient
|
|
GroupsManagement groupsmanagement.GroupsManagementClient
|
|
Fleets fleets.FleetsClient
|
|
Agenda agenda.AgendaClient
|
|
SolidarityService solidarityservice.SolidarityServiceClient
|
|
Routing routing.RoutingService
|
|
}
|
|
|
|
func NewServicesHandler(cfg *viper.Viper) (*ServicesHandler, error) {
|
|
var (
|
|
mobilityAccountsDial = cfg.GetString("services.grpc.mobilityaccounts.dial")
|
|
groupsManagementDial = cfg.GetString("services.grpc.groupsmanagement.dial")
|
|
fleetsDial = cfg.GetString("services.grpc.fleets.dial")
|
|
agendaDial = cfg.GetString("services.grpc.agenda.dial")
|
|
solidarityDial = cfg.GetString("services.grpc.solidarityservice.dial")
|
|
routing_service_type = cfg.GetString("routing.type")
|
|
valhalla_base_url = cfg.GetString("routing.valhalla.base_url")
|
|
)
|
|
mobilityAccounts, err := NewMobilityAccountService(mobilityAccountsDial)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
groupsManagement, err := NewGroupsManagementService(groupsManagementDial)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
fleetsSvc, err := NewFleetsService(fleetsDial)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
agendaSvc, err := NewAgendaService(agendaDial)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
solidarityService, err := NewSolidarityService(solidarityDial)
|
|
if err != nil {
|
|
return nil , err
|
|
}
|
|
|
|
routing, err := routing.NewRoutingService(routing_service_type, valhalla_base_url)
|
|
if err != nil {
|
|
log.Fatal().Err(err).Msg("Could not initiate the routing service")
|
|
return nil, err
|
|
}
|
|
|
|
return &ServicesHandler{
|
|
GRPC: GRPCServices{
|
|
MobilityAccounts: mobilityAccounts,
|
|
GroupsManagement: groupsManagement,
|
|
Fleets: fleetsSvc,
|
|
Agenda: agendaSvc,
|
|
SolidarityService: solidarityService,
|
|
Routing: routing,
|
|
},
|
|
}, nil
|
|
}
|