Mirror of @tangled.org/core. Running on a Raspberry Pi Zero 2 (Please be gentle).
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

appview: use less `RepoInfo` for `ResolvedRepo`

`RepoInfo` is mostly designed for rendering, don't use it for service
logic.

Signed-off-by: Seongmin Lee <git@boltless.me>

authored by

Seongmin Lee and committed by
Tangled
5ff1be1b 02ff0c9e

+36 -57
+2 -3
appview/issues/issues.go
··· 226 226 l := rp.logger.With("handler", "DeleteIssue") 227 227 noticeId := "issue-actions-error" 228 228 229 - user := rp.oauth.GetUser(r) 230 - 231 229 f, err := rp.repoResolver.Resolve(r) 232 230 if err != nil { 233 231 l.Error("failed to get repo and knot", "err", err) ··· 269 271 rp.notifier.DeleteIssue(r.Context(), issue) 270 272 271 273 // return to all issues page 272 - rp.pages.HxRedirect(w, "/"+f.RepoInfo(user).FullName()+"/issues") 274 + ownerSlashRepo := reporesolver.GetBaseRepoPath(r, &f.Repo) 275 + rp.pages.HxRedirect(w, "/"+ownerSlashRepo+"/issues") 273 276 } 274 277 275 278 func (rp *Issues) CloseIssue(w http.ResponseWriter, r *http.Request) {
+13 -20
appview/pipelines/pipelines.go
··· 78 78 return 79 79 } 80 80 81 - repoInfo := f.RepoInfo(user) 82 - 83 81 ps, err := db.GetPipelineStatuses( 84 82 p.db, 85 83 30, 86 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 87 - db.FilterEq("repo_name", repoInfo.Name), 88 - db.FilterEq("knot", repoInfo.Knot), 84 + db.FilterEq("repo_owner", f.Did), 85 + db.FilterEq("repo_name", f.Name), 86 + db.FilterEq("knot", f.Knot), 89 87 ) 90 88 if err != nil { 91 89 l.Error("failed to query db", "err", err) ··· 92 94 93 95 p.pages.Pipelines(w, pages.PipelinesParams{ 94 96 LoggedInUser: user, 95 - RepoInfo: repoInfo, 97 + RepoInfo: f.RepoInfo(user), 96 98 Pipelines: ps, 97 99 }) 98 100 } ··· 106 108 l.Error("failed to get repo and knot", "err", err) 107 109 return 108 110 } 109 - 110 - repoInfo := f.RepoInfo(user) 111 111 112 112 pipelineId := chi.URLParam(r, "pipeline") 113 113 if pipelineId == "" { ··· 122 126 ps, err := db.GetPipelineStatuses( 123 127 p.db, 124 128 1, 125 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 126 - db.FilterEq("repo_name", repoInfo.Name), 127 - db.FilterEq("knot", repoInfo.Knot), 129 + db.FilterEq("repo_owner", f.Did), 130 + db.FilterEq("repo_name", f.Name), 131 + db.FilterEq("knot", f.Knot), 128 132 db.FilterEq("id", pipelineId), 129 133 ) 130 134 if err != nil { ··· 141 145 142 146 p.pages.Workflow(w, pages.WorkflowParams{ 143 147 LoggedInUser: user, 144 - RepoInfo: repoInfo, 148 + RepoInfo: f.RepoInfo(user), 145 149 Pipeline: singlePipeline, 146 150 Workflow: workflow, 147 151 }) ··· 172 176 ctx, cancel := context.WithCancel(r.Context()) 173 177 defer cancel() 174 178 175 - user := p.oauth.GetUser(r) 176 179 f, err := p.repoResolver.Resolve(r) 177 180 if err != nil { 178 181 l.Error("failed to get repo and knot", "err", err) 179 182 http.Error(w, "bad repo/knot", http.StatusBadRequest) 180 183 return 181 184 } 182 - 183 - repoInfo := f.RepoInfo(user) 184 185 185 186 pipelineId := chi.URLParam(r, "pipeline") 186 187 workflow := chi.URLParam(r, "workflow") ··· 189 196 ps, err := db.GetPipelineStatuses( 190 197 p.db, 191 198 1, 192 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 193 - db.FilterEq("repo_name", repoInfo.Name), 194 - db.FilterEq("knot", repoInfo.Knot), 199 + db.FilterEq("repo_owner", f.Did), 200 + db.FilterEq("repo_name", f.Name), 201 + db.FilterEq("knot", f.Knot), 195 202 db.FilterEq("id", pipelineId), 196 203 ) 197 204 if err != nil || len(ps) != 1 { ··· 201 208 } 202 209 203 210 singlePipeline := ps[0] 204 - spindle := repoInfo.Spindle 205 - knot := repoInfo.Knot 211 + spindle := f.Spindle 212 + knot := f.Knot 206 213 rkey := singlePipeline.Rkey 207 214 208 215 if spindle == "" || knot == "" || rkey == "" {
+7 -10
appview/pulls/pulls.go
··· 162 162 resubmitResult = s.resubmitCheck(r, f, pull, stack) 163 163 } 164 164 165 - repoInfo := f.RepoInfo(user) 166 - 167 165 m := make(map[string]models.Pipeline) 168 166 169 167 var shas []string ··· 178 180 ps, err := db.GetPipelineStatuses( 179 181 s.db, 180 182 len(shas), 181 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 182 - db.FilterEq("repo_name", repoInfo.Name), 183 - db.FilterEq("knot", repoInfo.Knot), 183 + db.FilterEq("repo_owner", f.Did), 184 + db.FilterEq("repo_name", f.Name), 185 + db.FilterEq("knot", f.Knot), 184 186 db.FilterIn("sha", shas), 185 187 ) 186 188 if err != nil { ··· 221 223 222 224 s.pages.RepoSinglePull(w, pages.RepoSinglePullParams{ 223 225 LoggedInUser: user, 224 - RepoInfo: repoInfo, 226 + RepoInfo: f.RepoInfo(user), 225 227 Pull: pull, 226 228 Stack: stack, 227 229 AbandonedPulls: abandonedPulls, ··· 645 647 } 646 648 pulls = pulls[:n] 647 649 648 - repoInfo := f.RepoInfo(user) 649 650 ps, err := db.GetPipelineStatuses( 650 651 s.db, 651 652 len(shas), 652 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 653 - db.FilterEq("repo_name", repoInfo.Name), 654 - db.FilterEq("knot", repoInfo.Knot), 653 + db.FilterEq("repo_owner", f.Did), 654 + db.FilterEq("repo_name", f.Name), 655 + db.FilterEq("knot", f.Knot), 655 656 db.FilterIn("sha", shas), 656 657 ) 657 658 if err != nil {
+2 -6
appview/repo/compare.go
··· 88 88 return 89 89 } 90 90 91 - repoinfo := f.RepoInfo(user) 92 - 93 91 rp.pages.RepoCompareNew(w, pages.RepoCompareNewParams{ 94 92 LoggedInUser: user, 95 - RepoInfo: repoinfo, 93 + RepoInfo: f.RepoInfo(user), 96 94 Branches: branches, 97 95 Tags: tags.Tags, 98 96 Base: base, ··· 200 202 diff = patchutil.AsNiceDiff(formatPatch.FormatPatchRaw, base) 201 203 } 202 204 203 - repoinfo := f.RepoInfo(user) 204 - 205 205 rp.pages.RepoCompare(w, pages.RepoCompareParams{ 206 206 LoggedInUser: user, 207 - RepoInfo: repoinfo, 207 + RepoInfo: f.RepoInfo(user), 208 208 Branches: branches.Branches, 209 209 Tags: tags.Tags, 210 210 Base: base,
+3 -4
appview/repo/index.go
··· 52 52 } 53 53 54 54 user := rp.oauth.GetUser(r) 55 - repoInfo := f.RepoInfo(user) 56 55 57 56 // Build index response from multiple XRPC calls 58 57 result, err := rp.buildIndexResponse(r.Context(), xrpcc, f, ref) ··· 61 62 rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ 62 63 LoggedInUser: user, 63 64 NeedsKnotUpgrade: true, 64 - RepoInfo: repoInfo, 65 + RepoInfo: f.RepoInfo(user), 65 66 }) 66 67 return 67 68 } ··· 139 140 for _, c := range commitsTrunc { 140 141 shas = append(shas, c.Hash.String()) 141 142 } 142 - pipelines, err := getPipelineStatuses(rp.db, repoInfo, shas) 143 + pipelines, err := getPipelineStatuses(rp.db, &f.Repo, shas) 143 144 if err != nil { 144 145 l.Error("failed to fetch pipeline statuses", "err", err) 145 146 // non-fatal ··· 147 148 148 149 rp.pages.RepoIndexPage(w, pages.RepoIndexParams{ 149 150 LoggedInUser: user, 150 - RepoInfo: repoInfo, 151 + RepoInfo: f.RepoInfo(user), 151 152 TagMap: tagMap, 152 153 RepoIndexResponse: *result, 153 154 CommitsTrunc: commitsTrunc,
+3 -6
appview/repo/log.go
··· 121 121 l.Error("failed to GetVerifiedObjectCommits", "err", err) 122 122 } 123 123 124 - repoInfo := f.RepoInfo(user) 125 - 126 124 var shas []string 127 125 for _, c := range xrpcResp.Commits { 128 126 shas = append(shas, c.Hash.String()) 129 127 } 130 - pipelines, err := getPipelineStatuses(rp.db, repoInfo, shas) 128 + pipelines, err := getPipelineStatuses(rp.db, &f.Repo, shas) 131 129 if err != nil { 132 130 l.Error("failed to getPipelineStatuses", "err", err) 133 131 // non-fatal ··· 134 136 rp.pages.RepoLog(w, pages.RepoLogParams{ 135 137 LoggedInUser: user, 136 138 TagMap: tagMap, 137 - RepoInfo: repoInfo, 139 + RepoInfo: f.RepoInfo(user), 138 140 RepoLogResponse: xrpcResp, 139 141 EmailToDid: emailToDidMap, 140 142 VerifiedCommits: vc, ··· 198 200 } 199 201 200 202 user := rp.oauth.GetUser(r) 201 - repoInfo := f.RepoInfo(user) 202 - pipelines, err := getPipelineStatuses(rp.db, repoInfo, []string{result.Diff.Commit.This}) 203 + pipelines, err := getPipelineStatuses(rp.db, &f.Repo, []string{result.Diff.Commit.This}) 203 204 if err != nil { 204 205 l.Error("failed to getPipelineStatuses", "err", err) 205 206 // non-fatal
+2 -3
appview/repo/repo.go
··· 959 959 return 960 960 } 961 961 962 - repoInfo := f.RepoInfo(user) 963 - if repoInfo.Source == nil { 962 + if f.Source == "" { 964 963 rp.pages.Notice(w, "repo", "This repository is not a fork.") 965 964 return 966 965 } ··· 970 971 &tangled.RepoForkSync_Input{ 971 972 Did: user.Did, 972 973 Name: f.Name, 973 - Source: repoInfo.Source.RepoAt().String(), 974 + Source: f.Source, 974 975 Branch: ref, 975 976 }, 976 977 )
+4 -5
appview/repo/repo_util.go
··· 7 7 8 8 "tangled.org/core/appview/db" 9 9 "tangled.org/core/appview/models" 10 - "tangled.org/core/appview/pages/repoinfo" 11 10 "tangled.org/core/types" 12 11 13 12 "github.com/go-git/go-git/v5/plumbing/object" ··· 92 93 // golang is so blessed that it requires 35 lines of imperative code for this 93 94 func getPipelineStatuses( 94 95 d *db.DB, 95 - repoInfo repoinfo.RepoInfo, 96 + repo *models.Repo, 96 97 shas []string, 97 98 ) (map[string]models.Pipeline, error) { 98 99 m := make(map[string]models.Pipeline) ··· 104 105 ps, err := db.GetPipelineStatuses( 105 106 d, 106 107 len(shas), 107 - db.FilterEq("repo_owner", repoInfo.OwnerDid), 108 - db.FilterEq("repo_name", repoInfo.Name), 109 - db.FilterEq("knot", repoInfo.Knot), 108 + db.FilterEq("repo_owner", repo.Did), 109 + db.FilterEq("repo_name", repo.Name), 110 + db.FilterEq("knot", repo.Knot), 110 111 db.FilterIn("sha", shas), 111 112 ) 112 113 if err != nil {