Skip to content

Commit f59ce77

Browse files
authored
Display unreferenced packages total size in package admin panel (#22498)
1 parent 7ddc11d commit f59ce77

File tree

6 files changed

+29
-10
lines changed

6 files changed

+29
-10
lines changed

Diff for: models/packages/package_blob.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,16 @@ func DeleteBlobByID(ctx context.Context, blobID int64) error {
8585
}
8686

8787
// GetTotalBlobSize returns the total blobs size in bytes
88-
func GetTotalBlobSize() (int64, error) {
89-
return db.GetEngine(db.DefaultContext).
88+
func GetTotalBlobSize(ctx context.Context) (int64, error) {
89+
return db.GetEngine(ctx).
90+
SumInt(&PackageBlob{}, "size")
91+
}
92+
93+
// GetTotalUnreferencedBlobSize returns the total size of all unreferenced blobs in bytes
94+
func GetTotalUnreferencedBlobSize(ctx context.Context) (int64, error) {
95+
return db.GetEngine(ctx).
96+
Table("package_blob").
97+
Join("LEFT", "package_file", "package_file.blob_id = package_blob.id").
98+
Where("package_file.id IS NULL").
9099
SumInt(&PackageBlob{}, "size")
91100
}

Diff for: models/packages/package_file.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,9 @@ func SearchFiles(ctx context.Context, opts *PackageFileSearchOptions) ([]*Packag
199199
return pfs, count, err
200200
}
201201

202-
// CalculateBlobSize sums up all blob sizes matching the search options.
202+
// CalculateFileSize sums up all blob sizes matching the search options.
203203
// It does NOT respect the deduplication of blobs.
204-
func CalculateBlobSize(ctx context.Context, opts *PackageFileSearchOptions) (int64, error) {
204+
func CalculateFileSize(ctx context.Context, opts *PackageFileSearchOptions) (int64, error) {
205205
return db.GetEngine(ctx).
206206
Table("package_file").
207207
Where(opts.toConds()).

Diff for: options/locale/locale_en-US.ini

+1
Original file line numberDiff line numberDiff line change
@@ -2645,6 +2645,7 @@ repos.size = Size
26452645
26462646
packages.package_manage_panel = Package Management
26472647
packages.total_size = Total Size: %s
2648+
packages.unreferenced_size = Unreferenced Size: %s
26482649
packages.owner = Owner
26492650
packages.creator = Creator
26502651
packages.name = Name

Diff for: routers/web/admin/packages.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,18 @@ func Packages(ctx *context.Context) {
5151
return
5252
}
5353

54-
totalBlobSize, err := packages_model.GetTotalBlobSize()
54+
totalBlobSize, err := packages_model.GetTotalBlobSize(ctx)
5555
if err != nil {
5656
ctx.ServerError("GetTotalBlobSize", err)
5757
return
5858
}
5959

60+
totalUnreferencedBlobSize, err := packages_model.GetTotalUnreferencedBlobSize(ctx)
61+
if err != nil {
62+
ctx.ServerError("CalculateBlobSize", err)
63+
return
64+
}
65+
6066
ctx.Data["Title"] = ctx.Tr("packages.title")
6167
ctx.Data["PageIsAdmin"] = true
6268
ctx.Data["PageIsAdminPackages"] = true
@@ -65,8 +71,9 @@ func Packages(ctx *context.Context) {
6571
ctx.Data["AvailableTypes"] = packages_model.TypeList
6672
ctx.Data["SortType"] = sort
6773
ctx.Data["PackageDescriptors"] = pds
68-
ctx.Data["Total"] = total
69-
ctx.Data["TotalBlobSize"] = totalBlobSize
74+
ctx.Data["TotalCount"] = total
75+
ctx.Data["TotalBlobSize"] = totalBlobSize - totalUnreferencedBlobSize
76+
ctx.Data["TotalUnreferencedBlobSize"] = totalUnreferencedBlobSize
7077

7178
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5)
7279
pager.AddParamString("q", query)

Diff for: services/packages/packages.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -361,11 +361,11 @@ func checkSizeQuotaExceeded(ctx context.Context, doer, owner *user_model.User, p
361361
}
362362

363363
if setting.Packages.LimitTotalOwnerSize > -1 {
364-
totalSize, err := packages_model.CalculateBlobSize(ctx, &packages_model.PackageFileSearchOptions{
364+
totalSize, err := packages_model.CalculateFileSize(ctx, &packages_model.PackageFileSearchOptions{
365365
OwnerID: owner.ID,
366366
})
367367
if err != nil {
368-
log.Error("CalculateBlobSize failed: %v", err)
368+
log.Error("CalculateFileSize failed: %v", err)
369369
return err
370370
}
371371
if totalSize+uploadSize > setting.Packages.LimitTotalOwnerSize {

Diff for: templates/admin/packages/list.tmpl

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
<div class="ui container">
55
{{template "base/alert" .}}
66
<h4 class="ui top attached header">
7-
{{.locale.Tr "admin.packages.package_manage_panel"}} ({{.locale.Tr "admin.total" .Total}}, {{.locale.Tr "admin.packages.total_size" (FileSize .TotalBlobSize)}})
7+
{{.locale.Tr "admin.packages.package_manage_panel"}} ({{.locale.Tr "admin.total" .TotalCount}},
8+
{{.locale.Tr "admin.packages.total_size" (FileSize .TotalBlobSize)}},
9+
{{.locale.Tr "admin.packages.unreferenced_size" (FileSize .TotalUnreferencedBlobSize)}})
810
</h4>
911
<div class="ui attached segment">
1012
<form class="ui form ignore-dirty">

0 commit comments

Comments
 (0)