devorbit's picture
Initial deployment - secrets removed
26e1c2e
raw
history blame contribute delete
882 Bytes
"""
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")