Files

60 lines
1.1 KiB
Go
Raw Permalink Normal View History

2026-07-27 14:41:04 +02:00
package models
import (
"errors"
"fmt"
"time"
)
func GetAllRemoteNodes() []RemoteNode {
mu.RLock()
defer mu.RUnlock()
result := make([]RemoteNode, len(cfg.Nodes))
copy(result, cfg.Nodes)
return result
}
func GetRemoteNode(id string) (RemoteNode, error) {
mu.RLock()
defer mu.RUnlock()
for _, n := range cfg.Nodes {
if n.ID == id {
return n, nil
}
}
return RemoteNode{}, errors.New("node not found")
}
func AddRemoteNode(n RemoteNode) (RemoteNode, error) {
mu.Lock()
defer mu.Unlock()
n.ID = fmt.Sprintf("node_%d", time.Now().UnixNano())
cfg.Nodes = append(cfg.Nodes, n)
return n, persist()
}
func UpdateRemoteNode(id string, n RemoteNode) (RemoteNode, error) {
mu.Lock()
defer mu.Unlock()
for i, node := range cfg.Nodes {
if node.ID == id {
n.ID = id
cfg.Nodes[i] = n
return n, persist()
}
}
return RemoteNode{}, errors.New("node not found")
}
func DeleteRemoteNode(id string) error {
mu.Lock()
defer mu.Unlock()
for i, n := range cfg.Nodes {
if n.ID == id {
cfg.Nodes = append(cfg.Nodes[:i], cfg.Nodes[i+1:]...)
return persist()
}
}
return errors.New("node not found")
}