Skip to content

Commit f6a8384

Browse files
GetVersionsByPackageName witll throw ErrNotExist when no packages found
1 parent aeeccc9 commit f6a8384

File tree

12 files changed

+95
-65
lines changed

12 files changed

+95
-65
lines changed

models/packages/package_version.go

+5
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ func GetVersionsByPackageName(ctx context.Context, ownerID int64, packageType Ty
139139
},
140140
IsInternal: optional.Some(false),
141141
})
142+
143+
if len(pvs) == 0 {
144+
return nil, util.ErrNotExist
145+
}
146+
142147
return pvs, err
143148
}
144149

routers/api/packages/chef/chef.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -153,12 +153,13 @@ func PackageMetadata(ctx *context.Context) {
153153
packageName := ctx.PathParam("name")
154154

155155
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeChef, packageName)
156-
if err != nil {
157-
apiError(ctx, http.StatusInternalServerError, err)
156+
if errors.Is(err, util.ErrNotExist) {
157+
apiError(ctx, http.StatusNotFound, nil)
158158
return
159159
}
160-
if len(pvs) == 0 {
161-
apiError(ctx, http.StatusNotFound, nil)
160+
161+
if err != nil {
162+
apiError(ctx, http.StatusInternalServerError, err)
162163
return
163164
}
164165

@@ -382,13 +383,13 @@ func DeletePackageVersion(ctx *context.Context) {
382383
// https://github.com/chef/chef/blob/main/knife/lib/chef/knife/supermarket_unshare.rb
383384
func DeletePackage(ctx *context.Context) {
384385
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeChef, ctx.PathParam("name"))
385-
if err != nil {
386-
apiError(ctx, http.StatusInternalServerError, err)
386+
if errors.Is(err, util.ErrNotExist) {
387+
apiError(ctx, http.StatusNotFound, err)
387388
return
388389
}
389390

390-
if len(pvs) == 0 {
391-
apiError(ctx, http.StatusNotFound, err)
391+
if err != nil {
392+
apiError(ctx, http.StatusInternalServerError, err)
392393
return
393394
}
394395

routers/api/packages/composer/composer.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,13 @@ func PackageMetadata(ctx *context.Context) {
138138
projectName := ctx.PathParam("projectname")
139139

140140
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeComposer, vendorName+"/"+projectName)
141-
if err != nil {
142-
apiError(ctx, http.StatusInternalServerError, err)
141+
if errors.Is(err, util.ErrNotExist) {
142+
apiError(ctx, http.StatusNotFound, packages_model.ErrPackageNotExist)
143143
return
144144
}
145-
if len(pvs) == 0 {
146-
apiError(ctx, http.StatusNotFound, packages_model.ErrPackageNotExist)
145+
146+
if err != nil {
147+
apiError(ctx, http.StatusInternalServerError, err)
147148
return
148149
}
149150

routers/api/packages/goproxy/goproxy.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ func apiError(ctx *context.Context, status int, obj any) {
2929

3030
func EnumeratePackageVersions(ctx *context.Context) {
3131
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeGo, ctx.PathParam("name"))
32-
if err != nil {
33-
apiError(ctx, http.StatusInternalServerError, err)
32+
if errors.Is(err, util.ErrNotExist) {
33+
apiError(ctx, http.StatusNotFound, err)
3434
return
3535
}
36-
if len(pvs) == 0 {
37-
apiError(ctx, http.StatusNotFound, err)
36+
if err != nil {
37+
apiError(ctx, http.StatusInternalServerError, err)
3838
return
3939
}
4040

routers/api/packages/maven/maven.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,14 @@ func serveMavenMetadata(ctx *context.Context, params parameters) {
9090
if errors.Is(err, util.ErrNotExist) {
9191
pvs, err = packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeMaven, params.toInternalPackageNameLegacy())
9292
}
93-
if err != nil {
94-
apiError(ctx, http.StatusInternalServerError, err)
93+
94+
if errors.Is(err, util.ErrNotExist) {
95+
apiError(ctx, http.StatusNotFound, packages_model.ErrPackageNotExist)
9596
return
9697
}
97-
if len(pvs) == 0 {
98-
apiError(ctx, http.StatusNotFound, packages_model.ErrPackageNotExist)
98+
99+
if err != nil {
100+
apiError(ctx, http.StatusInternalServerError, err)
99101
return
100102
}
101103

routers/api/packages/npm/npm.go

+17-8
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@ func PackageMetadata(ctx *context.Context) {
5656
packageName := packageNameFromParams(ctx)
5757

5858
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNpm, packageName)
59-
if err != nil {
60-
apiError(ctx, http.StatusInternalServerError, err)
59+
if errors.Is(err, util.ErrNotExist) {
60+
apiError(ctx, http.StatusNotFound, err)
6161
return
6262
}
63-
if len(pvs) == 0 {
64-
apiError(ctx, http.StatusNotFound, err)
63+
64+
if err != nil {
65+
apiError(ctx, http.StatusInternalServerError, err)
6566
return
6667
}
6768

@@ -283,13 +284,13 @@ func DeletePackage(ctx *context.Context) {
283284
packageName := packageNameFromParams(ctx)
284285

285286
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNpm, packageName)
286-
if err != nil {
287-
apiError(ctx, http.StatusInternalServerError, err)
287+
if errors.Is(err, util.ErrNotExist) {
288+
apiError(ctx, http.StatusNotFound, err)
288289
return
289290
}
290291

291-
if len(pvs) == 0 {
292-
apiError(ctx, http.StatusNotFound, err)
292+
if err != nil {
293+
apiError(ctx, http.StatusInternalServerError, err)
293294
return
294295
}
295296

@@ -308,6 +309,10 @@ func ListPackageTags(ctx *context.Context) {
308309
packageName := packageNameFromParams(ctx)
309310

310311
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNpm, packageName)
312+
if errors.Is(err, util.ErrNotExist) {
313+
apiError(ctx, http.StatusNotFound, err)
314+
return
315+
}
311316
if err != nil {
312317
apiError(ctx, http.StatusInternalServerError, err)
313318
return
@@ -364,6 +369,10 @@ func DeletePackageTag(ctx *context.Context) {
364369
packageName := packageNameFromParams(ctx)
365370

366371
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNpm, packageName)
372+
if errors.Is(err, util.ErrNotExist) {
373+
return
374+
}
375+
367376
if err != nil {
368377
apiError(ctx, http.StatusInternalServerError, err)
369378
return

routers/api/packages/nuget/nuget.go

+10-8
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,13 @@ func RegistrationIndex(ctx *context.Context) {
229229
packageName := ctx.PathParam("id")
230230

231231
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNuGet, packageName)
232-
if err != nil {
233-
apiError(ctx, http.StatusInternalServerError, err)
232+
if errors.Is(err, util.ErrNotExist) {
233+
apiError(ctx, http.StatusNotFound, err)
234234
return
235235
}
236-
if len(pvs) == 0 {
237-
apiError(ctx, http.StatusNotFound, err)
236+
237+
if err != nil {
238+
apiError(ctx, http.StatusInternalServerError, err)
238239
return
239240
}
240241

@@ -384,12 +385,13 @@ func EnumeratePackageVersionsV3(ctx *context.Context) {
384385
packageName := ctx.PathParam("id")
385386

386387
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeNuGet, packageName)
387-
if err != nil {
388-
apiError(ctx, http.StatusInternalServerError, err)
388+
if errors.Is(err, util.ErrNotExist) {
389+
apiError(ctx, http.StatusNotFound, err)
389390
return
390391
}
391-
if len(pvs) == 0 {
392-
apiError(ctx, http.StatusNotFound, err)
392+
393+
if err != nil {
394+
apiError(ctx, http.StatusInternalServerError, err)
393395
return
394396
}
395397

routers/api/packages/pub/pub.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,13 @@ func EnumeratePackageVersions(ctx *context.Context) {
8484
packageName := ctx.PathParam("id")
8585

8686
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypePub, packageName)
87-
if err != nil {
88-
apiError(ctx, http.StatusInternalServerError, err)
87+
if errors.Is(err, util.ErrNotExist) {
88+
apiError(ctx, http.StatusNotFound, err)
8989
return
9090
}
91-
if len(pvs) == 0 {
92-
apiError(ctx, http.StatusNotFound, err)
91+
92+
if err != nil {
93+
apiError(ctx, http.StatusInternalServerError, err)
9394
return
9495
}
9596

routers/api/packages/pypi/pypi.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package pypi
55

66
import (
77
"encoding/hex"
8+
"errors"
89
"io"
910
"net/http"
1011
"regexp"
@@ -15,6 +16,7 @@ import (
1516
packages_module "code.gitea.io/gitea/modules/packages"
1617
pypi_module "code.gitea.io/gitea/modules/packages/pypi"
1718
"code.gitea.io/gitea/modules/setting"
19+
"code.gitea.io/gitea/modules/util"
1820
"code.gitea.io/gitea/modules/validation"
1921
"code.gitea.io/gitea/routers/api/packages/helper"
2022
"code.gitea.io/gitea/services/context"
@@ -48,12 +50,13 @@ func PackageMetadata(ctx *context.Context) {
4850
packageName := normalizer.Replace(ctx.PathParam("id"))
4951

5052
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypePyPI, packageName)
51-
if err != nil {
52-
apiError(ctx, http.StatusInternalServerError, err)
53+
if errors.Is(err, util.ErrNotExist) {
54+
apiError(ctx, http.StatusNotFound, err)
5355
return
5456
}
55-
if len(pvs) == 0 {
56-
apiError(ctx, http.StatusNotFound, err)
57+
58+
if err != nil {
59+
apiError(ctx, http.StatusInternalServerError, err)
5760
return
5861
}
5962

routers/api/packages/rubygems/rubygems.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,16 @@ func DeletePackage(ctx *context.Context) {
301301
func GetPackageInfo(ctx *context.Context) {
302302
packageName := ctx.PathParam("packagename")
303303
versions, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeRubyGems, packageName)
304-
if err != nil {
305-
apiError(ctx, http.StatusInternalServerError, err)
304+
if errors.Is(err, util.ErrNotExist) {
305+
apiError(ctx, http.StatusNotFound, nil)
306306
return
307307
}
308-
if len(versions) == 0 {
309-
apiError(ctx, http.StatusNotFound, nil)
308+
309+
if err != nil {
310+
apiError(ctx, http.StatusInternalServerError, err)
310311
return
311312
}
313+
312314
infoContent, err := makePackageInfo(ctx, versions)
313315
if err != nil {
314316
apiError(ctx, http.StatusInternalServerError, err)
@@ -330,13 +332,12 @@ func GetAllPackagesVersions(ctx *context.Context) {
330332
out.WriteString("---\n")
331333
for _, pkg := range packages {
332334
versions, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeRubyGems, pkg.Name)
333-
if err != nil {
335+
if errors.Is(err, util.ErrNotExist) {
336+
continue
337+
} else if err != nil {
334338
apiError(ctx, http.StatusInternalServerError, err)
335339
return
336340
}
337-
if len(versions) == 0 {
338-
continue
339-
}
340341

341342
info, err := makePackageInfo(ctx, versions)
342343
if err != nil {

routers/api/packages/swift/swift.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,13 @@ func EnumeratePackageVersions(ctx *context.Context) {
129129
packageName := ctx.PathParam("name")
130130

131131
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeSwift, buildPackageID(packageScope, packageName))
132-
if err != nil {
133-
apiError(ctx, http.StatusInternalServerError, err)
132+
if errors.Is(err, util.ErrNotExist) {
133+
apiError(ctx, http.StatusNotFound, nil)
134134
return
135135
}
136-
if len(pvs) == 0 {
137-
apiError(ctx, http.StatusNotFound, nil)
136+
137+
if err != nil {
138+
apiError(ctx, http.StatusInternalServerError, err)
138139
return
139140
}
140141

routers/api/packages/vagrant/vagrant.go

+13-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package vagrant
55

66
import (
7+
"errors"
78
"fmt"
89
"io"
910
"net/http"
@@ -15,6 +16,7 @@ import (
1516
packages_module "code.gitea.io/gitea/modules/packages"
1617
vagrant_module "code.gitea.io/gitea/modules/packages/vagrant"
1718
"code.gitea.io/gitea/modules/setting"
19+
"code.gitea.io/gitea/modules/util"
1820
"code.gitea.io/gitea/routers/api/packages/helper"
1921
"code.gitea.io/gitea/services/context"
2022
packages_service "code.gitea.io/gitea/services/packages"
@@ -44,13 +46,14 @@ func CheckAuthenticate(ctx *context.Context) {
4446
}
4547

4648
func CheckBoxAvailable(ctx *context.Context) {
47-
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeVagrant, ctx.PathParam("name"))
48-
if err != nil {
49-
apiError(ctx, http.StatusInternalServerError, err)
49+
_, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeVagrant, ctx.PathParam("name"))
50+
if errors.Is(err, util.ErrNotExist) {
51+
apiError(ctx, http.StatusNotFound, err)
5052
return
5153
}
52-
if len(pvs) == 0 {
53-
apiError(ctx, http.StatusNotFound, err)
54+
55+
if err != nil {
56+
apiError(ctx, http.StatusInternalServerError, err)
5457
return
5558
}
5659

@@ -102,12 +105,13 @@ func packageDescriptorToMetadata(baseURL string, pd *packages_model.PackageDescr
102105

103106
func EnumeratePackageVersions(ctx *context.Context) {
104107
pvs, err := packages_model.GetVersionsByPackageName(ctx, ctx.Package.Owner.ID, packages_model.TypeVagrant, ctx.PathParam("name"))
105-
if err != nil {
106-
apiError(ctx, http.StatusInternalServerError, err)
108+
if errors.Is(err, util.ErrNotExist) {
109+
apiError(ctx, http.StatusNotFound, err)
107110
return
108111
}
109-
if len(pvs) == 0 {
110-
apiError(ctx, http.StatusNotFound, err)
112+
113+
if err != nil {
114+
apiError(ctx, http.StatusInternalServerError, err)
111115
return
112116
}
113117

0 commit comments

Comments
 (0)