from datetime import datetime from sqlalchemy import Boolean from sqlalchemy import DateTime from sqlalchemy import String from sqlalchemy import func from sqlalchemy.orm import Mapped from sqlalchemy.orm import mapped_column from app.db.database import Base class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(primary_key=True) first_name: Mapped[str] = mapped_column( String(100), default="", server_default="" ) last_name: Mapped[str] = mapped_column( String(100), default="", server_default="" ) username: Mapped[str] = mapped_column( String(50), unique=True, index=True ) email: Mapped[str] = mapped_column( String(255), unique=True ) password_hash: Mapped[str] = mapped_column( String(255) ) role: Mapped[str] = mapped_column( String(50), default="user", server_default="user" ) is_active: Mapped[bool] = mapped_column( Boolean, default=True, server_default="true" ) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now() ) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), onupdate=func.now() )