Spaces:
Sleeping
Sleeping
| 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") | |