import uuid from datetime import datetime from typing import TYPE_CHECKING from sqlalchemy import Boolean, DateTime, ForeignKey from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.dialects.postgresql import UUID, JSONB from app.database import Base if TYPE_CHECKING: pass class DashboardConfig(Base): __tablename__ = "dashboard_configs" id: Mapped[uuid.UUID] = mapped_column( UUID(as_uuid=True), primary_key=True, default=uuid.uuid4 ) tenant_id: Mapped[uuid.UUID | None] = mapped_column( UUID(as_uuid=True), ForeignKey("tenants.id", ondelete="CASCADE"), nullable=True, index=True, ) user_id: Mapped[uuid.UUID | None] = mapped_column( UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=True, index=True, ) widgets: Mapped[list] = mapped_column(JSONB, nullable=False, default=list) is_tenant_default: Mapped[bool] = mapped_column( Boolean, nullable=False, default=False ) created_at: Mapped[datetime] = mapped_column( DateTime, nullable=False, default=datetime.utcnow ) updated_at: Mapped[datetime] = mapped_column( DateTime, nullable=False, default=datetime.utcnow, onupdate=datetime.utcnow )