from typing import Any from ..connection import connect from .ensure_global_vars_schema import PLAYER_SHARED, ensure_global_vars_schema from .resolve_player_key import resolve_player_key def get_global_variable(slug: str, name: str, player_id: str = PLAYER_SHARED) -> dict[str, Any] | None: """Par NOM (pas par id — c'est comme ça qu'une variable est référencée partout ailleurs, condition de visibilité, action "Modifier une variable") et par joueur (voir resolve_player_key.py) : une variable per_player renvoie la ligne propre à `player_id`, ou à défaut (ce joueur n'a encore rien écrit) la ligne modèle PLAYER_SHARED, qui porte la valeur par défaut définie à la création.""" if not name: return None ensure_global_vars_schema(slug) conn = connect(slug) key = resolve_player_key(conn, name, player_id) row = conn.execute("SELECT * FROM _global_variables WHERE name = ? AND player_id = ?", (name, key)).fetchone() if not row and key != PLAYER_SHARED: row = conn.execute( "SELECT * FROM _global_variables WHERE name = ? AND player_id = ?", (name, PLAYER_SHARED) ).fetchone() conn.close() return dict(row) if row else None