"""ImportSettings — single-row table holding the importer's tunable knobs. Enforced as a single row via a CHECK (id = 1) constraint. The application always SELECTs id=1 and never inserts/deletes after the initial migration. """ from sqlalchemy import Boolean, CheckConstraint, Float, Integer, Text from sqlalchemy.orm import Mapped, mapped_column from .base import Base class ImportSettings(Base): __tablename__ = "import_settings" # Bare constraint name — Base.metadata's naming convention applies the # ck__ prefix, producing the final ck_import_settings_singleton. __table_args__ = (CheckConstraint("id = 1", name="singleton"),) id: Mapped[int] = mapped_column(Integer, primary_key=True) import_scan_path: Mapped[str] = mapped_column(Text, nullable=False, default="/import") min_width: Mapped[int] = mapped_column(Integer, nullable=False, default=0) min_height: Mapped[int] = mapped_column(Integer, nullable=False, default=0) skip_transparent: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) transparency_threshold: Mapped[float] = mapped_column(Float, nullable=False, default=0.9) skip_single_color: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) single_color_threshold: Mapped[float] = mapped_column(Float, nullable=False, default=0.95) single_color_tolerance: Mapped[int] = mapped_column(Integer, nullable=False, default=30) phash_threshold: Mapped[int] = mapped_column(Integer, nullable=False, default=10) # FC-3c downloader knobs download_rate_limit_seconds: Mapped[float] = mapped_column( Float, nullable=False, default=3.0 ) download_validate_files: Mapped[bool] = mapped_column( Boolean, nullable=False, default=True ) # FC-3d scheduling knobs download_schedule_default_seconds: Mapped[int] = mapped_column( Integer, nullable=False, default=28800 ) download_event_retention_days: Mapped[int] = mapped_column( Integer, nullable=False, default=90 ) download_failure_warning_threshold: Mapped[int] = mapped_column( Integer, nullable=False, default=5 ) # FC-3h backup knobs. backup_db_nightly_enabled: Mapped[bool] = mapped_column( Boolean, nullable=False, default=False, ) backup_db_nightly_hour_utc: Mapped[int] = mapped_column( Integer, nullable=False, default=3, ) backup_db_keep_last_n: Mapped[int] = mapped_column( Integer, nullable=False, default=14, ) backup_images_keep_last_n: Mapped[int] = mapped_column( Integer, nullable=False, default=3, )