From 40f57a2c41c174a035ffc1862dffae011e9ab643 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 7 Oct 2025 10:55:00 +0100 Subject: [PATCH] appview/repo: add delete branch handler Change-Id: mrlxnrlmqvyonxwztoovmklrutvxruyq Signed-off-by: oppiliappan --- appview/repo/repo.go | 47 ++++++++++++++++++++++++++++++++++++++++++ appview/repo/router.go | 1 + 2 files changed, 48 insertions(+) diff --git a/appview/repo/repo.go b/appview/repo/repo.go index f6b467e7..e8cc75d7 100644 --- a/appview/repo/repo.go +++ b/appview/repo/repo.go @@ -628,6 +628,53 @@ func (rp *Repo) RepoBranches(w http.ResponseWriter, r *http.Request) { }) } +func (rp *Repo) DeleteBranch(w http.ResponseWriter, r *http.Request) { + f, err := rp.repoResolver.Resolve(r) + if err != nil { + log.Println("failed to get repo and knot", err) + return + } + + noticeId := "delete-branch-error" + fail := func(msg string, err error) { + log.Println(msg, "err", err) + rp.pages.Notice(w, noticeId, msg) + } + + branch := r.FormValue("branch") + if branch == "" { + fail("No branch provided.", nil) + return + } + + client, err := rp.oauth.ServiceClient( + r, + oauth.WithService(f.Knot), + oauth.WithLxm(tangled.RepoDeleteBranchNSID), + oauth.WithDev(rp.config.Core.Dev), + ) + if err != nil { + fail("Failed to connect to knotserver", nil) + return + } + + err = tangled.RepoDeleteBranch( + r.Context(), + client, + &tangled.RepoDeleteBranch_Input{ + Branch: branch, + Repo: f.RepoAt().String(), + }, + ) + if err := xrpcclient.HandleXrpcErr(err); err != nil { + fail(fmt.Sprintf("Failed to delete branch: %s", err), err) + return + } + log.Println("deleted branch from knot", "branch", branch, "repo", f.RepoAt()) + + rp.pages.HxRefresh(w) +} + func (rp *Repo) RepoBlob(w http.ResponseWriter, r *http.Request) { f, err := rp.repoResolver.Resolve(r) if err != nil { diff --git a/appview/repo/router.go b/appview/repo/router.go index 1ceafcdd..63c2058f 100644 --- a/appview/repo/router.go +++ b/appview/repo/router.go @@ -18,6 +18,7 @@ func (rp *Repo) Router(mw *middleware.Middleware) http.Handler { }) r.Get("/commit/{ref}", rp.RepoCommit) r.Get("/branches", rp.RepoBranches) + r.Delete("/branches", rp.DeleteBranch) r.Route("/tags", func(r chi.Router) { r.Get("/", rp.RepoTags) r.Route("/{tag}", func(r chi.Router) { -- 2.43.0