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:
parent
0c5b4f11db
commit
d9834bee25
@ -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 {
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user