Files
fn_registry/functions/core/detect_cycle.md
T
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .claude/CLAUDE.md
- .claude/commands/subagentes.md
- .claude/rules/INDEX.md
- .mcp.json
- bash/functions/cybersecurity/analyze_dns.md
- bash/functions/cybersecurity/audit_http_headers.md
- bash/functions/cybersecurity/audit_ssh_config.md
- bash/functions/cybersecurity/check_firewall.md
- bash/functions/cybersecurity/detect_suspicious_users.md
- bash/functions/cybersecurity/encrypt_file.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:28:20 +02:00

1.8 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, 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 params output 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
pendiente-usar
false error_go_core
database/sql
name desc
conn conexión abierta a base de datos SQLite
name desc
table nombre de la tabla que almacena el grafo
name desc
fromCol nombre de la columna que contiene el nodo origen de cada arista
name desc
toCol nombre de la columna que contiene el nodo destino de cada arista
name desc
filterCol nombre de columna opcional para filtrar aristas semánticas; si es vacío, se consideran todas las aristas
name desc
fromNode nodo origen de la nueva arista a validar
name desc
toNode nodo destino de la nueva arista a validar
error si agregaría un ciclo; nil si no hay ciclo 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.