Files
old-backend/services/location/location_service.go
2023-10-12 05:23:34 +02:00

34 lines
862 B
Go

package location
import (
"context"
"gitlab.com/pactual1/backend/models"
"gitlab.com/pactual1/backend/services/location/mapbox_lib"
)
type service struct {
accessToken string
}
type Service interface {
SearchPlace(context.Context, string) ([]*models.Place, error)
}
func NewService(accessToken string) Service {
return service{accessToken: accessToken}
}
func (s service) SearchPlace(ctx context.Context, query string) ([]*models.Place, error) {
geocoder := mapbox.NewFastHttpGeocoder(mapbox.AccessToken(s.accessToken))
resp, err := geocoder.ForwardGeocode(ctx, &mapbox.ForwardGeocodeRequest{SearchText: query})
if err != nil {
return nil, err
}
var places []*models.Place
for _, feature := range resp.Features {
places = append(places, &models.Place{Text: feature.Text, Coordinates: feature.Geometry.Coordinates})
}
return places, nil
}