From 5969a2591cedb671f0bf5ed095d5f79960f77a50 Mon Sep 17 00:00:00 2001 From: Elias Kohout Date: Thu, 2 Apr 2026 01:21:00 +0200 Subject: [PATCH] feat: reduce default node ID length to 3 and auto-grow when exhausted Co-Authored-By: Claude Sonnet 4.6 --- src/store/graph_store_sqlite.go | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/store/graph_store_sqlite.go b/src/store/graph_store_sqlite.go index 36c0bd7..b3c43e1 100644 --- a/src/store/graph_store_sqlite.go +++ b/src/store/graph_store_sqlite.go @@ -265,8 +265,8 @@ func (s *txStore) NodeExists(id string) (bool, error) { return nodeExists(s.db, // --- ID generation --- -func genID() string { - b := make([]byte, 5) +func genID(length int) string { + b := make([]byte, length) for i := range b { b[i] = "abcdefghijklmnopqrstuvwxyz"[rand.Intn(26)] } @@ -274,14 +274,21 @@ func genID() string { } func generateID(q querier) (string, error) { - for { - id := genID() - exists, err := nodeExists(q, id) - if err != nil { - return "", err + for length := 3; ; length++ { + // Try up to 10*capacity attempts at this length before growing. + capacity := 1 + for i := 0; i < length; i++ { + capacity *= 26 } - if !exists { - return id, nil + for attempt := 0; attempt < 10*capacity; attempt++ { + id := genID(length) + exists, err := nodeExists(q, id) + if err != nil { + return "", err + } + if !exists { + return id, nil + } } } }