feat: reduce default node ID length to 3 and auto-grow when exhausted
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -265,8 +265,8 @@ func (s *txStore) NodeExists(id string) (bool, error) { return nodeExists(s.db,
|
|||||||
|
|
||||||
// --- ID generation ---
|
// --- ID generation ---
|
||||||
|
|
||||||
func genID() string {
|
func genID(length int) string {
|
||||||
b := make([]byte, 5)
|
b := make([]byte, length)
|
||||||
for i := range b {
|
for i := range b {
|
||||||
b[i] = "abcdefghijklmnopqrstuvwxyz"[rand.Intn(26)]
|
b[i] = "abcdefghijklmnopqrstuvwxyz"[rand.Intn(26)]
|
||||||
}
|
}
|
||||||
@@ -274,8 +274,14 @@ func genID() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func generateID(q querier) (string, error) {
|
func generateID(q querier) (string, error) {
|
||||||
for {
|
for length := 3; ; length++ {
|
||||||
id := genID()
|
// Try up to 10*capacity attempts at this length before growing.
|
||||||
|
capacity := 1
|
||||||
|
for i := 0; i < length; i++ {
|
||||||
|
capacity *= 26
|
||||||
|
}
|
||||||
|
for attempt := 0; attempt < 10*capacity; attempt++ {
|
||||||
|
id := genID(length)
|
||||||
exists, err := nodeExists(q, id)
|
exists, err := nodeExists(q, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@@ -284,6 +290,7 @@ func generateID(q querier) (string, error) {
|
|||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *GraphStoreSqlite) GenerateID() (string, error) { return generateID(s.db) }
|
func (s *GraphStoreSqlite) GenerateID() (string, error) { return generateID(s.db) }
|
||||||
|
|||||||
Reference in New Issue
Block a user