Files
2026-03-01 07:44:19 +09:00

40 lines
1.2 KiB
Python

from __future__ import annotations
from datetime import datetime
from sqlmodel import Field, Relationship, SQLModel
from app.db.base import TimestampMixin
class RefreshToken(TimestampMixin, SQLModel, table=True):
__tablename__ = "refresh_tokens"
id: int | None = Field(default=None, primary_key=True)
user_id: int = Field(foreign_key="users.id", index=True)
token: str = Field(max_length=500, unique=True, index=True)
expires_at: datetime
is_revoked: bool = Field(default=False)
device_info: str = Field(default="", max_length=255)
# Relationships
user: User | None = Relationship(back_populates="refresh_tokens")
class OAuthAccount(TimestampMixin, SQLModel, table=True):
__tablename__ = "oauth_accounts"
id: int | None = Field(default=None, primary_key=True)
user_id: int = Field(foreign_key="users.id", index=True)
provider: str = Field(max_length=50)
provider_user_id: str = Field(max_length=255)
access_token: str = Field(default="", max_length=500)
refresh_token: str = Field(default="", max_length=500)
expires_at: datetime | None = Field(default=None)
# Avoid circular import
from app.models.mariadb.user import User # noqa: E402, F811
RefreshToken.model_rebuild()