|
| 1 | +// Copyright 2025 The Gitea Authors. All rights reserved. |
| 2 | +// SPDX-License-Identifier: MIT |
| 3 | + |
| 4 | +package common |
| 5 | + |
| 6 | +import ( |
| 7 | + "context" |
| 8 | + |
| 9 | + packages_model "code.gitea.io/gitea/models/packages" |
| 10 | + user_model "code.gitea.io/gitea/models/user" |
| 11 | + packages_service "code.gitea.io/gitea/services/packages" |
| 12 | + alpine_service "code.gitea.io/gitea/services/packages/alpine" |
| 13 | + cargo_service "code.gitea.io/gitea/services/packages/cargo" |
| 14 | + debian_service "code.gitea.io/gitea/services/packages/debian" |
| 15 | + rpm_service "code.gitea.io/gitea/services/packages/rpm" |
| 16 | +) |
| 17 | + |
| 18 | +// RemovePackageVersionByNameAndVersion deletes a package version and all associated files |
| 19 | +func RemovePackageVersionByNameAndVersion(ctx context.Context, doer *user_model.User, pvi *packages_service.PackageInfo) error { |
| 20 | + pv, err := packages_model.GetVersionByNameAndVersion(ctx, pvi.Owner.ID, pvi.PackageType, pvi.Name, pvi.Version) |
| 21 | + if err != nil { |
| 22 | + return err |
| 23 | + } |
| 24 | + |
| 25 | + return RemovePackageVersion(ctx, doer, pv) |
| 26 | +} |
| 27 | + |
| 28 | +func RemovePackageVersion(ctx context.Context, doer *user_model.User, pv *packages_model.PackageVersion) error { |
| 29 | + pd, err := packages_model.GetPackageDescriptor(ctx, pv) |
| 30 | + if err != nil { |
| 31 | + return err |
| 32 | + } |
| 33 | + switch pd.Package.Type { |
| 34 | + case packages_model.TypeAlpine: |
| 35 | + return alpine_service.RemovePackageVersion(ctx, doer, pv) |
| 36 | + case packages_model.TypeCargo: |
| 37 | + return cargo_service.RemovePackageVersion(ctx, doer, pv) |
| 38 | + case packages_model.TypeDebian: |
| 39 | + return debian_service.RemovePackageVersion(ctx, doer, pv) |
| 40 | + case packages_model.TypeRpm: |
| 41 | + return rpm_service.RemovePackageVersion(ctx, doer, pv) |
| 42 | + default: |
| 43 | + return packages_service.RemovePackageVersion(ctx, doer, pv) |
| 44 | + } |
| 45 | +} |
0 commit comments