"""Image model for uploaded images.""" import uuid from datetime import datetime from sqlalchemy import BigInteger, Column, DateTime, ForeignKey, Integer, String from sqlalchemy.dialects.postgresql import JSONB, UUID from sqlalchemy.orm import relationship from app.database.base import Base class Image(Base): """Image model representing uploaded image files.""" __tablename__ = "images" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id = Column(UUID(as_uuid=True), ForeignKey("users.id", ondelete="CASCADE"), nullable=False, index=True) filename = Column(String(255), nullable=False, index=True) storage_path = Column(String(512), nullable=False) file_size = Column(BigInteger, nullable=False) mime_type = Column(String(100), nullable=False) width = Column(Integer, nullable=False) height = Column(Integer, nullable=False) image_metadata = Column(JSONB, nullable=False) created_at = Column(DateTime, nullable=False, default=datetime.utcnow) reference_count = Column(Integer, nullable=False, default=0) # Relationships user = relationship("User", back_populates="images") board_images = relationship("BoardImage", back_populates="image", cascade="all, delete-orphan") def __repr__(self) -> str: return f""