Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from enum import Enum | |
| from uuid import uuid4 | |
| from sqlalchemy import Boolean, String | |
| from sqlalchemy.orm import Mapped, mapped_column, relationship | |
| from app.db.base import Base, TimestampMixin | |
| class UserRole(str, Enum): | |
| ADMIN = "admin" | |
| USER = "user" | |
| class User(TimestampMixin, Base): | |
| __tablename__ = "users" | |
| id: Mapped[str] = mapped_column(String(36), primary_key=True, default=lambda: str(uuid4())) | |
| email: Mapped[str] = mapped_column(String(255), unique=True, index=True) | |
| full_name: Mapped[str] = mapped_column(String(255)) | |
| password_hash: Mapped[str] = mapped_column(String(255)) | |
| role: Mapped[str] = mapped_column(String(32), default=UserRole.USER.value) | |
| is_active: Mapped[bool] = mapped_column(Boolean, default=True) | |
| predictions = relationship("PredictionLog", back_populates="user", cascade="all, delete-orphan") | |