from fastapi import File, UploadFile, HTTPException, Depends
from fastapi.security import HTTPAuthorizationCredentials
from sqlalchemy.orm import Session
from pathlib import Path
from urllib.parse import urljoin
from fastapi import Request

BASE_URL = "http://127.0.0.1:8000"  

def get_upload_dir(user_id: int) -> Path:
    """Возвращает путь для сохранения файлов пользователя."""
    upload_dir = Path(f"res/user/{user_id}")
    upload_dir.mkdir(parents=True, exist_ok=True)
    return upload_dir

def get_poster_dir(poster_id: int) -> Path:
    """Возвращает путь для сохранения обложек постеров."""
    poster_dir = Path(f"res/poster/{poster_id}")
    poster_dir.mkdir(parents=True, exist_ok=True)
    return poster_dir

def save_file(file: UploadFile, target_dir: Path) -> Path:
    """Сохраняет файл в указанной директории и возвращает путь к файлу."""
    file_path = target_dir / file.filename
    with open(file_path, "wb") as f:
        f.write(file.file.read())
    return file_path

def generate_file_url(request: Request, file_path: Path) -> str:
    """Генерирует URL для доступа к файлу."""
    relative_path = file_path.relative_to(Path("res"))
    return urljoin(str(request.base_url), f"res/{relative_path}")
