"""
Konfiguracja serwisu plików Togethere.
Wartości ładowane z pliku .env (lub zmiennych środowiskowych).
"""
from __future__ import annotations

import os
from pathlib import Path
from typing import List

try:
    from pydantic_settings import BaseSettings
    from pydantic import field_validator
except ImportError:  # starsze wersje pydantic
    from pydantic import BaseSettings, validator as field_validator  # type: ignore


class Settings(BaseSettings):
    # Klucz API współdzielony z PHP – zmień w .env przed deplojem
    api_key: str = "CHANGE_ME_BEFORE_DEPLOY"

    # Katalog bazowy dla plików (poza public_html)
    files_base_dir: Path = Path("/var/www/togethere.cloud/files")

    # Maks. rozmiar pliku w MB
    max_file_size_mb: int = 20

    # Port, na którym nasłuchuje serwis (tylko localhost)
    host: str = "127.0.0.1"
    port: int = 8001

    # Dozwolone typy MIME
    allowed_mime_types: List[str] = [
        "image/jpeg",
        "image/png",
        "image/gif",
        "image/webp",
        "application/pdf",
        "text/plain",
        "text/markdown",
        "text/x-markdown",
        "application/zip",
        "video/mp4",
        "audio/mpeg",
        "audio/wav",
        "application/msword",
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "application/vnd.ms-excel",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    ]

    class Config:
        env_file = os.path.join(os.path.dirname(__file__), ".env")
        env_file_encoding = "utf-8"


settings = Settings()
