20 lines
784 B
Python
20 lines
784 B
Python
import uuid
|
|
from datetime import datetime, timezone
|
|
from sqlmodel import SQLModel, Field
|
|
|
|
|
|
class Zone(SQLModel, table=True):
|
|
__tablename__ = "zones"
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
owner_id: uuid.UUID = Field(foreign_key="users.id", index=True)
|
|
activity_id: uuid.UUID = Field(foreign_key="activities.id")
|
|
# Polygon stored as WKT text for SQLite compatibility.
|
|
# For PostgreSQL/PostGIS, a migration can add a GEOMETRY column.
|
|
polygon_wkt: str # e.g. "POLYGON((lon lat, lon lat, ...))"
|
|
area_m2: float
|
|
defense_level: int = Field(default=1)
|
|
defense_runs: int = Field(default=0)
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
|
last_reinforced_at: datetime | None = None
|