"""Connexion à la base SQLite GLOBALE des comptes utilisateurs — SÉPARÉE de db/ (une base par JEU, voir db/connection.py) : les comptes ne "appartiennent" à aucun jeu en particulier, ils en POSSÈDENT un (voir auth/create_user.py, project_slug). Le chemin se résout à CHAQUE appel (pas une constante figée à l'import) : tests/conftest.py positionne FORGE_USERS_DB_PATH vers un fichier temporaire avant de faire tourner la suite, pour ne jamais toucher à la vraie base de comptes (data/users.db) ni dépendre d'un état "premier compte = admin" déjà consommé par un run précédent.""" import os import sqlite3 _BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) DEFAULT_USERS_DB_PATH = os.path.join(_BASE_DIR, "data", "users.db") def users_db_path() -> str: return os.environ.get("FORGE_USERS_DB_PATH") or DEFAULT_USERS_DB_PATH def connect() -> sqlite3.Connection: path = users_db_path() os.makedirs(os.path.dirname(path), exist_ok=True) conn = sqlite3.connect(path, timeout=10) conn.row_factory = sqlite3.Row conn.execute("PRAGMA busy_timeout = 8000") return conn