You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
from contextvars import ContextVar
|
|
from typing import Optional, Final
|
|
|
|
REQUEST_ID_CTX_KEY: Final[str] = "request_id"
|
|
USER_ID_CTX_KEY: Final[str] = "user_id"
|
|
USERNAME_CTX_KEY: Final[str] = "username"
|
|
ROLE_CTX_KEY: Final[str] = "role"
|
|
|
|
_request_id_ctx_var: ContextVar[Optional[str]] = ContextVar(
|
|
REQUEST_ID_CTX_KEY, default=None)
|
|
_user_id_ctx_var: ContextVar[Optional[str]] = ContextVar(
|
|
USER_ID_CTX_KEY, default=None)
|
|
_username_ctx_var: ContextVar[Optional[str]] = ContextVar(
|
|
USERNAME_CTX_KEY, default=None)
|
|
_role_ctx_var: ContextVar[Optional[str]] = ContextVar(
|
|
ROLE_CTX_KEY, default=None)
|
|
|
|
|
|
def get_request_id() -> Optional[str]:
|
|
return _request_id_ctx_var.get()
|
|
|
|
|
|
def set_request_id(request_id: str):
|
|
return _request_id_ctx_var.set(request_id)
|
|
|
|
|
|
def reset_request_id(token):
|
|
_request_id_ctx_var.reset(token)
|
|
|
|
|
|
def get_user_id() -> Optional[str]:
|
|
return _user_id_ctx_var.get()
|
|
|
|
|
|
def set_user_id(user_id: str):
|
|
return _user_id_ctx_var.set(user_id)
|
|
|
|
|
|
def get_username() -> Optional[str]:
|
|
return _username_ctx_var.get()
|
|
|
|
|
|
def set_username(username: str):
|
|
return _username_ctx_var.set(username)
|
|
|
|
|
|
def get_role() -> Optional[str]:
|
|
return _role_ctx_var.get()
|
|
|
|
|
|
def set_role(role: str):
|
|
return _role_ctx_var.set(role)
|