Spaces:
Sleeping
Sleeping
| """ | |
| Database models for HF Uploader Dashboard | |
| """ | |
| from datetime import datetime | |
| from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, Enum | |
| from sqlalchemy.ext.declarative import declarative_base | |
| import enum | |
| Base = declarative_base() | |
| class HFConfig(Base): | |
| """Configuration for Hugging Face API and datasets""" | |
| __tablename__ = "hf_config" | |
| id = Column(Integer, primary_key=True, index=True) | |
| hf_token = Column(Text, nullable=True) | |
| source_all_repo = Column(String(255), default="samfred2/ALL", nullable=False) | |
| source_ato_repo = Column(String(255), default="samfred2/ATO", nullable=False) | |
| target_repo = Column(String(255), default="samfred2/ALL2", nullable=False) | |
| upload_batch_size = Column(Integer, default=10, nullable=False) | |
| max_uploads_per_hour = Column(Integer, default=128, nullable=False) | |
| created_at = Column(DateTime, default=datetime.utcnow, nullable=False) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False) | |
| class UploadStatusEnum(str, enum.Enum): | |
| """Upload status enumeration""" | |
| PENDING = "pending" | |
| UPLOADING = "uploading" | |
| COMPLETED = "completed" | |
| FAILED = "failed" | |
| class UploadQueue(Base): | |
| """Upload queue tracking""" | |
| __tablename__ = "upload_queue" | |
| id = Column(Integer, primary_key=True, index=True) | |
| file_name = Column(String(255), nullable=False) | |
| file_path = Column(Text, nullable=False) | |
| file_size = Column(Integer, nullable=False) | |
| status = Column(Enum(UploadStatusEnum), default=UploadStatusEnum.PENDING, nullable=False) | |
| uploaded_at = Column(DateTime, nullable=True) | |
| failure_reason = Column(Text, nullable=True) | |
| retry_count = Column(Integer, default=0, nullable=False) | |
| max_retries = Column(Integer, default=3, nullable=False) | |
| created_at = Column(DateTime, default=datetime.utcnow, nullable=False) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False) | |
| class RateLimitLog(Base): | |
| """Rate limit tracking per hour""" | |
| __tablename__ = "rate_limit_log" | |
| id = Column(Integer, primary_key=True, index=True) | |
| upload_count = Column(Integer, default=0, nullable=False) | |
| hour_start = Column(DateTime, nullable=False) | |
| hour_end = Column(DateTime, nullable=False) | |
| limit_hit = Column(Boolean, default=False, nullable=False) | |
| resume_time = Column(DateTime, nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow, nullable=False) | |
| class UploadErrorLog(Base): | |
| """Error logging for uploads""" | |
| __tablename__ = "upload_error_log" | |
| id = Column(Integer, primary_key=True, index=True) | |
| file_name = Column(String(255), nullable=False) | |
| error_code = Column(String(50), nullable=True) | |
| error_message = Column(Text, nullable=True) | |
| status_code = Column(Integer, nullable=True) | |
| retryable = Column(Boolean, default=True, nullable=False) | |
| created_at = Column(DateTime, default=datetime.utcnow, nullable=False) | |
| class ProcessingStatusEnum(str, enum.Enum): | |
| """Processing status enumeration""" | |
| IDLE = "idle" | |
| DOWNLOADING = "downloading" | |
| MATCHING = "matching" | |
| INTEGRATING = "integrating" | |
| COMPLETED = "completed" | |
| ERROR = "error" | |
| class ProcessingState(Base): | |
| """File processing state tracking""" | |
| __tablename__ = "processing_state" | |
| id = Column(Integer, primary_key=True, index=True) | |
| status = Column(Enum(ProcessingStatusEnum), default=ProcessingStatusEnum.IDLE, nullable=False) | |
| total_files = Column(Integer, default=0, nullable=False) | |
| processed_files = Column(Integer, default=0, nullable=False) | |
| matched_pairs = Column(Integer, default=0, nullable=False) | |
| error_message = Column(Text, nullable=True) | |
| started_at = Column(DateTime, nullable=True) | |
| completed_at = Column(DateTime, nullable=True) | |
| created_at = Column(DateTime, default=datetime.utcnow, nullable=False) | |
| updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False) | |