Browse Source

handle duplicate data

Former-commit-id: 2a7eeec140
pull/288/head
Jake 1 year ago
parent
commit
c6c56da12b
4 changed files with 37 additions and 8 deletions
  1. +8
    -1
      desc/core/pcm-core.api
  2. +9
    -4
      internal/logic/adapters/createadapterlogic.go
  3. +8
    -1
      internal/types/types.go
  4. +12
    -2
      pkg/repository/result/httpResult.go

+ 8
- 1
desc/core/pcm-core.api View File

@@ -790,7 +790,14 @@ type (
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}
AdapterResp {
Data AdapterInfo `json:"data,omitempty"`
Id string `json:"id,omitempty" db:"id"`
Name string `json:"name,omitempty" db:"name"`
Type string `json:"type,omitempty" db:"type"`
ResourceType string `json:"resourceType,omitempty" db:"resource_type"`
Nickname string `json:"nickname,omitempty" db:"nickname"`
Version string `json:"version,omitempty" db:"version"`
Server string `json:"server,omitempty" db:"server"`
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}
AdapterListResp {
List []AdapterInfo `json:"list,omitempty"`


+ 9
- 4
internal/logic/adapters/createadapterlogic.go View File

@@ -27,11 +27,14 @@ func NewCreateAdapterLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Cre

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(&types.AdapterInfo{}).Error
exist := l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
if !errors.Is(exist, gorm.ErrRecordNotFound) {
return nil, errors.New("name already exists")
resp = &existAdapter
return resp, errors.New("name already exists")
}
//check type
var arr = [...]string{"0", "1", "2"}
@@ -60,8 +63,10 @@ func (l *CreateAdapterLogic) CreateAdapter(req *types.AdapterCreateReq) (resp *t
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 nil, result.Error
return resp, result.Error
}

return
_ = l.svcCtx.DbEngin.Table("t_adapter").Where("name = ?", req.Name).First(&existAdapter).Error
resp = &existAdapter
return resp, nil
}

+ 8
- 1
internal/types/types.go View File

@@ -722,7 +722,14 @@ type AdapterInfo struct {
}

type AdapterResp struct {
Data AdapterInfo `json:"data,omitempty"`
Id string `json:"id,omitempty" db:"id"`
Name string `json:"name,omitempty" db:"name"`
Type string `json:"type,omitempty" db:"type"`
ResourceType string `json:"resourceType,omitempty" db:"resource_type"`
Nickname string `json:"nickname,omitempty" db:"nickname"`
Version string `json:"version,omitempty" db:"version"`
Server string `json:"server,omitempty" db:"server"`
CreateTime string `json:"createTime,omitempty" db:"create_time" gorm:"autoCreateTime"`
}

type AdapterListResp struct {


+ 12
- 2
pkg/repository/result/httpResult.go View File

@@ -78,8 +78,18 @@ func HttpResult(r *http.Request, w http.ResponseWriter, resp interface{}, err er
}

logx.WithContext(r.Context()).Errorf("【API-ERR】 : %+v ", err)

httpx.WriteJson(w, http.StatusBadRequest, Error(errcode, errmsg, r.Context()))
// 判断如果err内容为"name already exists",则将resp作为body.Data的信息返回
if errmsg == "name already exists" {
body := Body{
Code: 409,
Msg: errmsg,
TraceID: traceIDFromContext(r.Context()),
Data: resp,
}
httpx.WriteJson(w, http.StatusBadRequest, body)
} else {
httpx.WriteJson(w, http.StatusBadRequest, Error(errcode, errmsg, r.Context()))
}
}
}



Loading…
Cancel
Save