from ..connection import connect from .ensure_player_id_column import ensure_player_id_column from .resolve_row_player_key import resolve_row_player_key, PLAYER_SHARED def get_row(slug, definition, row_id, player_id=PLAYER_SHARED): """Filtre aussi par player_id (pas seulement id) : même si `row_id` est déjà un identifiant unique dans toute la table, ce garde-fou empêche un joueur de lire la ligne d'un AUTRE joueur en devinant/altérant un row_id (garantie utile dès qu'un objet per_player est exposé sur la route publique /jouer/, voir routes/public_play/).""" ensure_player_id_column(slug, definition["table_name"]) key = resolve_row_player_key(definition, player_id) conn = connect(slug) row = conn.execute( f"SELECT * FROM {definition['table_name']} WHERE id = ? AND player_id = ?", (row_id, key) ).fetchone() conn.close() return dict(row) if row else None