35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
|
|
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)
|