""" Heap model definitions """ from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Table, Index from sqlalchemy.sql import func from sqlalchemy.orm import relationship import uuid from app.database import Base # Association table for many-to-many relationship with additional fields heap_photos = Table( 'heap_photos', Base.metadata, Column('heap_id', String, ForeignKey('heaps.id', ondelete='CASCADE'), primary_key=True), Column('photo_id', String, ForeignKey('photos.id', ondelete='CASCADE'), primary_key=True), Column('added_at', DateTime, server_default=func.now()), Column('sort_order', Integer, default=0), Index('ix_heap_photos_heap_id', 'heap_id'), Index('ix_heap_photos_photo_id', 'photo_id'), ) class Heap(Base): __tablename__ = 'heaps' id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) name = Column(String, nullable=False) created_at = Column(DateTime, server_default=func.now()) updated_at = Column(DateTime, onupdate=func.now()) is_active = Column(Boolean, default=False) # For active heap feature # Owner user_id = Column(String, ForeignKey('users.id'), nullable=True, index=True) # Relationships photos = relationship("Photo", secondary=heap_photos, backref="heaps") class HeapPhoto: """Helper class for heap-photo associations (not a table model)""" pass