from sqlalchemy import ( Column, String, DateTime, Time, Boolean, Integer, ForeignKey, JSON, UniqueConstraint ) from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship from .base import Base, TimestampMixin, UUIDMixin class Event(Base, UUIDMixin, TimestampMixin): __tablename__ = 'events' # Basic Information title = Column(String, nullable=False) slug = Column(String, nullable=False) description = Column(String) # Location Details location_name = Column(String) location_address = Column(String) location_url = Column(String) # Timing - now timezone-aware event_date = Column(DateTime(timezone=True), nullable=False) event_start_time = Column(Time) event_end_time = Column(Time) timezone = Column(String, nullable=False) rsvp_deadline = Column(DateTime(timezone=True)) # Rest of the fields remain the same... is_public = Column(Boolean, default=False, nullable=False) access_code = Column(String) created_by = Column(UUID(as_uuid=True), ForeignKey('users.id'), nullable=False) theme_id = Column(UUID(as_uuid=True), ForeignKey('event_themes.id')) custom_theme_settings = Column(JSON) additional_info = Column(JSON) is_active = Column(Boolean, default=True, nullable=False) rsvp_enabled = Column(Boolean, default=True, nullable=False) gift_registry_enabled = Column(Boolean, default=True, nullable=False) updates_enabled = Column(Boolean, default=True, nullable=False) max_guests_per_invitation = Column(Integer) contact_email = Column(String) contact_phone = Column(String) # Relationships remain the same... creator = relationship("User", back_populates="created_events", foreign_keys=[created_by]) theme = relationship("EventTheme", back_populates="events") managers = relationship("EventManager", back_populates="event") guests = relationship("Guest", back_populates="event") gift_items = relationship("GiftItem", back_populates="event") media = relationship("EventMedia", back_populates="event") updates = relationship("EventUpdate", back_populates="event") rsvps = relationship("RSVP", back_populates="event") __table_args__ = ( UniqueConstraint('slug', name='uq_event_slug'), ) def __repr__(self): return f""