Files
fn_registry/functions/core/detect_cycle.md
T
egutierrez b5a6711c64 feat: funciones core — detect_cycle, generate_id, rewrite_rule
Tres funciones puras para el dominio core: detección de ciclos en grafos
dirigidos (DFS), generación de IDs determinísticos, y reescritura de
reglas con pattern matching.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 14:24:00 +02:00

1.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
detect_cycle function go core 1.0.0 impure func DetectCycle(conn *sql.DB, table, fromCol, toCol, filterCol, fromNode, toNode string) error Detecta ciclos en un grafo dirigido almacenado en SQLite usando BFS antes de insertar una arista.
graph
cycle
bfs
sqlite
validation
false error_go_core
database/sql
false
functions/core/detect_cycle.go

Ejemplo

// Verificar si agregar A -> B crearia un ciclo en la tabla "relations"
err := DetectCycle(db, "relations", "from_entity", "to_entity", "via", "A", "B")
if err != nil {
    // ciclo detectado
}

// Sin filtro — considerar todas las aristas
err = DetectCycle(db, "edges", "source", "target", "", "X", "Y")

Notas

Usa BFS desde toNode siguiendo aristas existentes. Si alcanza fromNode, la nueva arista crearia un ciclo. El parametro filterCol permite ignorar aristas semanticas (no causales) — pasar "" para considerar todas.