from __future__ import annotations from datetime import datetime from sqlalchemy import DateTime, ForeignKey, String, func from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base from app.utils.ids import prefixed_id class TelemetryEvent(Base): __tablename__ = "telemetry_events" id: Mapped[str] = mapped_column( String(40), primary_key=True, default=lambda: prefixed_id("tel"), ) user_id: Mapped[str | None] = mapped_column( String(40), ForeignKey("users.id", ondelete="SET NULL"), index=True, nullable=True, ) event_type: Mapped[str] = mapped_column(String(100), index=True, nullable=False) event_metadata: Mapped[str | None] = mapped_column(String(1000), nullable=True) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), nullable=False, )