|
- package adapters
-
- import (
- "context"
- "github.com/pkg/errors"
- "github.com/zeromicro/go-zero/core/logx"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/svc"
- "gitlink.org.cn/JointCloud/pcm-coordinator/internal/types"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/models"
- "gitlink.org.cn/JointCloud/pcm-coordinator/pkg/utils"
- "gorm.io/gorm"
- "strconv"
- "time"
- )
-
- type CreateAdapterLogic struct {
- logx.Logger
- ctx context.Context
- svcCtx *svc.ServiceContext
- }
-
- func NewCreateAdapterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateAdapterLogic {
- return &CreateAdapterLogic{
- Logger: logx.WithContext(ctx),
- ctx: ctx,
- svcCtx: svcCtx,
- }
- }
-
- func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *types.AdapterResp, err error) {
- adapter := types.AdapterInfo{}
- existAdapter := types.AdapterResp{}
- resp = &types.AdapterResp{}
- utils.Convert(req, &adapter)
- //check name
- exist := l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
- if !errors.Is(exist, gorm.ErrRecordNotFound) {
- resp = &existAdapter
- return resp, errors.New("name already exists")
- }
- //check type
- var arr = [...]string{"0", "1", "2"}
- found := false
- for _, str := range arr {
- if str == req.Type {
- found = true
- break
- }
- }
- if found == false {
- return nil, errors.New("type not found")
- }
-
- //check resourceTypeDict
- sql := `select t_dict_item.item_value
- from t_dict
- join t_dict_item on t_dict.id = t_dict_item.dict_id
- where dict_code = 'adapter_type' and item_value = ?
- and t_dict_item.parent_id != 0`
- err = l.svcCtx.DbEngin.Raw(sql, req.ResourceType).First(&types.DictItemInfo{}).Error
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return nil, errors.New("resourceType error, please check!")
- }
- adapter.Id = utils.GenSnowflakeIDStr()
- adapter.CreateTime = time.Now().Format("2006-01-02 15:04:05")
- result := l.svcCtx.DbEngin.Table("t_adapter").Create(&adapter)
- if result.Error != nil {
- return resp, result.Error
- }
-
- _ = l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
- resp = &existAdapter
- Tadapter := models.TAdapterInfo{}
- if req.Type == "0" {
- if req.ResourceType == "01" {
- Tadapter.Id, _ = strconv.ParseInt(utils.GenSnowflakeIDStr(), 10, 64)
- Tadapter.AdapterId, _ = strconv.ParseInt(resp.Id, 10, 64)
- Tadapter.InfoName = "CloudInfoList"
- l.svcCtx.DbEngin.Table("t_adapter_info").Create(&Tadapter)
- resp.InfoName = "CloudInfoList"
- } else if req.ResourceType == "02" {
- Tadapter.Id, _ = strconv.ParseInt(utils.GenSnowflakeIDStr(), 10, 64)
- Tadapter.AdapterId, _ = strconv.ParseInt(resp.Id, 10, 64)
- Tadapter.InfoName = "VmInfoList"
- l.svcCtx.DbEngin.Table("t_adapter_info").Create(&Tadapter)
- resp.InfoName = "VmInfoList"
- }
- } else if req.Type == "1" {
- Tadapter.Id, _ = strconv.ParseInt(utils.GenSnowflakeIDStr(), 10, 64)
- Tadapter.AdapterId, _ = strconv.ParseInt(resp.Id, 10, 64)
- Tadapter.InfoName = "AiInfoList"
- l.svcCtx.DbEngin.Table("t_adapter_info").Create(&Tadapter)
- resp.InfoName = "AiInfoList"
- } else if req.Type == "2" {
- Tadapter.Id, _ = strconv.ParseInt(utils.GenSnowflakeIDStr(), 10, 64)
- Tadapter.AdapterId, _ = strconv.ParseInt(resp.Id, 10, 64)
- Tadapter.InfoName = "HpcInfoList"
- l.svcCtx.DbEngin.Table("t_adapter_info").Create(&Tadapter)
- resp.InfoName = "HpcInfoList"
- }
- return resp, nil
- }
|