Files

40 lines
1.4 KiB
Python

import enum
import uuid
from datetime import datetime
from sqlalchemy import DateTime, Enum, ForeignKey, String, Text, func
from sqlalchemy.dialects.postgresql import JSONB
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.models.base import Base, TimestampMixin, UUIDMixin
class ProtocolStatus(str, enum.Enum):
generating = "generating"
done = "done"
error = "error"
class Protocol(UUIDMixin, TimestampMixin, Base):
__tablename__ = "protocols"
transcription_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("transcriptions.id", ondelete="CASCADE")
)
template_id: Mapped[uuid.UUID] = mapped_column(
ForeignKey("prompt_templates.id")
)
content: Mapped[dict] = mapped_column(JSONB, default=dict)
raw_text: Mapped[str] = mapped_column(Text, default="")
llm_model: Mapped[str] = mapped_column(String(100))
status: Mapped[ProtocolStatus] = mapped_column(
Enum(ProtocolStatus), default=ProtocolStatus.generating
)
updated_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), server_default=func.now(), onupdate=func.now()
)
transcription: Mapped["Transcription"] = relationship(back_populates="protocols")
template: Mapped["PromptTemplate"] = relationship(back_populates="protocols")
export_files: Mapped[list["ExportFile"]] = relationship(back_populates="protocol")