from datetime import datetime import uuid from pydantic import BaseModel, ConfigDict, Field from app.models import JobStatus class ORMModel(BaseModel): model_config = ConfigDict(from_attributes=True) class SampleCreate(BaseModel): name: str = Field(min_length=1, max_length=120) vcf_uri: str assembly: str = "GRCh38" class SampleOut(ORMModel): id: uuid.UUID name: str vcf_uri: str assembly: str created_at: datetime class JobOut(ORMModel): id: uuid.UUID sample_id: uuid.UUID status: JobStatus workflow_ref: str | None vep_version: str | None created_at: datetime finished_at: datetime | None class PredictionOut(ORMModel): model_name: str model_version: str score: float class VariantOut(ORMModel): id: int chrom: str pos: int ref: str alt: str gene: str | None consequence: str | None impact: str | None hgvsc: str | None hgvsp: str | None gnomad_af: float | None clinvar_sig: str | None prediction: PredictionOut | None = None class VariantPage(BaseModel): items: list[VariantOut] total: int limit: int offset: int