package operator

import "github.com/tidbcloud/AgentTeam/desktop/internal/profile"

type fileServerOperator struct{}

func (f *fileServerOperator) Get(id string) (profile.AgentTeamServer, bool, error) {
	server, ok := profile.Default().Servers().Get(id)
	return server, ok, nil
}

func (f *fileServerOperator) All() ([]profile.AgentTeamServer, error) {
	return profile.Default().Servers().All(), nil
}

func (f *fileServerOperator) Add(server *profile.AgentTeamServer) (profile.AgentTeamServer, error) {
	if err := profile.Default().Servers().Add(server); err != nil {
		return profile.AgentTeamServer{}, err
	}
	return *server, nil
}

func (f *fileServerOperator) Update(server profile.AgentTeamServer) (profile.AgentTeamServer, error) {
	if err := profile.Default().Servers().ReplaceServer(server); err != nil {
		return profile.AgentTeamServer{}, err
	}
	result, _ := profile.Default().Servers().Get(server.ID)
	return result, nil
}

func (f *fileServerOperator) Delete(id string) error {
	return profile.Default().Servers().Delete(id)
}

func (f *fileServerOperator) SetEnabled(id string, enabled bool) error {
	return profile.Default().Servers().SetEnabled(id, enabled)
}
