88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
package service
|
|
|
|
import (
|
|
"d7y.io/dragonfly/v2/manager/model"
|
|
"d7y.io/dragonfly/v2/manager/types"
|
|
)
|
|
|
|
func (s *rest) CreateScheduler(json types.CreateSchedulerRequest) (*model.Scheduler, error) {
|
|
scheduler := model.Scheduler{
|
|
HostName: json.HostName,
|
|
VIPs: json.VIPs,
|
|
IDC: json.IDC,
|
|
Location: json.Location,
|
|
NetConfig: json.NetConfig,
|
|
IP: json.IP,
|
|
Port: json.Port,
|
|
}
|
|
|
|
if err := s.db.Create(&scheduler).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &scheduler, nil
|
|
}
|
|
|
|
func (s *rest) DestroyScheduler(id uint) error {
|
|
if err := s.db.Unscoped().Delete(&model.Scheduler{}, id).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *rest) UpdateScheduler(id uint, json types.UpdateSchedulerRequest) (*model.Scheduler, error) {
|
|
scheduler := model.Scheduler{}
|
|
if err := s.db.First(&scheduler, id).Updates(model.Scheduler{
|
|
VIPs: json.VIPs,
|
|
IDC: json.IDC,
|
|
Location: json.Location,
|
|
NetConfig: json.NetConfig,
|
|
IP: json.IP,
|
|
Port: json.Port,
|
|
}).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &scheduler, nil
|
|
}
|
|
|
|
func (s *rest) GetScheduler(id uint) (*model.Scheduler, error) {
|
|
scheduler := model.Scheduler{}
|
|
if err := s.db.First(&scheduler, id).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &scheduler, nil
|
|
}
|
|
|
|
func (s *rest) GetSchedulers(q types.GetSchedulersQuery) (*[]model.Scheduler, error) {
|
|
schedulers := []model.Scheduler{}
|
|
if err := s.db.Scopes(model.Paginate(q.Page, q.PerPage)).Where(&model.Scheduler{
|
|
HostName: q.HostName,
|
|
IDC: q.IDC,
|
|
Location: q.Location,
|
|
IP: q.IP,
|
|
Status: q.Status,
|
|
}).Find(&schedulers).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &schedulers, nil
|
|
}
|
|
|
|
func (s *rest) SchedulerTotalCount(q types.GetSchedulersQuery) (int64, error) {
|
|
var count int64
|
|
if err := s.db.Model(&model.Scheduler{}).Where(&model.Scheduler{
|
|
HostName: q.HostName,
|
|
IDC: q.IDC,
|
|
Location: q.Location,
|
|
IP: q.IP,
|
|
Status: q.Status,
|
|
}).Count(&count).Error; err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return count, nil
|
|
}
|