mirror of
https://github.com/netbirdio/management-refactor.git
synced 2026-05-22 17:12:59 -07:00
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package peers
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/gorilla/mux"
|
|
|
|
"management/internal/modules/peers/types"
|
|
"management/internal/shared/activity"
|
|
"management/internal/shared/db"
|
|
"management/internal/shared/permissions"
|
|
"management/pkg/logging"
|
|
)
|
|
|
|
var log = logging.LoggerForThisPackage()
|
|
|
|
type Manager struct {
|
|
repo Repository
|
|
eventManager *activity.Manager
|
|
}
|
|
|
|
func NewManager(store *db.Store, router *mux.Router, permissionsManager permissions.Manager) *Manager {
|
|
repo := newRepository(store)
|
|
m := &Manager{repo: repo}
|
|
api := newHandler(m, permissionsManager)
|
|
api.RegisterEndpoints(router)
|
|
return m
|
|
}
|
|
|
|
func (m *Manager) GetPeer(ctx context.Context, tx db.Transaction, strength db.LockingStrength, accountID, peerID string) (*types.Peer, error) {
|
|
return m.repo.GetPeerByID(tx, strength, accountID, peerID)
|
|
}
|
|
|
|
func (m *Manager) GetPeers(ctx context.Context, tx db.Transaction, strength db.LockingStrength, accountID string) ([]*types.Peer, error) {
|
|
return m.repo.GetPeers(tx, strength, accountID)
|
|
}
|
|
|
|
func (m *Manager) GetFilteredPeers(ctx context.Context, tx db.Transaction, strength db.LockingStrength, accountID, nameFilter, ipFilter string) ([]*types.Peer, error) {
|
|
return m.repo.GetFilteredPeers(tx, strength, accountID, nameFilter, ipFilter)
|
|
}
|
|
|
|
func (m *Manager) UpdatePeer(ctx context.Context, tx db.Transaction, peer *types.Peer) error {
|
|
validateInput
|
|
validatePermissions
|
|
err := m.repo.RunInTx(func(tx db.Transaction) error {
|
|
othermanager.UpdatePeers
|
|
ourmanager.UpdateGroup
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err := sendPeerUpdateEvent(tx, peer) // -> goes to peerUpdtaeChannel
|
|
if err != nil {
|
|
log.Errorf("Failed to send peer update event: %v", err)
|
|
}
|
|
|
|
return m.repo.UpdatePeer(tx, peer)
|
|
}
|