File size: 868 Bytes
f113aa5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from sqlmodel import SQLModel, Field, Relationship
from typing import Optional
import uuid
from datetime import datetime
from sqlalchemy import Column, DateTime, Boolean, String, ForeignKey


class RefreshToken(SQLModel, table=True):
    id: Optional[uuid.UUID] = Field(default_factory=uuid.uuid4, primary_key=True)
    # Use a plain sa_column without `index=True` (SQLModel does not allow index=True when sa_column is provided)
    token_hash: str = Field(sa_column=Column(String(length=128)))
    user_id: Optional[uuid.UUID] = Field(foreign_key="user.id")
    revoked: bool = Field(default=False, sa_column=Column(Boolean, default=False))
    created_at: datetime = Field(sa_column=Column(DateTime, default=datetime.utcnow))
    expires_at: datetime = Field(sa_column=Column(DateTime))

    # Relationship back to user is optional and not required for our use-case