Files
flow-manager/backend/app/models/ingredient.py
2026-01-27 17:40:37 +01:00

30 lines
1.1 KiB
Python

from sqlalchemy import Column, String, DateTime, func, ForeignKey, Enum
from sqlalchemy.dialects.postgresql import UUID, JSONB
import uuid
from sqlalchemy.orm import relationship
import enum
from app.db.session import Base
class AssetType(str, enum.Enum):
Character = "Character"
Location = "Location"
Object = "Object"
Style = "Style"
class Ingredient(Base):
__tablename__ = "ingredients"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
project_id = Column(UUID(as_uuid=True), ForeignKey("projects.id", ondelete="CASCADE"), nullable=False)
name = Column(String, nullable=False)
type = Column(Enum(AssetType, name="asset_type"), nullable=False)
s3_key = Column(String, nullable=False)
s3_bucket = Column(String, default="auteur-assets")
thumbnail_key = Column(String, nullable=True)
metadata_ = Column("metadata", JSONB, default={}) # 'metadata' is reserved in SQLAlchemy Base
created_at = Column(DateTime, default=func.now())
project = relationship("Project", back_populates="ingredients")