from enum import Enum as PyEnum from sqlalchemy import ( Column, DateTime, Enum, Float, ForeignKey, Integer, String, func, ) from sqlalchemy.dialects.postgresql import UUID from pydantic import BaseModel from ._base import Base class AnalysisType(PyEnum): STRENGTHS = "STRENGTHS" WEAKNESSES = "WEAKNESSES" DEFICIENCIES = "DEFICIENCIES" class AnalysisStatus(PyEnum): ACCEPTED = "ACCEPTED" REJECTED = "REJECTED" PENDING = "PENDING" class Analysis(Base): __tablename__ = "analysis" id = Column(UUID(as_uuid=True), primary_key=True) evaluation_id = Column( UUID(as_uuid=True), ForeignKey("evaluations.id", ondelete="CASCADE"), nullable=False, ) insights = Column(String, nullable=False) analysis_type = Column(Enum(AnalysisType), nullable=False) status = Column(Enum(AnalysisStatus, name="analysisstatus"), nullable=False, default=AnalysisStatus.PENDING) created_at = Column(DateTime(), nullable=False, default=func.now()) updated_at = Column( DateTime(), nullable=False, default=func.now(), onupdate=func.now() )