from sqlalchemy import Boolean, Column, ForeignKey, String, Text, UniqueConstraint from app.models.base import BaseModel class RemoteMount(BaseModel): __tablename__ = "remote_mounts" __table_args__ = ( UniqueConstraint("user_id", "name", name="uq_remote_mount_user_name"), ) user_id = Column(String(36), ForeignKey("users.id"), nullable=False, index=True) name = Column(String(255), nullable=False) mount_type = Column(String(32), nullable=False, default="webdav") base_url = Column(String(1000), nullable=False) username = Column(String(255), nullable=True) password_encrypted = Column(Text, nullable=True) root_path = Column(String(1000), nullable=False, default="/") is_active = Column(Boolean, nullable=False, default=True) last_sync_at = Column(String(64), nullable=True) class RemoteSyncItem(BaseModel): __tablename__ = "remote_sync_items" mount_id = Column(String(36), ForeignKey("remote_mounts.id"), nullable=False, index=True) remote_path = Column(String(2000), nullable=False) remote_etag = Column(String(512), nullable=True) remote_modified_at = Column(String(128), nullable=True) local_folder_id = Column(String(36), ForeignKey("folders.id"), nullable=True) local_document_id = Column(String(36), ForeignKey("documents.id"), nullable=True) sync_status = Column(String(32), nullable=False, default="synced") last_error = Column(Text, nullable=True) last_synced_at = Column(String(64), nullable=True)