from .connection import connect def ensure_user_assets_schema(): """"Mes assets" (voir user_assets_dir.py) : une image appartient à un COMPTE, jamais à un projet — table dans la base de comptes partagée (auth/connection.py), pas dans le game.db d'un jeu (db/connection.py), pour rester utilisable d'un projet à l'autre du même compte.""" conn = connect() conn.executescript( """ CREATE TABLE IF NOT EXISTS _user_assets ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, filename TEXT NOT NULL, original_name TEXT, source TEXT NOT NULL DEFAULT 'upload' CHECK (source IN ('upload', 'ia')), created_at TEXT DEFAULT CURRENT_TIMESTAMP ); """ ) asset_cols = {r["name"] for r in conn.execute("PRAGMA table_info(_user_assets)").fetchall()} if "scene_kind" not in asset_cols: # Demande explicite : "un bouton d'import séparé pour les images # de fond et les objets" — une image "Mes assets" est posée sur # la scène TOUJOURS en kind="decor" jusqu'ici (voir # screens/scenes/add_scene_object.py), impossible à utiliser comme # "fond" (position/empilement différents, voir add_scene_object.py). # NULL pour un son/une vidéo (n'a pas de sens) OU une image # importée AVANT ce réglage (retombe sur "decor", comportement # inchangé — voir routes/scenes/scene_edit_view.py). conn.execute("ALTER TABLE _user_assets ADD COLUMN scene_kind TEXT") conn.commit() conn.close()