from datetime import datetime, timedelta import uuid from app.core.config import settings from sqlalchemy.dialects.postgresql import UUID from sqlalchemy import Column, String, Boolean, ForeignKey, DateTime, Integer from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy.sql import func from app.core.database import Base, engine class TranscibeInDB(Base): __tablename__ = "transcribe_data" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) text = Column(String) audio_duration = Column(Integer) user_id = Column(UUID(as_uuid=True), ForeignKey("users.id")) user = relationship("UserInDB", back_populates="transcribes") created_at = Column(DateTime(timezone=True), server_default=func.now()) def __init__(self, user_id, text, audio_duration): self.text = text self.audio_duration = audio_duration self.user_id = user_id class TranscribeController: TranscibeInDB = TranscibeInDB def __init__(self, database): self.db = database def create(self, user_id: UUID, text: str, duration: int): try: self.user_id = user_id self.text = text self.audio_duration = duration self.transcribe_data = TranscibeInDB( user_id=self.user_id, text=self.text, audio_duration=self.audio_duration ) self.db.add(self.transcribe_data) self.db.commit() self.db.refresh(self.transcribe_data) except Exception as e: self.db.rollback() raise e