@@ -38,17 +38,18 @@ def __init__(self, yaml_string: str, filesystem: fs.base.FS):
3838 self .version = metadata .get ("version" )
3939 self .bounds = metadata .get ("bounds" )
4040 self .center = metadata .get ("center" )
41- # TODO: Make private and expose needed operations through proper functions
42- self .layers = []
41+ self .__layers = {}
4342 try :
4443 for id , l in config .get ("vector_layers" , {}).items ():
45- self .layers .append (LayerConfig (id , l , filesystem ))
44+ lc = LayerConfig (id , l , filesystem )
45+ self .__layers [lc .id ] = lc
46+
4647 except Exception :
4748 raise ConfigError ("Unable to process vector_layers" )
4849
49- if self .layers :
50- self .minzoom = min ([layer .minzoom for layer in self .layers ])
51- self .maxzoom = max ([layer .maxzoom for layer in self .layers ])
50+ if self .__layers :
51+ self .minzoom = min ([layer .minzoom for layer in self .__layers . values () ])
52+ self .maxzoom = max ([layer .maxzoom for layer in self .__layers . values () ])
5253 else :
5354 self .minzoom = None
5455 self .maxzoom = None
@@ -71,15 +72,18 @@ def tilejson(self, url) -> str:
7172 "fields" : layer .fields ,
7273 "description" : layer .description ,
7374 "minzoom" : layer .minzoom ,
74- "maxzoom" : layer .maxzoom } for layer in self .layers ]
75+ "maxzoom" : layer .maxzoom } for layer in self .__layers . values () ]
7576 result ["vector_layers" ] = [{k : v for k , v in layer .items () if v is not None }
7677 for layer in vector_layers ]
7778
7879 return json .dumps ({k : v for k , v in result .items () if v is not None },
7980 sort_keys = True , indent = 4 )
8081
82+ def layer_names (self ):
83+ return [layer .name for layer in self .__layers .values ()]
84+
8185 def layer_queries (self , tile : Tile ):
82- return list (filter (None , (layer .render_sql (tile ) for layer in self .layers )))
86+ return list (filter (None , (layer .render_sql (tile ) for layer in self .__layers . values () )))
8387
8488
8589class LayerConfig :
0 commit comments