Files
fn_registry/registry/migrations/010_projects.sql
T
egutierrez 5992d78941 feat: soporte projects y vaults en registry
Añade tablas projects y vaults a registry.db con FTS5, modelos Go,
parser de project.md y vault.yaml, CRUD completo en store, hashing
determinista, validación, y soporte en el indexer para escanear
projects/{name}/ con sus apps, analysis y vaults anidados.
Migration 010 crea las tablas, triggers FTS5, y columna project_id
en apps/analysis. El indexer preserva records remotos (repo_url) al
reindexar, igual que apps/analysis.
2026-04-12 17:29:41 +02:00

63 lines
2.6 KiB
SQL

-- Projects: agrupan apps, analysis y vaults bajo un tema comun.
-- Vaults: almacenes de datos (symlinks o directorios) asociados a proyectos o al registry.
CREATE TABLE IF NOT EXISTS projects (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT NOT NULL DEFAULT '',
tags TEXT NOT NULL DEFAULT '[]',
repo_url TEXT NOT NULL DEFAULT '',
dir_path TEXT NOT NULL DEFAULT '',
documentation TEXT NOT NULL DEFAULT '',
notes TEXT NOT NULL DEFAULT '',
content_hash TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
CREATE VIRTUAL TABLE IF NOT EXISTS projects_fts USING fts5(
id,
name,
description,
tags,
documentation,
notes,
content='projects',
content_rowid='rowid'
);
CREATE TRIGGER IF NOT EXISTS projects_ai AFTER INSERT ON projects BEGIN
INSERT INTO projects_fts(rowid, id, name, description, tags, documentation, notes)
VALUES (new.rowid, new.id, new.name, new.description, new.tags, new.documentation, new.notes);
END;
CREATE TRIGGER IF NOT EXISTS projects_ad AFTER DELETE ON projects BEGIN
INSERT INTO projects_fts(projects_fts, rowid, id, name, description, tags, documentation, notes)
VALUES ('delete', old.rowid, old.id, old.name, old.description, old.tags, old.documentation, old.notes);
END;
CREATE TRIGGER IF NOT EXISTS projects_au AFTER UPDATE ON projects BEGIN
INSERT INTO projects_fts(projects_fts, rowid, id, name, description, tags, documentation, notes)
VALUES ('delete', old.rowid, old.id, old.name, old.description, old.tags, old.documentation, old.notes);
INSERT INTO projects_fts(rowid, id, name, description, tags, documentation, notes)
VALUES (new.rowid, new.id, new.name, new.description, new.tags, new.documentation, new.notes);
END;
-- Vaults: almacenes de datos trackados en el registry.
CREATE TABLE IF NOT EXISTS vaults (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
project_id TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT '',
path TEXT NOT NULL DEFAULT '',
symlink INTEGER NOT NULL DEFAULT 0,
tags TEXT NOT NULL DEFAULT '[]',
content_hash TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);
-- Columna project_id en apps y analysis para vincular a un proyecto.
ALTER TABLE apps ADD COLUMN project_id TEXT NOT NULL DEFAULT '';
ALTER TABLE analysis ADD COLUMN project_id TEXT NOT NULL DEFAULT '';