import enum from datetime import datetime from sqlalchemy import String, Enum, ForeignKey, DateTime, Boolean from sqlalchemy.orm import Mapped, mapped_column, relationship from app.database import Base class AssetType(str, enum.Enum): IMAGE = "image" AUDIO = "audio" class Asset(Base): __tablename__ = "assets" id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) project_id: Mapped[int] = mapped_column(ForeignKey("projects.id"), nullable=False) asset_type: Mapped[AssetType] = mapped_column(Enum(AssetType), nullable=False) original_url: Mapped[str | None] = mapped_column(String(2048), nullable=True) local_path: Mapped[str] = mapped_column(String(512), nullable=False) filename: Mapped[str] = mapped_column(String(255), nullable=False) r2_key: Mapped[str | None] = mapped_column(String(512), nullable=True) r2_url: Mapped[str | None] = mapped_column(String(2048), nullable=True) excluded: Mapped[bool] = mapped_column(Boolean, default=False, server_default="0") created_at: Mapped[datetime] = mapped_column( DateTime, default=datetime.utcnow ) # Relationships project = relationship("Project", back_populates="assets")