hub: optimize System.HasUser check

This commit is contained in:
henrygd
2026-04-10 18:32:37 -04:00
parent b013f06956
commit e3ade3aeb8
2 changed files with 19 additions and 7 deletions

View File

@@ -8,7 +8,6 @@ import (
"hash/fnv"
"math/rand"
"net"
"slices"
"strings"
"sync/atomic"
"time"
@@ -363,12 +362,16 @@ func (sys *System) HasUser(app core.App, user *core.Record) bool {
if v, _ := utils.GetEnv("SHARE_ALL_SYSTEMS"); v == "true" {
return true
}
record, err := sys.getRecord(app)
if err != nil {
var recordData = struct {
Users string
}{}
err := app.DB().NewQuery("SELECT users FROM systems WHERE id={:id}").
Bind(dbx.Params{"id": sys.Id}).
One(&recordData)
if err != nil || recordData.Users == "" {
return false
}
users := record.GetStringSlice("users")
return slices.Contains(users, user.Id)
return strings.Contains(recordData.Users, user.Id)
}
// setDown marks a system as down in the database.

View File

@@ -436,7 +436,7 @@ func TestHasUser(t *testing.T) {
user2, err := tests.CreateUser(hub, "user2@test.com", "password123")
require.NoError(t, err)
record, err := tests.CreateRecord(hub, "systems", map[string]any{
systemRecord, err := tests.CreateRecord(hub, "systems", map[string]any{
"name": "has-user-test",
"host": "127.0.0.1",
"port": "33914",
@@ -444,7 +444,7 @@ func TestHasUser(t *testing.T) {
})
require.NoError(t, err)
sys, err := sm.GetSystemFromStore(record.Id)
sys, err := sm.GetSystemFromStore(systemRecord.Id)
require.NoError(t, err)
t.Run("user in list returns true", func(t *testing.T) {
@@ -468,4 +468,13 @@ func TestHasUser(t *testing.T) {
t.Setenv("BESZEL_HUB_SHARE_ALL_SYSTEMS", "true")
assert.True(t, sys.HasUser(hub, user2))
})
t.Run("additional user works", func(t *testing.T) {
assert.False(t, sys.HasUser(hub, user2))
systemRecord.Set("users", []string{user1.Id, user2.Id})
err = hub.Save(systemRecord)
require.NoError(t, err)
assert.True(t, sys.HasUser(hub, user1))
assert.True(t, sys.HasUser(hub, user2))
})
}