feat(results): add generated video management
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import json
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from packages.adapters.sqlalchemy_impl.models import GeneratedVideoModel
|
||||
@@ -22,6 +24,9 @@ class SQLAlchemyGeneratedVideoRepository:
|
||||
width=video.width,
|
||||
height=video.height,
|
||||
fps=video.fps,
|
||||
status=video.status,
|
||||
review_status=video.review_status,
|
||||
generation_params=json.dumps(video.generation_params, ensure_ascii=False),
|
||||
generated_at=video.generated_at,
|
||||
created_at=video.created_at,
|
||||
)
|
||||
@@ -46,10 +51,24 @@ class SQLAlchemyGeneratedVideoRepository:
|
||||
width=int(model.width or 0),
|
||||
height=int(model.height or 0),
|
||||
fps=model.fps,
|
||||
status=getattr(model, "status", "completed"),
|
||||
review_status=getattr(model, "review_status", "pending_review"),
|
||||
generation_params=json.loads(getattr(model, "generation_params", "{}") or "{}"),
|
||||
generated_at=model.generated_at,
|
||||
created_at=model.created_at,
|
||||
)
|
||||
|
||||
def update(self, video: GeneratedVideo) -> GeneratedVideo:
|
||||
model = self.session.query(GeneratedVideoModel).filter(GeneratedVideoModel.id == video.id).first()
|
||||
if model is None:
|
||||
return video
|
||||
model.status = video.status
|
||||
model.review_status = video.review_status
|
||||
model.generation_params = json.dumps(video.generation_params, ensure_ascii=False)
|
||||
self.session.add(model)
|
||||
self.session.commit()
|
||||
return video
|
||||
|
||||
def list_by_project(self, project_id: str) -> list[GeneratedVideo]:
|
||||
models = self.session.query(GeneratedVideoModel).filter(GeneratedVideoModel.project_id == project_id).all()
|
||||
return [self.get(model.id) for model in models if self.get(model.id) is not None]
|
||||
|
||||
@@ -195,8 +195,12 @@ class GeneratedVideoModel(Base):
|
||||
width = Column(Float, nullable=False)
|
||||
height = Column(Float, nullable=False)
|
||||
fps = Column(Float, nullable=False)
|
||||
status = Column(String(20), nullable=False, default="completed", index=True)
|
||||
review_status = Column(String(20), nullable=False, default="pending_review", index=True)
|
||||
generation_params = Column(Text, nullable=False, default="{}")
|
||||
generated_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
updated_at = Column(DateTime, nullable=True)
|
||||
|
||||
|
||||
class TaskModel(Base):
|
||||
|
||||
Reference in New Issue
Block a user