Fix .gitignore: models/ was excluding backend/app/models/
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
import datetime
|
||||
from sqlalchemy import (
|
||||
Column,
|
||||
Integer,
|
||||
String,
|
||||
Float,
|
||||
Text,
|
||||
DateTime,
|
||||
ForeignKey,
|
||||
Enum as SAEnum,
|
||||
)
|
||||
from sqlalchemy.orm import relationship
|
||||
from .database import Base
|
||||
import enum
|
||||
|
||||
|
||||
class VideoStatus(str, enum.Enum):
|
||||
uploaded = "uploaded"
|
||||
queued = "queued"
|
||||
processing = "processing"
|
||||
review = "review"
|
||||
generating = "generating"
|
||||
done = "done"
|
||||
error = "error"
|
||||
|
||||
|
||||
class JobType(str, enum.Enum):
|
||||
process = "process"
|
||||
generate = "generate"
|
||||
|
||||
|
||||
class JobStatus(str, enum.Enum):
|
||||
pending = "pending"
|
||||
running = "running"
|
||||
done = "done"
|
||||
failed = "failed"
|
||||
|
||||
|
||||
class Video(Base):
|
||||
__tablename__ = "videos"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
filename = Column(String(512), nullable=False)
|
||||
filepath = Column(String(1024), nullable=False)
|
||||
duration = Column(Float, nullable=True)
|
||||
status = Column(String(32), default=VideoStatus.uploaded.value)
|
||||
output_path = Column(String(1024), nullable=True)
|
||||
error_message = Column(Text, nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(
|
||||
DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow
|
||||
)
|
||||
|
||||
segments = relationship(
|
||||
"Segment", back_populates="video", cascade="all, delete-orphan"
|
||||
)
|
||||
jobs = relationship("Job", back_populates="video", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class Segment(Base):
|
||||
__tablename__ = "segments"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
video_id = Column(Integer, ForeignKey("videos.id"), nullable=False)
|
||||
speaker_label = Column(String(32), nullable=True)
|
||||
start_time = Column(Float, nullable=False)
|
||||
end_time = Column(Float, nullable=False)
|
||||
english_text = Column(Text, nullable=True)
|
||||
danish_text = Column(Text, nullable=True)
|
||||
status = Column(String(32), default="pending")
|
||||
|
||||
video = relationship("Video", back_populates="segments")
|
||||
|
||||
|
||||
class Job(Base):
|
||||
__tablename__ = "jobs"
|
||||
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
video_id = Column(Integer, ForeignKey("videos.id"), nullable=False)
|
||||
job_type = Column(String(32), nullable=False)
|
||||
status = Column(String(32), default=JobStatus.pending.value)
|
||||
progress = Column(Float, default=0.0)
|
||||
error_message = Column(Text, nullable=True)
|
||||
celery_task_id = Column(String(256), nullable=True)
|
||||
created_at = Column(DateTime, default=datetime.datetime.utcnow)
|
||||
updated_at = Column(
|
||||
DateTime, default=datetime.datetime.utcnow, onupdate=datetime.datetime.utcnow
|
||||
)
|
||||
|
||||
video = relationship("Video", back_populates="jobs")
|
||||
Reference in New Issue
Block a user