Files
eventspace/backend/app/models/user.py
Felipe Cardoso 5cd38c82e0 Refactor relationships in Event and User models
Clarify and fix relationship definitions by specifying foreign keys explicitly in User model. Add new relationships for gift categories and email templates to the Event model, and comment out unused EventUpdate relationship. These changes ensure better structure and future maintainability.
2025-02-28 12:30:25 +01:00

30 lines
1.1 KiB
Python

from sqlalchemy import Column, String, JSON, Boolean
from sqlalchemy.orm import relationship
from .base import Base, TimestampMixin, UUIDMixin
class User(Base, UUIDMixin, TimestampMixin):
__tablename__ = 'users'
email = Column(String, unique=True, nullable=False, index=True)
password_hash = Column(String, nullable=False)
first_name = Column(String, nullable=False)
last_name = Column(String, nullable=False)
phone_number = Column(String)
is_active = Column(Boolean, default=True, nullable=False)
is_superuser = Column(Boolean, default=False, nullable=False)
preferences = Column(JSON)
# Fix relationships with explicit foreign_keys
created_events = relationship("Event", back_populates="creator", foreign_keys="Event.created_by")
# Specify which foreign key to use in EventManager (this is the key fix)
managed_events = relationship(
"EventManager",
back_populates="user",
foreign_keys="EventManager.user_id"
)
guest_profiles = relationship("Guest", back_populates="user", foreign_keys="Guest.user_id")
def __repr__(self):
return f"<User {self.email}>"