0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-05-08 16:43:39 +02:00

add notifications and return error on bad enum

This commit is contained in:
TheFox0x7 2026-04-01 20:18:48 +02:00
parent 0c5b4f11db
commit d9834bee25
No known key found for this signature in database
4 changed files with 27 additions and 3 deletions

View File

@ -9,6 +9,7 @@ import (
"fmt"
"net/url"
"code.gitea.io/gitea/models/db"
repo_model "code.gitea.io/gitea/models/repo"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/cache"
@ -272,6 +273,15 @@ func GetPackageDescriptors(ctx context.Context, pvs []*PackageVersion) ([]*Packa
return getPackageDescriptors(ctx, pvs, cache.NewEphemeralCache())
}
// GetAllPackageDescriptors gets all package descriptors for a package
func GetAllPackageDescriptors(ctx context.Context, p *Package) ([]*PackageDescriptor, error) {
pvs := make([]*PackageVersion, 0, 10)
if err := db.GetEngine(ctx).Where("package_id = ?", p.ID).Find(&pvs); err != nil {
return nil, err
}
return getPackageDescriptors(ctx, pvs, cache.NewEphemeralCache())
}
func getPackageDescriptors(ctx context.Context, pvs []*PackageVersion, c *cache.EphemeralCache) ([]*PackageDescriptor, error) {
pds := make([]*PackageDescriptor, 0, len(pvs))
for _, pv := range pvs {

View File

@ -5,6 +5,7 @@ package packages
import (
"context"
"errors"
"code.gitea.io/gitea/models/db"
@ -111,6 +112,8 @@ func DeletePropertiesByPackageID(ctx context.Context, refType PropertyType, pack
deleteStmt = builder.Delete(
builder.Eq{"ref_type": PropertyTypePackage}, builder.Eq{"ref_id": packageID}).
From("package_property")
default:
return errors.New("invalid ref type")
}
_, err := db.GetEngine(ctx).Exec(deleteStmt)

View File

@ -493,7 +493,7 @@ func packageSettingsPostActionLink(ctx *context.Context, form *forms.PackageSett
func packageSettingsPostActionDelete(ctx *context.Context) {
pd := ctx.Package.Descriptor
if err := packages_service.RemovePackage(ctx, pd.Package); err != nil {
if err := packages_service.RemovePackage(ctx, ctx.Doer, pd.Package); err != nil {
log.Error("Error deleting package: %v", err)
ctx.Flash.Error(ctx.Tr("packages.settings.delete.error"))
} else {

View File

@ -625,8 +625,12 @@ func OpenBlobForDownload(ctx context.Context, pf *packages_model.PackageFile, pb
}
// RemovePackage deletes the package and all its versions
func RemovePackage(ctx context.Context, p *packages_model.Package) error {
return db.WithTx(ctx, func(ctx context.Context) error {
func RemovePackage(ctx context.Context, doer *user_model.User, p *packages_model.Package) error {
pds, err := packages_model.GetAllPackageDescriptors(ctx, p)
if err != nil {
return err
}
err = db.WithTx(ctx, func(ctx context.Context) error {
err := packages_model.DeletePropertiesByPackageID(ctx, packages_model.PropertyTypePackage, p.ID)
if err != nil {
return err
@ -650,6 +654,13 @@ func RemovePackage(ctx context.Context, p *packages_model.Package) error {
return packages_model.DeletePackageByID(ctx, p.ID)
})
if err != nil {
return err
}
for _, pd := range pds {
notify_service.PackageDelete(ctx, doer, pd)
}
return nil
}
// RemoveAllPackages for User