Transcriper_API / models /transcriptions.py
MinaNasser's picture
initial deploy
3dcada4
from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey
from sqlalchemy.sql import func
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.future import select
from .database import Base
from sqlalchemy.orm import relationship
class Transcription(Base):
__tablename__ = "transcriptions"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String, ForeignKey("sessions.session_id",onupdate='CASCADE',ondelete='CASCADE'))
chunk_number = Column(Integer)
text = Column(String)
language = Column(String)
created_at = Column(TIMESTAMP(timezone=True), server_default=func.now())
session = relationship("Session", back_populates="transcriptions")
# CRUD operations
async def create_transcription(db: AsyncSession, session_id: str, chunk_number: int, text: str, language: str):
new_transcription = Transcription(
session_id=session_id,
chunk_number=chunk_number,
text=text,
language=language
)
db.add(new_transcription)
await db.commit()
await db.refresh(new_transcription)
return new_transcription
async def get_transcriptions_by_session(db: AsyncSession, session_id: str):
result = await db.execute(select(Transcription).where(Transcription.session_id == session_id))
return result.scalars().all()
async def update_transcription_text(db: AsyncSession, transcription_id: int, new_text: str):
result = await db.execute(select(Transcription).where(Transcription.id == transcription_id))
transcription = result.scalar_one_or_none()
if transcription:
transcription.text = new_text
await db.commit()
await db.refresh(transcription)
return transcription
async def delete_transcription(db: AsyncSession, transcription_id: int):
result = await db.execute(select(Transcription).where(Transcription.id == transcription_id))
transcription = result.scalar_one_or_none()
if transcription:
await db.delete(transcription)
await db.commit()
return transcription