This repository was archived by the owner on May 30, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathdeployment_change.go
70 lines (57 loc) · 1.86 KB
/
deployment_change.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package repos
import (
"context"
"net/http"
"strconv"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
i "github.com/gitploy-io/gitploy/internal/interactor"
gb "github.com/gitploy-io/gitploy/internal/server/global"
"github.com/gitploy-io/gitploy/model/ent"
"github.com/gitploy-io/gitploy/pkg/e"
)
func (s *DeploymentAPI) ListChanges(c *gin.Context) {
var (
number int
page int
perPage int
err error
)
if number, err = strconv.Atoi(c.Param("number")); err != nil {
s.log.Warn("Invalid parameter: number must be integer.", zap.Error(err))
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
return
}
if page, err = strconv.Atoi(c.DefaultQuery("page", defaultQueryPage)); err != nil {
s.log.Warn("Invalid parameter: page is not integer.", zap.Error(err))
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
return
}
if perPage, err = strconv.Atoi(c.DefaultQuery("per_page", defaultQueryPerPage)); err != nil {
s.log.Warn("Invalid parameter: per_page is not integer.", zap.Error(err))
gb.ResponseWithError(c, e.NewError(e.ErrorCodeParameterInvalid, err))
return
}
vu, _ := c.Get(gb.KeyUser)
u := vu.(*ent.User)
vr, _ := c.Get(KeyRepo)
re := vr.(*ent.Repo)
ctx := context.WithValue(c.Request.Context(), i.KeyUser, u)
d, err := s.i.FindDeploymentOfRepoByNumber(ctx, re, number)
if err != nil {
s.log.Warn("Failed to find the deployment.", zap.Error(err))
gb.ResponseWithError(c, err)
return
}
commits, err := s.i.CompareCommitsFromLastestDeployment(ctx, re, d, &i.ListOptions{
Page: page,
PerPage: perPage,
})
if err != nil {
s.log.Check(gb.GetZapLogLevel(err), "Failed to compare two commits.").Write(zap.Error(err))
gb.ResponseWithError(c, err)
return
}
s.log.Info("Get the changed commits for the deployment.", zap.Int("number", number))
gb.Response(c, http.StatusOK, commits)
}