from sqlalchemy import Boolean, ForeignKey, String, Text from sqlalchemy.orm import Mapped, mapped_column from app.models.base import Base, TimestampMixin class ApiKeyUpscaleConfig(Base, TimestampMixin): """API Key 级别的超分配置表。 每个 API Key 可独立配置超分规则,不依赖现有的 video_upscale 配置。 """ __tablename__ = "api_key_upscale_configs" id: Mapped[str] = mapped_column(String(32), primary_key=True) api_key_id: Mapped[str] = mapped_column( String(32), ForeignKey("api_keys.id", ondelete="CASCADE"), unique=True, nullable=False ) enabled: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default="false") delete_source_after_success: Mapped[bool] = mapped_column( Boolean, nullable=False, default=True, server_default="true" ) rules_json: Mapped[str] = mapped_column( Text, nullable=False, server_default="[]", comment='JSON数组: [{"target_resolution":"1080p","provider_generation_resolution":"720p","processor_key":"volc_standard_v1","enabled":true}]' )