""" User entity — ER Diagram §3.2.6 Attributes: User_ID, username, email, password_hash, role """ import enum from sqlalchemy import Enum, String from sqlalchemy.orm import Mapped, mapped_column, relationship from app.db.base import Base class UserRole(str, enum.Enum): admin = "admin" analyst = "analyst" class User(Base): __tablename__ = "users" user_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) username: Mapped[str] = mapped_column(String(100), unique=True, nullable=False) email: Mapped[str] = mapped_column(String(255), unique=True, nullable=False) password_hash: Mapped[str] = mapped_column(String(255), nullable=False) role: Mapped[UserRole] = mapped_column( Enum(UserRole), nullable=False, default=UserRole.analyst ) jobs: Mapped[list["MappingJob"]] = relationship(back_populates="user")