Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit 90a720a

Browse files
author
Noah Lee
authored
Refactorying the repos package (#333)
1 parent 43e816a commit 90a720a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+2034
-1564
lines changed

internal/server/api/v1/repos/api.go

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package repos
2+
3+
import "go.uber.org/zap"
4+
5+
type (
6+
API struct {
7+
// APIs used for talking to different parts of the entities.
8+
Repos *ReposAPI
9+
Commits *CommitsAPI
10+
Branches *BranchesAPI
11+
Tags *TagsAPI
12+
Deployments *DeploymentsAPI
13+
Config *ConfigAPI
14+
Reviews *ReviewsAPI
15+
DeploymentStatuses *DeploymentStatusesAPI
16+
Locks *LocksAPI
17+
Perms *PermsAPI
18+
}
19+
20+
APIConfig struct {
21+
Interactor
22+
23+
WebhookURL string
24+
WebhookSSL bool
25+
WebhookSecret string
26+
}
27+
28+
service struct {
29+
i Interactor
30+
log *zap.Logger
31+
}
32+
)
33+
34+
func NewAPI(c APIConfig) *API {
35+
i := c.Interactor
36+
log := zap.L().Named("repos")
37+
38+
api := &API{}
39+
api.Repos = &ReposAPI{
40+
service: service{i: i, log: log},
41+
WebhookURL: c.WebhookURL,
42+
WebhookSSL: c.WebhookSSL,
43+
WebhookSecret: c.WebhookSecret,
44+
}
45+
api.Commits = &CommitsAPI{i: i, log: log.Named("commits")}
46+
api.Branches = &BranchesAPI{i: i, log: log.Named("branches")}
47+
api.Tags = &TagsAPI{i: i, log: log.Named("tags")}
48+
api.Deployments = &DeploymentsAPI{i: i, log: log.Named("deployments")}
49+
api.Config = &ConfigAPI{i: i, log: log.Named("config")}
50+
api.Reviews = &ReviewsAPI{i: i, log: log.Named("reviews")}
51+
api.DeploymentStatuses = &DeploymentStatusesAPI{i: i, log: log.Named("deployment_statuses")}
52+
api.Locks = &LocksAPI{i: i, log: log.Named("locks")}
53+
api.Perms = &PermsAPI{i: i, log: log.Named("perms")}
54+
55+
return api
56+
}
Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,5 @@
11
package repos
22

3-
import (
4-
"net/http"
5-
6-
"github.com/gin-gonic/gin"
7-
"go.uber.org/zap"
8-
9-
gb "github.com/gitploy-io/gitploy/internal/server/global"
10-
"github.com/gitploy-io/gitploy/model/ent"
3+
type (
4+
BranchesAPI service
115
)
12-
13-
func (r *Repo) ListBranches(c *gin.Context) {
14-
ctx := c.Request.Context()
15-
16-
var (
17-
page = c.DefaultQuery("page", "1")
18-
perPage = c.DefaultQuery("per_page", "30")
19-
)
20-
21-
uv, _ := c.Get(gb.KeyUser)
22-
u := uv.(*ent.User)
23-
24-
rv, _ := c.Get(KeyRepo)
25-
repo := rv.(*ent.Repo)
26-
27-
branches, err := r.i.ListBranches(ctx, u, repo, atoi(page), atoi(perPage))
28-
if err != nil {
29-
r.log.Check(gb.GetZapLogLevel(err), "Failed to list branches.").Write(zap.Error(err))
30-
gb.ResponseWithError(c, err)
31-
return
32-
}
33-
34-
gb.Response(c, http.StatusOK, branches)
35-
}
36-
37-
func (r *Repo) GetBranch(c *gin.Context) {
38-
var (
39-
branch = c.Param("branch")
40-
)
41-
ctx := c.Request.Context()
42-
43-
uv, _ := c.Get(gb.KeyUser)
44-
u := uv.(*ent.User)
45-
46-
rv, _ := c.Get(KeyRepo)
47-
repo := rv.(*ent.Repo)
48-
49-
b, err := r.i.GetBranch(ctx, u, repo, branch)
50-
if err != nil {
51-
r.log.Check(gb.GetZapLogLevel(err), "Failed to get the branch.").Write(zap.Error(err))
52-
gb.ResponseWithError(c, err)
53-
return
54-
}
55-
56-
gb.Response(c, http.StatusOK, b)
57-
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package repos
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/gin-gonic/gin"
7+
"go.uber.org/zap"
8+
9+
gb "github.com/gitploy-io/gitploy/internal/server/global"
10+
"github.com/gitploy-io/gitploy/model/ent"
11+
)
12+
13+
func (s *BranchesAPI) Get(c *gin.Context) {
14+
ctx := c.Request.Context()
15+
16+
var (
17+
branch = c.Param("branch")
18+
)
19+
20+
uv, _ := c.Get(gb.KeyUser)
21+
u := uv.(*ent.User)
22+
23+
rv, _ := c.Get(KeyRepo)
24+
repo := rv.(*ent.Repo)
25+
26+
b, err := s.i.GetBranch(ctx, u, repo, branch)
27+
if err != nil {
28+
s.log.Check(gb.GetZapLogLevel(err), "Failed to get the branch.").Write(zap.Error(err))
29+
gb.ResponseWithError(c, err)
30+
return
31+
}
32+
33+
gb.Response(c, http.StatusOK, b)
34+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package repos
2+
3+
import (
4+
"net/http"
5+
"strconv"
6+
7+
"github.com/gin-gonic/gin"
8+
"go.uber.org/zap"
9+
10+
gb "github.com/gitploy-io/gitploy/internal/server/global"
11+
"github.com/gitploy-io/gitploy/model/ent"
12+
"github.com/gitploy-io/gitploy/pkg/e"
13+
)
14+
15+
func (s *BranchesAPI) List(c *gin.Context) {
16+
ctx := c.Request.Context()
17+
18+
var (
19+
page int
20+
perPage int
21+
err error
22+
)
23+
24+
// Validate quries
25+
if page, err = strconv.Atoi(c.DefaultQuery("page", defaultQueryPage)); err != nil {
26+
s.log.Warn("Invalid parameter: page is not integer.", zap.Error(err))
27+
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
28+
return
29+
}
30+
31+
if perPage, err = strconv.Atoi(c.DefaultQuery("per_page", defaultQueryPerPage)); err != nil {
32+
s.log.Warn("Invalid parameter: per_page is not integer.", zap.Error(err))
33+
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
34+
return
35+
}
36+
37+
uv, _ := c.Get(gb.KeyUser)
38+
u := uv.(*ent.User)
39+
40+
rv, _ := c.Get(KeyRepo)
41+
repo := rv.(*ent.Repo)
42+
43+
branches, err := s.i.ListBranches(ctx, u, repo, page, perPage)
44+
if err != nil {
45+
s.log.Check(gb.GetZapLogLevel(err), "Failed to list branches.").Write(zap.Error(err))
46+
gb.ResponseWithError(c, err)
47+
return
48+
}
49+
50+
gb.Response(c, http.StatusOK, branches)
51+
}
Lines changed: 2 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,102 +1,5 @@
11
package repos
22

3-
import (
4-
"net/http"
5-
6-
"github.com/gin-gonic/gin"
7-
gb "github.com/gitploy-io/gitploy/internal/server/global"
8-
"github.com/gitploy-io/gitploy/model/ent"
9-
"github.com/gitploy-io/gitploy/model/extent"
10-
"go.uber.org/zap"
3+
type (
4+
CommitsAPI service
115
)
12-
13-
func (r *Repo) ListCommits(c *gin.Context) {
14-
var (
15-
branch = c.Query("branch")
16-
page = c.DefaultQuery("page", "1")
17-
perPage = c.DefaultQuery("per_page", "30")
18-
)
19-
20-
ctx := c.Request.Context()
21-
22-
uv, _ := c.Get(gb.KeyUser)
23-
u := uv.(*ent.User)
24-
25-
rv, _ := c.Get(KeyRepo)
26-
repo := rv.(*ent.Repo)
27-
28-
commits, err := r.i.ListCommits(ctx, u, repo, branch, atoi(page), atoi(perPage))
29-
if err != nil {
30-
r.log.Check(gb.GetZapLogLevel(err), "Failed to list commits.").Write(zap.Error(err))
31-
gb.ResponseWithError(c, err)
32-
return
33-
}
34-
35-
gb.Response(c, http.StatusOK, commits)
36-
}
37-
38-
func (r *Repo) GetCommit(c *gin.Context) {
39-
var (
40-
sha = c.Param("sha")
41-
)
42-
43-
ctx := c.Request.Context()
44-
45-
uv, _ := c.Get(gb.KeyUser)
46-
u := uv.(*ent.User)
47-
48-
rv, _ := c.Get(KeyRepo)
49-
repo := rv.(*ent.Repo)
50-
51-
commit, err := r.i.GetCommit(ctx, u, repo, sha)
52-
if err != nil {
53-
r.log.Check(gb.GetZapLogLevel(err), "Failed to get the commit.").Write(zap.Error(err))
54-
gb.ResponseWithError(c, err)
55-
return
56-
}
57-
58-
gb.Response(c, http.StatusOK, commit)
59-
}
60-
61-
func (r *Repo) ListStatuses(c *gin.Context) {
62-
var (
63-
sha = c.Param("sha")
64-
)
65-
66-
ctx := c.Request.Context()
67-
68-
uv, _ := c.Get(gb.KeyUser)
69-
u := uv.(*ent.User)
70-
71-
rv, _ := c.Get(KeyRepo)
72-
repo := rv.(*ent.Repo)
73-
74-
ss, err := r.i.ListCommitStatuses(ctx, u, repo, sha)
75-
if err != nil {
76-
r.log.Check(gb.GetZapLogLevel(err), "Failed to list commit statuses.").Write(zap.Error(err))
77-
gb.ResponseWithError(c, err)
78-
return
79-
}
80-
81-
gb.Response(c, http.StatusOK, map[string]interface{}{
82-
"state": mergeState(ss),
83-
"statuses": ss,
84-
})
85-
}
86-
87-
func mergeState(ss []*extent.Status) string {
88-
// The state is failure if one of them is failure.
89-
for _, s := range ss {
90-
if s.State == extent.StatusStateFailure || s.State == extent.StatusStateCancelled {
91-
return string(extent.StatusStateFailure)
92-
}
93-
}
94-
95-
for _, s := range ss {
96-
if s.State == extent.StatusStatePending {
97-
return string(extent.StatusStatePending)
98-
}
99-
}
100-
101-
return string(extent.StatusStateSuccess)
102-
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package repos
2+
3+
import (
4+
"net/http"
5+
6+
"github.com/gin-gonic/gin"
7+
gb "github.com/gitploy-io/gitploy/internal/server/global"
8+
"github.com/gitploy-io/gitploy/model/ent"
9+
"go.uber.org/zap"
10+
)
11+
12+
func (s *CommitsAPI) Get(c *gin.Context) {
13+
ctx := c.Request.Context()
14+
15+
var (
16+
sha = c.Param("sha")
17+
)
18+
19+
uv, _ := c.Get(gb.KeyUser)
20+
u := uv.(*ent.User)
21+
22+
rv, _ := c.Get(KeyRepo)
23+
repo := rv.(*ent.Repo)
24+
25+
commit, err := s.i.GetCommit(ctx, u, repo, sha)
26+
if err != nil {
27+
s.log.Check(gb.GetZapLogLevel(err), "Failed to get the commit.").Write(zap.Error(err))
28+
gb.ResponseWithError(c, err)
29+
return
30+
}
31+
32+
gb.Response(c, http.StatusOK, commit)
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package repos
2+
3+
import (
4+
"net/http"
5+
"strconv"
6+
7+
"github.com/gin-gonic/gin"
8+
"go.uber.org/zap"
9+
10+
gb "github.com/gitploy-io/gitploy/internal/server/global"
11+
"github.com/gitploy-io/gitploy/model/ent"
12+
"github.com/gitploy-io/gitploy/pkg/e"
13+
)
14+
15+
func (s *CommitsAPI) List(c *gin.Context) {
16+
ctx := c.Request.Context()
17+
18+
var (
19+
branch = c.Query("branch")
20+
page int
21+
perPage int
22+
err error
23+
)
24+
25+
// Validate quries
26+
if page, err = strconv.Atoi(c.DefaultQuery("page", defaultQueryPage)); err != nil {
27+
s.log.Warn("Invalid parameter: page is not integer.", zap.Error(err))
28+
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
29+
return
30+
}
31+
32+
if perPage, err = strconv.Atoi(c.DefaultQuery("per_page", defaultQueryPerPage)); err != nil {
33+
s.log.Warn("Invalid parameter: per_page is not integer.", zap.Error(err))
34+
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
35+
return
36+
}
37+
38+
uv, _ := c.Get(gb.KeyUser)
39+
u := uv.(*ent.User)
40+
41+
rv, _ := c.Get(KeyRepo)
42+
repo := rv.(*ent.Repo)
43+
44+
commits, err := s.i.ListCommits(ctx, u, repo, branch, page, perPage)
45+
if err != nil {
46+
s.log.Check(gb.GetZapLogLevel(err), "Failed to list commits.").Write(zap.Error(err))
47+
gb.ResponseWithError(c, err)
48+
return
49+
}
50+
51+
gb.Response(c, http.StatusOK, commits)
52+
}

0 commit comments

Comments
 (0)