""" Folder and SourceRoot model definitions """ from sqlalchemy import Column, String, Integer, Boolean, DateTime, ForeignKey, Index from sqlalchemy.sql import func from sqlalchemy.orm import relationship import uuid from app.database import Base class SourceRoot(Base): __tablename__ = 'source_roots' id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) name = Column(String, nullable=False) path = Column(String, unique=True, nullable=False) is_active = Column(Boolean, default=True) added_at = Column(DateTime, server_default=func.now()) # Relationships folders = relationship("Folder", back_populates="source_root") class Folder(Base): __tablename__ = 'folders' id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) name = Column(String, nullable=False) path = Column(String, unique=True, nullable=False) parent_id = Column(String, ForeignKey('folders.id')) source_root_id = Column(String, ForeignKey('source_roots.id')) photo_count = Column(Integer, default=0) last_scanned = Column(DateTime) # Relationships source_root = relationship("SourceRoot", back_populates="folders") photos = relationship("Photo", backref="folder") # Indexes __table_args__ = ( Index('ix_folders_path', 'path'), Index('ix_folders_parent_id', 'parent_id'), Index('ix_folders_source_root_id', 'source_root_id'), )