"""请求上下文:当前用户。"""

from __future__ import annotations

from contextvars import ContextVar
from typing import Any

_current_user: ContextVar[dict[str, Any] | None] = ContextVar("current_user", default=None)
_current_thread_id: ContextVar[str | None] = ContextVar("current_thread_id", default=None)


def set_current_user(user: dict[str, Any] | None) -> None:
    _current_user.set(user)


def get_current_user() -> dict[str, Any] | None:
    return _current_user.get()


def get_user_id() -> str | None:
    user = get_current_user()
    return str(user["id"]) if user and user.get("id") else None


def set_current_thread_id(thread_id: str | None) -> None:
    _current_thread_id.set(thread_id)


def get_current_thread_id() -> str | None:
    tid = _current_thread_id.get()
    return str(tid).strip() if tid else None