"""Case model - 案件.""" from __future__ import annotations from datetime import datetime from decimal import Decimal from sqlalchemy import String, Text, DateTime, Numeric from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.database import Base class Case(Base): __tablename__ = "cases" id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) case_number: Mapped[str] = mapped_column(String(64), unique=True, index=True) victim_name: Mapped[str] = mapped_column(String(128)) description: Mapped[str] = mapped_column(Text, default="") total_loss: Mapped[Decimal] = mapped_column(Numeric(18, 2), default=0) status: Mapped[str] = mapped_column(String(32), default="in_progress") # in_progress | completed created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) updated_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) screenshots: Mapped[list["Screenshot"]] = relationship("Screenshot", back_populates="case", cascade="all, delete-orphan") transactions: Mapped[list["Transaction"]] = relationship("Transaction", back_populates="case", cascade="all, delete-orphan") def __repr__(self) -> str: return f""