Spaces:
Running
Running
| from sqlalchemy import Column, String, DateTime, JSON, Boolean, Integer | |
| from datetime import datetime | |
| import uuid | |
| from app.database import Base | |
| class B2SyncQueue(Base): | |
| __tablename__ = "b2_sync_queue" | |
| id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) | |
| file_key = Column(String, nullable=False) | |
| file_url = Column(String, nullable=False) | |
| sync_type = Column(String, nullable=False) # "device" o "group" | |
| target_id = Column(String, nullable=False) # userId o groupId | |
| pending_recipients = Column(JSON, nullable=False) # lista de IDs de dispositivos o usuarios | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| is_uploaded = Column(Boolean, default=True) | |
| uploading_by = Column(String, nullable=True, default=None) | |
| uploading_claimed_at = Column(DateTime, nullable=True, default=None) | |
| missing_stems = Column(JSON, nullable=True, default=None) # JSON: {"recipient_id": ["vocals", "drums"]} | |
| class MigrationBackup(Base): | |
| __tablename__ = "migration_backups" | |
| id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) | |
| user_id = Column(Integer, nullable=False, index=True) | |
| created_at = Column(DateTime, default=datetime.utcnow) | |
| expires_at = Column(DateTime, nullable=False) | |
| status = Column(String, default="pending") # "pending", "completed", "restored", "expired" | |
| metadata_json = Column(JSON, nullable=True) # Mapa de metadatos locales | |
| files_info = Column(JSON, nullable=True, default=[]) # Lista de stems respaldados: [{"task_id": "...", "stem_name": "..."}] | |