from __future__ import annotations from datetime import datetime from uuid import UUID, uuid4 from sqlalchemy import JSON, Column from sqlmodel import Field from app.models.tenancy import TenantScoped class Board(TenantScoped, table=True): __tablename__ = "boards" id: UUID = Field(default_factory=uuid4, primary_key=True) name: str slug: str = Field(index=True) gateway_id: UUID | None = Field(default=None, foreign_key="gateways.id", index=True) board_type: str = Field(default="goal", index=True) objective: str | None = None success_metrics: dict[str, object] | None = Field(default=None, sa_column=Column(JSON)) target_date: datetime | None = None goal_confirmed: bool = Field(default=False) goal_source: str | None = None created_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow)