from datetime import datetime from sqlalchemy import DateTime, ForeignKey, Integer, String, Text, func from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class RestoreHistory(Base): """恢复执行历史。""" __tablename__ = "restore_history" id: Mapped[int] = mapped_column(Integer, primary_key=True) run_id: Mapped[int] = mapped_column( Integer, ForeignKey("runs.id", ondelete="CASCADE"), nullable=False, index=True ) target: Mapped[str] = mapped_column(String(512), nullable=False) status: Mapped[str] = mapped_column(String(16), nullable=False, default="pending") started_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) finished_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) error_message: Mapped[str | None] = mapped_column(Text, nullable=True) created_at: Mapped[datetime] = mapped_column( DateTime, server_default=func.now(), nullable=False )