11package core
22
33import (
4+ "errors"
45 "fmt"
56 "strconv"
67
@@ -11,6 +12,7 @@ import (
1112 "github.com/kubeflow/model-registry/internal/mapper"
1213 "github.com/kubeflow/model-registry/pkg/api"
1314 "github.com/kubeflow/model-registry/pkg/openapi"
15+ "gorm.io/gorm"
1416)
1517
1618type ModelRegistryService struct {
@@ -66,7 +68,7 @@ func (b *ModelRegistryService) upsertArtifact(artifact *openapi.Artifact, modelV
6668 } else {
6769 convertedId , err := strconv .ParseInt (* modelVersionId , 10 , 32 )
6870 if err != nil {
69- return nil , fmt .Errorf ("invalid model version id : %w" , err )
71+ return nil , fmt .Errorf ("%v : %w" , err , api . ErrBadRequest )
7072 }
7173
7274 convertedIdInt32 := int32 (convertedId )
@@ -104,11 +106,15 @@ func (b *ModelRegistryService) upsertArtifact(artifact *openapi.Artifact, modelV
104106
105107 modelArtifact , err := b .mapper .MapFromModelArtifact (ma )
106108 if err != nil {
107- return nil , err
109+ return nil , fmt . Errorf ( "%v: %w" , err , api . ErrBadRequest )
108110 }
109111
110112 modelArtifact , err = b .modelArtifactRepository .Save (modelArtifact , modelVersionIDPtr )
111113 if err != nil {
114+ if errors .Is (err , gorm .ErrDuplicatedKey ) {
115+ return nil , fmt .Errorf ("model artifact with name %s already exists: %w" , * ma .Name , api .ErrConflict )
116+ }
117+
112118 return nil , err
113119 }
114120
@@ -150,11 +156,15 @@ func (b *ModelRegistryService) upsertArtifact(artifact *openapi.Artifact, modelV
150156
151157 docArtifact , err := b .mapper .MapFromDocArtifact (da )
152158 if err != nil {
153- return nil , err
159+ return nil , fmt . Errorf ( "%v: %w" , err , api . ErrBadRequest )
154160 }
155161
156162 docArtifact , err = b .docArtifactRepository .Save (docArtifact , modelVersionIDPtr )
157163 if err != nil {
164+ if errors .Is (err , gorm .ErrDuplicatedKey ) {
165+ return nil , fmt .Errorf ("doc artifact with name %s already exists: %w" , * da .Name , api .ErrConflict )
166+ }
167+
158168 return nil , err
159169 }
160170
@@ -188,7 +198,7 @@ func (b *ModelRegistryService) getArtifact(id string, preserveName bool) (*opena
188198
189199 artifact , err := b .artifactRepository .GetByID (int32 (convertedId ))
190200 if err != nil {
191- return nil , err
201+ return nil , fmt . Errorf ( "no artifact found for id %s: %w" , id , api . ErrNotFound )
192202 }
193203
194204 if artifact .ModelArtifact != nil {
@@ -280,7 +290,7 @@ func (b *ModelRegistryService) GetArtifacts(listOptions api.ListOptions, modelVe
280290 if modelVersionId != nil {
281291 convertedId , err := strconv .ParseInt (* modelVersionId , 10 , 32 )
282292 if err != nil {
283- return nil , fmt .Errorf ("invalid model version id : %w" , err )
293+ return nil , fmt .Errorf ("%v : %w" , err , api . ErrBadRequest )
284294 }
285295
286296 convertedIdInt32 := int32 (convertedId )
@@ -397,7 +407,7 @@ func (b *ModelRegistryService) GetModelArtifacts(listOptions api.ListOptions, mo
397407 if modelVersionId != nil {
398408 convertedId , err := strconv .ParseInt (* modelVersionId , 10 , 32 )
399409 if err != nil {
400- return nil , fmt .Errorf ("invalid model version id : %w" , err )
410+ return nil , fmt .Errorf ("%v : %w" , err , api . ErrBadRequest )
401411 }
402412
403413 convertedIdInt32 := int32 (convertedId )
0 commit comments