package database import ( "github.com/zeromicro/go-zero/core/logx" clientCore "gitlink.org.cn/JointCloud/pcm-coordinator/client" "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/constants" "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models" "gorm.io/gorm" "strconv" "time" ) type HpcStorage struct { DbEngin *gorm.DB } func (s *HpcStorage) GetParticipants() (*types.ClusterListResp, error) { var resp types.ClusterListResp tx := s.DbEngin.Raw("select * from t_cluster where `deleted_at` IS NULL ORDER BY create_time Desc").Scan(&resp.List) if tx.Error != nil { logx.Errorf(tx.Error.Error()) return nil, tx.Error } return &resp, nil } func (s *HpcStorage) GetClustersByAdapterId(id string) (*types.ClusterListResp, error) { var resp types.ClusterListResp tx := s.DbEngin.Raw("select * from t_cluster where `deleted_at` IS NULL and `adapter_id` = ? ORDER BY create_time Desc", id).Scan(&resp.List) if tx.Error != nil { logx.Errorf(tx.Error.Error()) return nil, tx.Error } return &resp, nil } func (s *HpcStorage) GetClusterNameById(id string) (string, error) { var name string tx := s.DbEngin.Raw("select `description` from t_cluster where `id` = ?", id).Scan(&name) if tx.Error != nil { logx.Errorf(tx.Error.Error()) return "", tx.Error } return name, nil } func (s *HpcStorage) GetAdapterNameById(id string) (string, error) { var name string tx := s.DbEngin.Raw("select `name` from t_adapter where `id` = ?", id).Scan(&name) if tx.Error != nil { logx.Errorf(tx.Error.Error()) return "", tx.Error } return name, nil } func (s *HpcStorage) GetAdapterIdsByType(adapterType string) ([]string, error) { var list []types.AdapterInfo var ids []string db := s.DbEngin.Model(&types.AdapterInfo{}).Table("t_adapter") db = db.Where("type = ?", adapterType) err := db.Order("create_time desc").Find(&list).Error if err != nil { return nil, err } for _, info := range list { ids = append(ids, info.Id) } return ids, nil } func (s *HpcStorage) GetAdaptersByType(adapterType string) ([]*types.AdapterInfo, error) { var list []*types.AdapterInfo db := s.DbEngin.Model(&types.AdapterInfo{}).Table("t_adapter") db = db.Where("type = ?", adapterType) err := db.Order("create_time desc").Find(&list).Error if err != nil { return nil, err } return list, nil } func (s *HpcStorage) GetHpcTasksByAdapterId(adapterId string) ([]*models.TaskHpc, error) { var resp []*models.TaskHpc db := s.DbEngin.Model(&models.TaskHpc{}).Table("task_hpc") db = db.Where("adapter_id = ?", adapterId) err := db.Order("start_time desc").Find(&resp).Error if err != nil { return nil, err } return resp, nil } func (s *HpcStorage) GetHpcTaskListById(id int64) ([]*models.TaskHpc, error) { var taskList []*models.TaskHpc tx := s.DbEngin.Raw("select * from task_hpc where `task_id` = ? ", id).Scan(&taskList) if tx.Error != nil { return nil, tx.Error } return taskList, nil } func (s *HpcStorage) UpdateTask(task *types.TaskModel) error { task.UpdatedTime = time.Now().Format(constants.Layout) tx := s.DbEngin.Table("task").Model(task).Updates(task) if tx.Error != nil { logx.Errorf(tx.Error.Error()) return tx.Error } return nil } func (s *HpcStorage) UpdateHpcTask(task *models.TaskHpc) error { tx := s.DbEngin.Updates(task) if tx.Error != nil { return tx.Error } return nil } func (s *HpcStorage) AddNoticeInfo(adapterId string, adapterName string, clusterId string, clusterName string, taskName string, noticeType string, incident string) { aId, err := strconv.ParseInt(adapterId, 10, 64) if err != nil { logx.Errorf("adapterId convert failure, err: %v", err) } var cId int64 if clusterId != "" { cId, err = strconv.ParseInt(clusterId, 10, 64) if err != nil { logx.Errorf("clusterId convert failure, err: %v", err) } } noticeInfo := clientCore.NoticeInfo{ AdapterId: aId, AdapterName: adapterName, ClusterId: cId, ClusterName: clusterName, NoticeType: noticeType, TaskName: taskName, Incident: incident, CreatedTime: time.Now(), } result := s.DbEngin.Table("t_notice").Create(¬iceInfo) if result.Error != nil { logx.Errorf("Task creation failure, err: %v", result.Error) } }