wings/server/manager.go
2021-01-10 02:37:02 +01:00

47 lines
879 B
Go

package server
import (
"github.com/pterodactyl/wings/panelapi"
)
type Manager interface {
// Initialize fetches all servers assigned to this node from the API.
Initialize(serversPerPage int) error
GetAll() []*Server
Get(uuid string) *Server
Add(s *Server)
Remove(s *Server)
}
type manager struct {
servers Collection
panelClient panelapi.Client
}
// NewManager creates a new server manager.
func NewManager(panelClient panelapi.Client) Manager {
return &manager{panelClient: panelClient}
}
func (m *manager) GetAll() []*Server {
return m.servers.items
}
func (m *manager) Get(uuid string) *Server {
return m.servers.Find(func(s *Server) bool {
return s.Id() == uuid
})
}
func (m *manager) Add(s *Server) {
s.manager = m
m.servers.Add(s)
}
func (m *manager) Remove(s *Server) {
m.servers.Remove(func(sf *Server) bool {
return sf.Id() == s.Id()
})
}