import uuid from datetime import datetime from typing import Optional from sqlalchemy import Column, DateTime, func from sqlmodel import Field, SQLModel class UserSession(SQLModel, table=True): id: uuid.UUID = Field( default_factory=uuid.uuid4, primary_key=True, nullable=False, ) # The connection information of the assigned TiDB instance. db_host: Optional[str] = Field(max_length=128, default=None, nullable=True) db_port: Optional[int] = Field(default=4000, nullable=True) db_user: Optional[str] = Field(max_length=64, default=None, nullable=True) db_password: Optional[str] = Field(max_length=128, default=None, nullable=True) db_name: Optional[str] = Field(max_length=128, default=None, nullable=True) instance_id: Optional[int] = Field(default=None, foreign_key="db_instances.id") external_user_id: Optional[str] = Field(max_length=128, default=None, nullable=True) external_session_id: Optional[str] = Field( max_length=128, default=None, nullable=True ) created_at: Optional[datetime] = Field( default=None, sa_column=Column(DateTime, default=func.now()) ) last_interact_at: Optional[datetime] = Field( default=None, sa_column=Column(DateTime, default=func.now()) ) __tablename__ = "user_sessions"