Samfredoly commited on
Commit
62ddecc
·
verified ·
1 Parent(s): 8f66a5f

Create models.py

Browse files
Files changed (1) hide show
  1. models.py +101 -0
models.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ Database models for HF Uploader Dashboard
3
+ """
4
+ from datetime import datetime
5
+ from sqlalchemy import Column, Integer, String, Text, DateTime, Boolean, Enum
6
+ from sqlalchemy.ext.declarative import declarative_base
7
+ import enum
8
+
9
+ Base = declarative_base()
10
+
11
+
12
+ class HFConfig(Base):
13
+ """Configuration for Hugging Face API and datasets"""
14
+ __tablename__ = "hf_config"
15
+
16
+ id = Column(Integer, primary_key=True, index=True)
17
+ hf_token = Column(Text, nullable=True)
18
+ source_all_repo = Column(String(255), default="samfred2/ALL", nullable=False)
19
+ source_ato_repo = Column(String(255), default="samfred2/ATO", nullable=False)
20
+ target_repo = Column(String(255), default="samfred2/ALL2", nullable=False)
21
+ upload_batch_size = Column(Integer, default=10, nullable=False)
22
+ max_uploads_per_hour = Column(Integer, default=128, nullable=False)
23
+ created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
24
+ updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
25
+
26
+
27
+ class UploadStatusEnum(str, enum.Enum):
28
+ """Upload status enumeration"""
29
+ PENDING = "pending"
30
+ UPLOADING = "uploading"
31
+ COMPLETED = "completed"
32
+ FAILED = "failed"
33
+
34
+
35
+ class UploadQueue(Base):
36
+ """Upload queue tracking"""
37
+ __tablename__ = "upload_queue"
38
+
39
+ id = Column(Integer, primary_key=True, index=True)
40
+ file_name = Column(String(255), nullable=False)
41
+ file_path = Column(Text, nullable=False)
42
+ file_size = Column(Integer, nullable=False)
43
+ status = Column(Enum(UploadStatusEnum), default=UploadStatusEnum.PENDING, nullable=False)
44
+ uploaded_at = Column(DateTime, nullable=True)
45
+ failure_reason = Column(Text, nullable=True)
46
+ retry_count = Column(Integer, default=0, nullable=False)
47
+ max_retries = Column(Integer, default=3, nullable=False)
48
+ created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
49
+ updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)
50
+
51
+
52
+ class RateLimitLog(Base):
53
+ """Rate limit tracking per hour"""
54
+ __tablename__ = "rate_limit_log"
55
+
56
+ id = Column(Integer, primary_key=True, index=True)
57
+ upload_count = Column(Integer, default=0, nullable=False)
58
+ hour_start = Column(DateTime, nullable=False)
59
+ hour_end = Column(DateTime, nullable=False)
60
+ limit_hit = Column(Boolean, default=False, nullable=False)
61
+ resume_time = Column(DateTime, nullable=True)
62
+ created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
63
+
64
+
65
+ class UploadErrorLog(Base):
66
+ """Error logging for uploads"""
67
+ __tablename__ = "upload_error_log"
68
+
69
+ id = Column(Integer, primary_key=True, index=True)
70
+ file_name = Column(String(255), nullable=False)
71
+ error_code = Column(String(50), nullable=True)
72
+ error_message = Column(Text, nullable=True)
73
+ status_code = Column(Integer, nullable=True)
74
+ retryable = Column(Boolean, default=True, nullable=False)
75
+ created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
76
+
77
+
78
+ class ProcessingStatusEnum(str, enum.Enum):
79
+ """Processing status enumeration"""
80
+ IDLE = "idle"
81
+ DOWNLOADING = "downloading"
82
+ MATCHING = "matching"
83
+ INTEGRATING = "integrating"
84
+ COMPLETED = "completed"
85
+ ERROR = "error"
86
+
87
+
88
+ class ProcessingState(Base):
89
+ """File processing state tracking"""
90
+ __tablename__ = "processing_state"
91
+
92
+ id = Column(Integer, primary_key=True, index=True)
93
+ status = Column(Enum(ProcessingStatusEnum), default=ProcessingStatusEnum.IDLE, nullable=False)
94
+ total_files = Column(Integer, default=0, nullable=False)
95
+ processed_files = Column(Integer, default=0, nullable=False)
96
+ matched_pairs = Column(Integer, default=0, nullable=False)
97
+ error_message = Column(Text, nullable=True)
98
+ started_at = Column(DateTime, nullable=True)
99
+ completed_at = Column(DateTime, nullable=True)
100
+ created_at = Column(DateTime, default=datetime.utcnow, nullable=False)
101
+ updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, nullable=False)