Files
homelable/backend/app/schemas/edges.py
T
Pouzor 3afc8ed3d8 fix: persist edge waypoints in backend
Add waypoints JSON column to edges table, include it in all edge
schemas (EdgeBase, EdgeUpdate, canvas CanvasEdge) and add the
idempotent ALTER TABLE migration so existing databases are upgraded
on next startup.
2026-04-08 23:31:53 +02:00

57 lines
1.3 KiB
Python

from datetime import datetime
from pydantic import BaseModel, field_validator
from app.schemas.utils import normalize_animated
class EdgeBase(BaseModel):
source: str
target: str
type: str = "ethernet"
label: str | None = None
vlan_id: int | None = None
speed: str | None = None
custom_color: str | None = None
path_style: str | None = None
animated: str = 'none'
source_handle: str | None = None
target_handle: str | None = None
waypoints: list | None = None
@field_validator('animated', mode='before')
@classmethod
def validate_animated(cls, v: object) -> str:
return normalize_animated(v)
class EdgeCreate(EdgeBase):
pass
class EdgeUpdate(BaseModel):
type: str | None = None
label: str | None = None
vlan_id: int | None = None
speed: str | None = None
custom_color: str | None = None
path_style: str | None = None
animated: str | None = None
source_handle: str | None = None
target_handle: str | None = None
waypoints: list | None = None
@field_validator('animated', mode='before')
@classmethod
def validate_animated(cls, v: object) -> str | None:
if v is None:
return None
return normalize_animated(v)
class EdgeResponse(EdgeBase):
id: str
created_at: datetime
model_config = {"from_attributes": True}