Files
DataClaw/backend/app/core/data_root.py
T

40 lines
1.1 KiB
Python
Raw Normal View History

2026-03-27 15:59:23 +08:00
import os
from pathlib import Path
BACKEND_ROOT = Path(__file__).resolve().parents[2]
REPO_ROOT = BACKEND_ROOT.parent
DEFAULT_DATA_ROOT = REPO_ROOT / "data"
LEGACY_DATA_ROOT = BACKEND_ROOT / "data"
def get_data_root() -> Path:
configured = (os.getenv("DATA_ROOT") or "").strip()
if configured:
return Path(configured).expanduser().resolve()
if DEFAULT_DATA_ROOT.exists():
return DEFAULT_DATA_ROOT
if LEGACY_DATA_ROOT.exists():
print(f"[DATA_ROOT] legacy path detected: {LEGACY_DATA_ROOT}. Please migrate to {DEFAULT_DATA_ROOT}.")
return LEGACY_DATA_ROOT
return DEFAULT_DATA_ROOT
def get_workspace_root() -> Path:
return get_data_root() / "workspace"
def get_uploads_root() -> Path:
return get_data_root() / "uploads"
def get_reports_root() -> Path:
return get_data_root() / "data"
def ensure_data_layout() -> None:
get_data_root().mkdir(parents=True, exist_ok=True)
get_workspace_root().mkdir(parents=True, exist_ok=True)
get_uploads_root().mkdir(parents=True, exist_ok=True)
get_reports_root().mkdir(parents=True, exist_ok=True)