melodix-api / app /models /sync.py
GitHub Action
Despliegue limpio con app/models restaurado y sin btc_chord.pth
200e714
Raw
History Blame Contribute Delete
1.58 kB
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": "..."}]