diff options
Diffstat (limited to 'internal/backup/backup.go')
-rw-r--r-- | internal/backup/backup.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/internal/backup/backup.go b/internal/backup/backup.go index 5eed0724a..bb6bad6a4 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -230,6 +230,25 @@ func (mgr *Manager) RemoveAllRepositories(ctx context.Context, req *RemoveAllRep return nil } +// RemoveRepository removes the specified repository from its storage. +func (mgr *Manager) RemoveRepository(ctx context.Context, req *RemoveRepositoryRequest) error { + if err := setContextServerInfo(ctx, &req.Server, req.Repo.StorageName); err != nil { + return fmt.Errorf("remove repo: set context: %w", err) + } + + repoClient, err := mgr.newRepoClient(ctx, req.Server) + if err != nil { + return fmt.Errorf("remove repo: create client: %w", err) + } + + _, err = repoClient.RemoveRepository(ctx, &gitalypb.RemoveRepositoryRequest{Repository: req.Repo}) + if err != nil { + return fmt.Errorf("remove repo: remove: %w", err) + } + + return nil +} + // Create creates a repository backup. func (mgr *Manager) Create(ctx context.Context, req *CreateRequest) error { if req.VanityRepository == nil { |