from datetime import datetime from typing import Optional import uuid from sqlalchemy import Column, DateTime, String, Boolean from sqlmodel import Field, SQLModel from utils.datetime_utils import get_current_utc_datetime class UserModel(SQLModel, table=True): __tablename__ = "users" id: uuid.UUID = Field(primary_key=True, default_factory=uuid.uuid4) azure_oid: Optional[str] = Field( sa_column=Column(String, unique=True, index=True, nullable=True), default=None, ) email: str = Field(sa_column=Column(String, unique=True, index=True)) display_name: str role: str = Field(default="user") # super_admin, client_admin, user is_active: bool = Field(sa_column=Column(Boolean, default=True, nullable=False)) last_login_at: Optional[datetime] = Field( sa_column=Column(DateTime(timezone=True), nullable=True), default=None, ) created_at: datetime = Field( sa_column=Column( DateTime(timezone=True), nullable=False, default=get_current_utc_datetime ), ) updated_at: datetime = Field( sa_column=Column( DateTime(timezone=True), nullable=False, default=get_current_utc_datetime, onupdate=get_current_utc_datetime, ), )