feat: Fusion bloc 1 — barre d'apps commune (ACC-1.1, #17) et références croisées external_ref (ACC-1.3, #18)
This commit is contained in:
@@ -2025,3 +2025,37 @@ def _migration_template_runs(conn: sqlite3.Connection) -> None:
|
||||
"CREATE INDEX IF NOT EXISTS idx_template_runs_tpl "
|
||||
"ON template_runs(template_id, created_at)"
|
||||
)
|
||||
|
||||
|
||||
@register(50, "fusion: références croisées `external_refs` (ACC-1.3)")
|
||||
def _migration_external_refs(conn: sqlite3.Connection) -> None:
|
||||
"""Migration 50 — table des références croisées entre objets.
|
||||
|
||||
Modèle figé par dracodev-commons (contrats/external_ref.schema.json,
|
||||
v0.1.0) : la référence vit chez le propriétaire de l'objet source
|
||||
(page ou projet/collection Flowdeck) ; une seule source de vérité
|
||||
par objet, des liens — jamais des copies du contenu cible.
|
||||
"""
|
||||
conn.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS external_refs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER,
|
||||
owner_type TEXT NOT NULL,
|
||||
owner_id INTEGER NOT NULL,
|
||||
target_app TEXT NOT NULL,
|
||||
target_type TEXT NOT NULL,
|
||||
target_id TEXT NOT NULL,
|
||||
target_url TEXT NOT NULL,
|
||||
label TEXT NOT NULL DEFAULT '',
|
||||
domain TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'ok',
|
||||
created_by TEXT NOT NULL DEFAULT 'user',
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
)
|
||||
"""
|
||||
)
|
||||
conn.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_external_refs_owner "
|
||||
"ON external_refs(owner_type, owner_id)"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user