Skip to content

Commit

Permalink
refactor: move Map and related types to provider pkg
Browse files Browse the repository at this point in the history
This is needed to access configured map parameters from the provider's
initialization code to inspect geom type. Unfortunately, config pkg
depends on the provider pkg, so simply referencing these types creates a
dependency loop.
  • Loading branch information
bemyak committed Nov 30, 2022
1 parent 8329ac4 commit 780b651
Show file tree
Hide file tree
Showing 35 changed files with 636 additions and 520 deletions.
11 changes: 5 additions & 6 deletions atlas/map.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"strings"
"sync"

"github.com/go-spatial/tegola/config"
"github.com/go-spatial/tegola/observability"

"github.com/golang/protobuf/proto"
Expand Down Expand Up @@ -56,7 +55,7 @@ type Map struct {
Center [3]float64
Layers []Layer
// Params holds configured query parameters
Params []config.QueryParameter
Params []provider.QueryParameter

SRID uint64
// MVT output values
Expand Down Expand Up @@ -120,7 +119,7 @@ func (m Map) AddDebugLayers() Map {
m.Layers = layers

// setup a debug provider
debugProvider, _ := debug.NewTileProvider(dict.Dict{})
debugProvider, _ := debug.NewTileProvider(dict.Dict{}, nil)

m.Layers = append(layers, []Layer{
{
Expand Down Expand Up @@ -183,7 +182,7 @@ func (m Map) FilterLayersByName(names ...string) Map {
return m
}

func (m Map) encodeMVTProviderTile(ctx context.Context, tile *slippy.Tile, params map[string]provider.QueryParameter) ([]byte, error) {
func (m Map) encodeMVTProviderTile(ctx context.Context, tile *slippy.Tile, params provider.Params) ([]byte, error) {
// get the list of our layers
ptile := provider.NewTile(tile.Z, tile.X, tile.Y, uint(m.TileBuffer), uint(m.SRID))

Expand All @@ -200,7 +199,7 @@ func (m Map) encodeMVTProviderTile(ctx context.Context, tile *slippy.Tile, param

// encodeMVTTile will encode the given tile into mvt format
// TODO (arolek): support for max zoom
func (m Map) encodeMVTTile(ctx context.Context, tile *slippy.Tile, params map[string]provider.QueryParameter) ([]byte, error) {
func (m Map) encodeMVTTile(ctx context.Context, tile *slippy.Tile, params provider.Params) ([]byte, error) {

// tile container
var mvtTile mvt.Tile
Expand Down Expand Up @@ -380,7 +379,7 @@ func (m Map) encodeMVTTile(ctx context.Context, tile *slippy.Tile, params map[st
}

// Encode will encode the given tile into mvt format
func (m Map) Encode(ctx context.Context, tile *slippy.Tile, params map[string]provider.QueryParameter) ([]byte, error) {
func (m Map) Encode(ctx context.Context, tile *slippy.Tile, params provider.Params) ([]byte, error) {
var (
tileBytes []byte
err error
Expand Down
6 changes: 3 additions & 3 deletions cmd/internal/register/maps.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (
"github.com/go-spatial/tegola/provider"
)

func webMercatorMapFromConfigMap(cfg config.Map) (newMap atlas.Map) {
func webMercatorMapFromConfigMap(cfg provider.Map) (newMap atlas.Map) {
newMap = atlas.NewWebMercatorMap(string(cfg.Name))
newMap.Attribution = SanitizeAttribution(string(cfg.Attribution))
newMap.Params = cfg.Parameters
Expand Down Expand Up @@ -47,7 +47,7 @@ func layerInfosFindByName(infos []provider.LayerInfo, name string) provider.Laye
return nil
}

func atlasLayerFromConfigLayer(cfg *config.MapLayer, mapName string, layerProvider provider.Layerer) (layer atlas.Layer, err error) {
func atlasLayerFromConfigLayer(cfg *provider.MapLayer, mapName string, layerProvider provider.Layerer) (layer atlas.Layer, err error) {
var (
// providerLayer is primary used for error reporting.
providerLayer = string(cfg.ProviderLayer)
Expand Down Expand Up @@ -124,7 +124,7 @@ func selectProvider(name string, mapName string, newMap *atlas.Map, providers ma
}

// Maps registers maps with with atlas
func Maps(a *atlas.Atlas, maps []config.Map, providers map[string]provider.TilerUnion) error {
func Maps(a *atlas.Atlas, maps []provider.Map, providers map[string]provider.TilerUnion) error {

var (
layerer provider.Layerer
Expand Down
24 changes: 12 additions & 12 deletions cmd/internal/register/maps_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ import (

"github.com/go-spatial/tegola/atlas"
"github.com/go-spatial/tegola/cmd/internal/register"
"github.com/go-spatial/tegola/config"
"github.com/go-spatial/tegola/dict"
"github.com/go-spatial/tegola/internal/env"
"github.com/go-spatial/tegola/provider"
)

func TestMaps(t *testing.T) {
type tcase struct {
atlas atlas.Atlas
maps []config.Map
maps []provider.Map
providers []dict.Dict
expectedErr error
}
Expand All @@ -29,7 +29,7 @@ func TestMaps(t *testing.T) {
provArr[i] = tc.providers[i]
}

providers, err := register.Providers(provArr)
providers, err := register.Providers(provArr, tc.maps)
if err != nil {
t.Errorf("unexpected err: %v", err)
return
Expand All @@ -45,10 +45,10 @@ func TestMaps(t *testing.T) {

tests := map[string]tcase{
"provider layer invalid": {
maps: []config.Map{
maps: []provider.Map{
{
Name: "foo",
Layers: []config.MapLayer{
Layers: []provider.MapLayer{
{
ProviderLayer: "bar",
},
Expand All @@ -67,10 +67,10 @@ func TestMaps(t *testing.T) {
},
},
"provider not found": {
maps: []config.Map{
maps: []provider.Map{
{
Name: "foo",
Layers: []config.MapLayer{
Layers: []provider.MapLayer{
{
ProviderLayer: "bar.baz",
},
Expand All @@ -82,10 +82,10 @@ func TestMaps(t *testing.T) {
},
},
"provider layer not registered with provider": {
maps: []config.Map{
maps: []provider.Map{
{
Name: "foo",
Layers: []config.MapLayer{
Layers: []provider.MapLayer{
{
ProviderLayer: "test.bar",
},
Expand All @@ -105,10 +105,10 @@ func TestMaps(t *testing.T) {
},
},
"default tags": {
maps: []config.Map{
maps: []provider.Map{
{
Name: "foo",
Layers: []config.MapLayer{
Layers: []provider.MapLayer{
{
ProviderLayer: "test.debug-tile-outline",
DefaultTags: env.Dict{
Expand All @@ -126,7 +126,7 @@ func TestMaps(t *testing.T) {
},
},
"success": {
maps: []config.Map{},
maps: []provider.Map{},
providers: []dict.Dict{
{
"name": "test",
Expand Down
4 changes: 2 additions & 2 deletions cmd/internal/register/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (e ErrProviderTypeInvalid) Error() string {
}

// Providers registers data provider backends
func Providers(providers []dict.Dicter) (map[string]provider.TilerUnion, error) {
func Providers(providers []dict.Dicter, maps []provider.Map) (map[string]provider.TilerUnion, error) {
// holder for registered providers
registeredProviders := map[string]provider.TilerUnion{}

Expand Down Expand Up @@ -72,7 +72,7 @@ func Providers(providers []dict.Dicter) (map[string]provider.TilerUnion, error)
}

// register the provider
prov, err := provider.For(ptype, p)
prov, err := provider.For(ptype, p, maps)
if err != nil {
return registeredProviders, err
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/internal/register/providers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestProviders(t *testing.T) {
provArr[i] = tc.config[i]
}

_, err = register.Providers(provArr)
_, err = register.Providers(provArr, nil)
if tc.expectedErr != nil {
if err.Error() != tc.expectedErr.Error() {
t.Errorf("invalid error. expected: %v, got %v", tc.expectedErr, err.Error())
Expand Down
2 changes: 1 addition & 1 deletion cmd/tegola/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ func initConfig(configFile string, cacheRequired bool, logLevel string, logger s
provArr[i] = conf.Providers[i]
}

providers, err := register.Providers(provArr)
providers, err := register.Providers(provArr, conf.Maps)
if err != nil {
return fmt.Errorf("could not register providers: %v", err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/tegola_lambda/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func init() {
}

// register the providers
providers, err := register.Providers(provArr)
providers, err := register.Providers(provArr, nil)
if err != nil {
log.Fatal(err)
}
Expand Down
Loading

0 comments on commit 780b651

Please sign in to comment.