Datavision / backend /utils /paths.py
DataVision CI/CD Bot
release: clean production build for HuggingFace Space
09801ca
Raw
History Blame Contribute Delete
1.28 kB
"""
Shared path utilities for multi-tenant storage
Consolidates duplicate get_user_paths() from endpoints
"""
from pathlib import Path
import os
# Import Settings to get the canonical storage path
from config.settings import Settings
# Detect if running in Docker (Hugging Face Spaces)
if os.path.exists("/app"):
STORAGE_BASE = Path("/app/storage/users")
else:
# Use Settings BASE_DIR directly for correct path resolution
STORAGE_BASE = Settings.BASE_DIR / "storage" / "users"
STORAGE_BASE.mkdir(parents=True, exist_ok=True)
print(f"Storage Base Path: {STORAGE_BASE.resolve()}")
def get_user_paths(user_id: str) -> dict:
"""
Get all storage paths for a specific user.
Creates directories if they don't exist.
Args:
user_id: Unique user identifier
Returns:
Dictionary of path objects for user's storage locations
"""
user_base = STORAGE_BASE / user_id
paths = {
"base": user_base,
"files": user_base / "files",
"models": user_base / "models",
"faiss": user_base / "faiss",
"graph": user_base / "graph",
"memory": user_base / "memory"
}
for path in paths.values():
path.mkdir(parents=True, exist_ok=True)
return paths