nidus-sync/platform/geocode/autocomplete.go
Eli Ribble 2d5dca3fb5
Add proxied autocomplete for Stadia
This allows me to make the format consistent and to cache the
intermediate results, which is useful for speed and testing
2026-04-05 21:57:30 +00:00

38 lines
954 B
Go

package geocode
import (
"context"
"fmt"
"github.com/Gleipnir-Technology/nidus-sync/db/models"
"github.com/Gleipnir-Technology/nidus-sync/stadia"
"github.com/rs/zerolog/log"
)
type AutocompleteResult struct {
Detail string
Locality string
}
func Autocomplete(ctx context.Context, org *models.Organization, address string) ([]*AutocompleteResult, error) {
req := stadia.RequestGeocodeAutocomplete{
Text: address,
}
maybeAddServiceArea(&req, org)
resp, err := client.GeocodeAutocomplete(ctx, req)
if err != nil {
return nil, fmt.Errorf("client raw geocode failure on %s: %w", address, err)
}
result := make([]*AutocompleteResult, len(resp.Features))
for i, r := range resp.Features {
if r.Type != "Feature" {
log.Error().Str("type", r.Type).Msg("should be handled from Stadia")
continue
}
result[i] = &AutocompleteResult{
Detail: r.Properties.Name,
Locality: r.Properties.Locality,
}
}
return result, nil
}