initial commit
This commit is contained in:
47
handlers/handlers.go
Normal file
47
handlers/handlers.go
Normal file
@@ -0,0 +1,47 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/paulmach/orb/geojson"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type MultimodalRoutingHandler struct {
|
||||
Carpool *CarpoolRoutingHandler
|
||||
}
|
||||
|
||||
func NewMultimodalRoutingHandler(cfg *viper.Viper) (*MultimodalRoutingHandler, error) {
|
||||
carpoolHandler, err := NewCarpoolRoutingHandler(cfg.Sub("carpool"))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not initialize carpool handler : %w", err)
|
||||
}
|
||||
return &MultimodalRoutingHandler{
|
||||
Carpool: carpoolHandler,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (h *MultimodalRoutingHandler) Search(departure geojson.Feature, destination geojson.Feature, departureDate time.Time) ([]*geojson.FeatureCollection, error) {
|
||||
ch := make(chan *geojson.FeatureCollection)
|
||||
journeys := []*geojson.FeatureCollection{}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
// Carpool
|
||||
wg.Add(1)
|
||||
go h.Carpool.Search(ch, &wg, departure, destination, departureDate)
|
||||
|
||||
go func() {
|
||||
wg.Wait()
|
||||
close(ch)
|
||||
}()
|
||||
|
||||
for journey := range ch {
|
||||
log.Debug().Any("journey", journey).Msg("Received from channel")
|
||||
journeys = append(journeys, journey)
|
||||
}
|
||||
return journeys, nil
|
||||
}
|
||||
Reference in New Issue
Block a user