From 7ff7e90307db64a2e9c7fa7b2f12a44b732311a5 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 7 May 2026 12:56:12 +0000 Subject: [PATCH] =?UTF-8?q?SQLModel=20ORM=20layer=20for=20magic=5Fplan=5Fp?= =?UTF-8?q?lan/floor/room/window/door=20tables=20=F0=9F=9F=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/db/models/magic_plan.py | 52 +++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 backend/app/db/models/magic_plan.py diff --git a/backend/app/db/models/magic_plan.py b/backend/app/db/models/magic_plan.py new file mode 100644 index 00000000..8a4ecd55 --- /dev/null +++ b/backend/app/db/models/magic_plan.py @@ -0,0 +1,52 @@ +from typing import Optional + +from sqlmodel import Field, SQLModel + + +class MagicPlanPlan(SQLModel, table=True): + __tablename__ = "magic_plan_plan" + + id: Optional[int] = Field(default=None, primary_key=True) + magic_plan_uid: Optional[str] = Field(default=None, unique=True, index=True) + name: Optional[str] = None + address: Optional[str] = None + postcode: Optional[str] = None + + +class MagicPlanFloor(SQLModel, table=True): + __tablename__ = "magic_plan_floor" + + id: Optional[int] = Field(default=None, primary_key=True) + magic_plan_plan_id: int = Field(foreign_key="magic_plan_plan.id") + level: Optional[int] = None + + +class MagicPlanRoom(SQLModel, table=True): + __tablename__ = "magic_plan_room" + + id: Optional[int] = Field(default=None, primary_key=True) + magic_plan_floor_id: int = Field(foreign_key="magic_plan_floor.id") + name: Optional[str] = None + width_m: Optional[float] = None + length_m: Optional[float] = None + area_m2: Optional[float] = None + + +class MagicPlanWindow(SQLModel, table=True): + __tablename__ = "magic_plan_window" + + id: Optional[int] = Field(default=None, primary_key=True) + magic_plan_room_id: int = Field(foreign_key="magic_plan_room.id") + width_m: Optional[float] = None + height_m: Optional[float] = None + area_m2: Optional[float] = None + opening_type: Optional[str] = None + + +class MagicPlanDoor(SQLModel, table=True): + __tablename__ = "magic_plan_door" + + id: Optional[int] = Field(default=None, primary_key=True) + magic_plan_room_id: int = Field(foreign_key="magic_plan_room.id") + width_mm: Optional[float] = None + type: Optional[str] = None