from typing import Any from sqlmodel import Field, String, JSON, Column from .models_base import Model from .metadata import gisaf_map class BaseStyle(Model): metadata = gisaf_map __tablename__ = 'map_base_style' class Admin: menu = 'Other' flask_admin_model_view = 'MapBaseStyleModelView' id: int = Field(primary_key=True) name: str style: dict[str, Any] | None = Field(sa_type=JSON(none_as_null=True)) mbtiles: str = Field(sa_type=String(50)) static_tiles_url: str enabled: bool = True def __repr__(self): return ''.format(self=self) class BaseMap(Model): metadata = gisaf_map __tablename__ = 'base_map' class Admin: menu = 'Other' id: int = Field(primary_key=True) name: str def __repr__(self): return ''.format(self=self) def __str__(self): return self.name class BaseMapLayer(Model): metadata = gisaf_map __tablename__ = 'base_map_layer' class Admin: menu = 'Other' id: int = Field(primary_key=True) base_map_id: int = Field(foreign_key='base_map.id', index=True) store: str = Field(sa_type=String(100)) @classmethod def dyn_join_with(cls): return { 'base_map': BaseMap, } def __repr__(self): return f"" def __str__(self): return f"{self.store or '':s}"