etape laptop
This commit is contained in:
62
backend/app/routes/settings.py
Normal file
62
backend/app/routes/settings.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional
|
||||
from sqlmodel import Session
|
||||
from ..database import get_session
|
||||
from ..models import MapSettings
|
||||
|
||||
router = APIRouter(prefix="/settings", tags=["settings"])
|
||||
|
||||
|
||||
class MapSettingsUpdate(BaseModel):
|
||||
center_lng: Optional[float] = None
|
||||
center_lat: Optional[float] = None
|
||||
zoom: Optional[float] = None
|
||||
base_layer: Optional[str] = None
|
||||
|
||||
|
||||
@router.get("/map")
|
||||
def get_map_settings(session: Session = Depends(get_session)):
|
||||
settings = session.get(MapSettings, 1)
|
||||
if not settings:
|
||||
return {
|
||||
"center_lng": 2.35,
|
||||
"center_lat": 48.85,
|
||||
"zoom": 5.0,
|
||||
"base_layer": "vector",
|
||||
}
|
||||
return {
|
||||
"center_lng": settings.center_lng,
|
||||
"center_lat": settings.center_lat,
|
||||
"zoom": settings.zoom,
|
||||
"base_layer": settings.base_layer,
|
||||
}
|
||||
|
||||
|
||||
@router.put("/map")
|
||||
def save_map_settings(
|
||||
data: MapSettingsUpdate,
|
||||
session: Session = Depends(get_session),
|
||||
):
|
||||
settings = session.get(MapSettings, 1)
|
||||
if not settings:
|
||||
settings = MapSettings(id=1)
|
||||
|
||||
if data.center_lng is not None:
|
||||
settings.center_lng = data.center_lng
|
||||
if data.center_lat is not None:
|
||||
settings.center_lat = data.center_lat
|
||||
if data.zoom is not None:
|
||||
settings.zoom = data.zoom
|
||||
if data.base_layer is not None:
|
||||
settings.base_layer = data.base_layer
|
||||
|
||||
session.add(settings)
|
||||
session.commit()
|
||||
session.refresh(settings)
|
||||
return {
|
||||
"center_lng": settings.center_lng,
|
||||
"center_lat": settings.center_lat,
|
||||
"zoom": settings.zoom,
|
||||
"base_layer": settings.base_layer,
|
||||
}
|
||||
Reference in New Issue
Block a user