from typing import TYPE_CHECKING from sqlmodel import Field, Relationship, UniqueConstraint from app.models.base import BaseModel if TYPE_CHECKING: from app.models.user import User class UserOauth(BaseModel, table=True): """Database model for a user OAuth.""" __tablename__ = "user_oauth" # pyright: ignore[reportAssignmentType] user_id: int = Field(foreign_key="user.id", nullable=False) provider: str = Field(nullable=False) provider_user_id: str = Field(nullable=False) email: str = Field(nullable=False) name: str = Field(nullable=False) picture: str | None = Field(default=None) # constraints __table_args__ = ( UniqueConstraint( "provider", "provider_user_id", name="uq_user_oauth_provider_user_id", ), ) # relationships user: "User" = Relationship(back_populates="oauths")