test / behavior_backend /app /db /models.py
hibatorrahmen's picture
Add backend application and Dockerfile
8ae78b0
from sqlalchemy import Column, String, Integer, Float, DateTime, Boolean, Text, LargeBinary, JSON, ForeignKey
from datetime import datetime, timezone
from app.db.base import Base
class Video(Base):
"""Database model for video metadata."""
__tablename__ = "videos"
id = Column(String, primary_key=True, index=True)
original_filename = Column(String, nullable=False)
upload_date = Column(DateTime, default=lambda: datetime.now(timezone.utc))
file_path = Column(String, nullable=False)
size = Column(Integer, nullable=False)
duration = Column(Float, nullable=True)
status = Column(String, default="uploaded")
class ProcessingResult(Base):
"""Database model for video processing results."""
__tablename__ = "processing_results"
id = Column(String, primary_key=True, index=True)
video_id = Column(String, ForeignKey('videos.id'), nullable=False)
processing_date = Column(DateTime, default=lambda: datetime.now(timezone.utc))
transcript = Column(Text, nullable=True)
emotion_analysis = Column(JSON, nullable=True)
overall_summary = Column(Text, nullable=True)
transcript_analysis = Column(JSON, nullable=True)
recommendations = Column(JSON, nullable=True)
body_language_analysis = Column(JSON, nullable=True)
body_language_data = Column(JSON, nullable=True)
eye_contact_analysis = Column(JSON, nullable=True)
eye_contact_data = Column(JSON, nullable=True)
face_analysis_data = Column(JSON, nullable=True)
class User(Base):
"""Database model for user data."""
__tablename__ = "users"
id = Column(String, primary_key=True, index=True)
email = Column(String, unique=True, index=True, nullable=False)
first_name = Column(String, nullable=False)
last_name = Column(String, nullable=False)
hashed_password = Column(String, nullable=False)
created_at = Column(DateTime, default=lambda: datetime.now(timezone.utc))
updated_at = Column(DateTime, default=lambda: datetime.now(timezone.utc), onupdate=lambda: datetime.now(timezone.utc))
is_active = Column(Boolean, default=True)