relations: bulk lifecycle — relate-many! + unrelate-node! cascade cleanup + 12 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 54s

unrelate-node! retracts every local edge touching a node (all kinds, both
directions); leaves federated peer links alone. 147/147.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-07 13:27:12 +00:00
parent b66395886b
commit c0d02c229c
6 changed files with 202 additions and 6 deletions

View File

@@ -100,3 +100,42 @@
(define
relations/connected?
(fn (a b kind) (relations-connected? (relations-ensure-db!) a b kind)))
(define
relations-relate-many!
(fn
(db triples)
(do
(for-each
(fn
(t)
(dl-assert!
db
(relations-rel (first t) (nth t 1) (nth t 2))))
triples)
db)))
(define
relations-unrelate-node!
(fn
(db node)
(do
(for-each
(fn
(s)
(dl-retract! db (relations-rel node (get s :Dst) (get s :Kind))))
(dl-query db (list (quote rel) node (quote Dst) (quote Kind))))
(for-each
(fn
(s)
(dl-retract! db (relations-rel (get s :Src) node (get s :Kind))))
(dl-query db (list (quote rel) (quote Src) node (quote Kind))))
db)))
(define
relations/relate-many!
(fn (triples) (relations-relate-many! (relations-ensure-db!) triples)))
(define
relations/unrelate-node!
(fn (node) (relations-unrelate-node! (relations-ensure-db!) node)))