import os from ..slugify import slugify from .support_connection import connect_support from .support_dir import support_dir from .support_slug import build_slug def create_support(name: str, owner_folder: str) -> str: """Crée le dossier du support (projects//_supports/ /) et sa base support.db dédiée — mirroir de db/games/create_game.py pour la mécanique de dossier/unicité de nom, mais un schéma entièrement différent (voir document_engine/ : un seul document par support, pas d'écrans/objets de scène). owner_folder n'est jamais optionnel ici (contrairement à create_game) : un support n'existe pas sans compte propriétaire.""" project_part = slugify(name) base = project_part n = 2 while os.path.isdir(support_dir(build_slug(owner_folder, base))): base = f"{project_part}-{n}" n += 1 project_part = base slug = build_slug(owner_folder, project_part) os.makedirs(support_dir(slug), exist_ok=True) conn = connect_support(slug) conn.executescript( """ CREATE TABLE _meta (key TEXT PRIMARY KEY, value TEXT); CREATE TABLE _document_elements ( id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER REFERENCES _document_elements(id) ON DELETE CASCADE, kind TEXT NOT NULL, order_index INTEGER NOT NULL DEFAULT 0, attributes TEXT NOT NULL DEFAULT '{}', created_at TEXT DEFAULT CURRENT_TIMESTAMP ); """ ) conn.execute("INSERT INTO _meta (key, value) VALUES ('name', ?)", (name,)) conn.commit() conn.close() return slug