| # src/app/config.py | |
| from pathlib import Path | |
| def get_project_root() -> Path: | |
| """ | |
| Returns the project root directory. | |
| Assumes this file is located at: | |
| <project_root>/src/app/config.py | |
| so we go up two parents. | |
| """ | |
| return Path(__file__).resolve().parents[2] | |
| def get_data_dir() -> Path: | |
| """ | |
| Root data directory for all persisted user content. | |
| """ | |
| root = get_project_root() | |
| data_dir = root / "data" | |
| data_dir.mkdir(parents=True, exist_ok=True) | |
| return data_dir | |
| def get_user_dir(username: str) -> Path: | |
| """ | |
| Returns the directory for a given user and ensures that | |
| its subfolders exist. | |
| """ | |
| data_dir = get_data_dir() | |
| user_dir = data_dir / "users" / username | |
| user_dir.mkdir(parents=True, exist_ok=True) | |
| # create standard subfolders | |
| (user_dir / "decks").mkdir(parents=True, exist_ok=True) | |
| (user_dir / "viewers").mkdir(parents=True, exist_ok=True) | |
| (user_dir / "chats").mkdir(parents=True, exist_ok=True) | |
| (user_dir / "quizzes").mkdir(parents=True, exist_ok=True) | |
| return user_dir | |