from datetime import datetime from typing import Optional from pydantic import BaseModel class Token(BaseModel): access_token: str token_type: str refresh_token: Optional[str] = None expires_at: Optional[datetime] = None class TokenPayload(BaseModel): sub: Optional[int] = None exp: Optional[datetime] = None type: Optional[str] = "access" class RefreshTokenCreate(BaseModel): token: str expires_at: datetime user_id: int class RefreshTokenUpdate(BaseModel): revoked: Optional[bool] = None class RefreshTokenInDB(BaseModel): id: int token: str expires_at: datetime created_at: datetime revoked: bool user_id: int class Config: from_attributes = True