44
55from utils import fields as custom_fields
66
7- from .config import VectorConfig , VectorTileServerNameEnum , VectorTileServerNormConfig
7+ from .config import VectorConfig , VectorTileServerNameEnum
8+
9+
10+ class VectorTileServerInstanceConfig (typing .TypedDict ):
11+ url : str
12+ credits : str
13+ min_zoom : int
14+ max_zoom : int
15+ source_layer : str
816
917
1018class VectorTileServerCustomConfig (BaseModel ):
1119 url : custom_fields .PydanticVectorTileServerUrl
12- source_name : custom_fields .PydanticLongText
20+ source_layer : custom_fields .PydanticLongText
1321 credits : custom_fields .PydanticLongText
1422 min_zoom : custom_fields .PydanticZoomLevel
1523 max_zoom : custom_fields .PydanticZoomLevel
1624
1725
1826class VectorTileServerCommonConfig (BaseModel ):
19- source_name : custom_fields .PydanticLongText
27+ source_layer : custom_fields .PydanticLongText
2028 credits : custom_fields .PydanticLongText
2129
2230
@@ -28,17 +36,47 @@ class VectorTileServerConfig(BaseModel):
2836 open_free_map : VectorTileServerCommonConfig | None = None
2937 versatiles : VectorTileServerCommonConfig | None = None
3038
31- def get_config (self ) -> VectorTileServerNormConfig :
39+ def get_config (self ) -> VectorTileServerInstanceConfig :
3240 if self .name == VectorTileServerNameEnum .CUSTOM :
3341 assert self .custom is not None
3442 return {
3543 "url" : self .custom .url ,
3644 "credits" : self .custom .credits ,
3745 "min_zoom" : self .custom .min_zoom ,
3846 "max_zoom" : self .custom .max_zoom ,
39- "layers" : [self .custom .source_name ],
47+ "source_layer" : self .custom .source_layer ,
48+ }
49+
50+ conf = VectorConfig .get_config (self .name )
51+
52+ if self .name == VectorTileServerNameEnum .OPEN_STREET_MAP :
53+ assert self .open_street_map is not None
54+ return {
55+ "source_layer" : self .open_street_map .source_layer ,
56+ "url" : conf ["url" ],
57+ "credits" : conf ["credits" ],
58+ "min_zoom" : conf ["min_zoom" ],
59+ "max_zoom" : conf ["max_zoom" ],
60+ }
61+ if self .name == VectorTileServerNameEnum .OPEN_FREE_MAP :
62+ assert self .open_free_map is not None
63+ return {
64+ "source_layer" : self .open_free_map .source_layer ,
65+ "url" : conf ["url" ],
66+ "credits" : conf ["credits" ],
67+ "min_zoom" : conf ["min_zoom" ],
68+ "max_zoom" : conf ["max_zoom" ],
69+ }
70+ if self .name == VectorTileServerNameEnum .VERSATILES :
71+ assert self .versatiles is not None
72+ return {
73+ "source_layer" : self .versatiles .source_layer ,
74+ "url" : conf ["url" ],
75+ "credits" : conf ["credits" ],
76+ "min_zoom" : conf ["min_zoom" ],
77+ "max_zoom" : conf ["max_zoom" ],
4078 }
41- return VectorConfig . get_config (self .name )
79+ typing . assert_never (self .name )
4280
4381 # FIXME(tnagorra): Do we need this?
4482 @field_validator ("name" , mode = "before" )
0 commit comments