diff --git a/server/api/badge.go b/server/api/badge.go index 8a89161bc..5729e8033 100644 --- a/server/api/badge.go +++ b/server/api/badge.go @@ -38,10 +38,8 @@ var ( ) func GetBadge(c *gin.Context) { - repo, err := store.GetRepoOwnerName(c, - c.Param("owner"), - c.Param("name"), - ) + store_ := store.FromContext(c) + repo, err := store_.GetRepoName(c.Param("owner") + "/" + c.Param("name")) if err != nil { c.AbortWithStatus(404) return @@ -59,7 +57,7 @@ func GetBadge(c *gin.Context) { branch = repo.Branch } - build, err := store.GetBuildLast(c, repo, branch) + build, err := store_.GetBuildLast(repo, branch) if err != nil { log.Warn().Err(err).Msg("") c.String(200, badgeNone) @@ -81,16 +79,14 @@ func GetBadge(c *gin.Context) { } func GetCC(c *gin.Context) { - repo, err := store.GetRepoOwnerName(c, - c.Param("owner"), - c.Param("name"), - ) + store_ := store.FromContext(c) + repo, err := store_.GetRepoName(c.Param("owner") + "/" + c.Param("name")) if err != nil { c.AbortWithStatus(404) return } - builds, err := store.GetBuildList(c, repo, 1) + builds, err := store_.GetBuildList(repo, 1) if err != nil || len(builds) == 0 { c.AbortWithStatus(404) return diff --git a/server/api/build.go b/server/api/build.go index 27e4713f3..1fa3621d5 100644 --- a/server/api/build.go +++ b/server/api/build.go @@ -46,7 +46,7 @@ func GetBuilds(c *gin.Context) { return } - builds, err := store.GetBuildList(c, repo, page) + builds, err := store.FromContext(c).GetBuildList(repo, page) if err != nil { c.AbortWithStatus(http.StatusInternalServerError) return @@ -55,6 +55,7 @@ func GetBuilds(c *gin.Context) { } func GetBuild(c *gin.Context) { + store_ := store.FromContext(c) if c.Param("number") == "latest" { GetBuildLast(c) return @@ -67,13 +68,13 @@ func GetBuild(c *gin.Context) { return } - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } - files, _ := store.FromContext(c).FileList(build) - procs, _ := store.FromContext(c).ProcList(build) + files, _ := store_.FileList(build) + procs, _ := store_.ProcList(build) build.Procs = model.Tree(procs) build.Files = files @@ -81,21 +82,23 @@ func GetBuild(c *gin.Context) { } func GetBuildLast(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) branch := c.DefaultQuery("branch", repo.Branch) - build, err := store.GetBuildLast(c, repo, branch) + build, err := store_.GetBuildLast(repo, branch) if err != nil { c.String(http.StatusInternalServerError, err.Error()) return } - procs, _ := store.FromContext(c).ProcList(build) + procs, _ := store_.ProcList(build) build.Procs = model.Tree(procs) c.JSON(http.StatusOK, build) } func GetBuildLogs(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) // parse the build number and job sequence number from @@ -104,19 +107,19 @@ func GetBuildLogs(c *gin.Context) { ppid, _ := strconv.Atoi(c.Params.ByName("pid")) name := c.Params.ByName("proc") - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(404, err) return } - proc, err := store.FromContext(c).ProcChild(build, ppid, name) + proc, err := store_.ProcChild(build, ppid, name) if err != nil { c.AbortWithError(404, err) return } - rc, err := store.FromContext(c).LogFind(proc) + rc, err := store_.LogFind(proc) if err != nil { c.AbortWithError(404, err) return @@ -129,6 +132,7 @@ func GetBuildLogs(c *gin.Context) { } func GetProcLogs(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) // parse the build number and job sequence number from @@ -136,19 +140,19 @@ func GetProcLogs(c *gin.Context) { num, _ := strconv.Atoi(c.Params.ByName("number")) pid, _ := strconv.Atoi(c.Params.ByName("pid")) - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(404, err) return } - proc, err := store.FromContext(c).ProcFind(build, pid) + proc, err := store_.ProcFind(build, pid) if err != nil { c.AbortWithError(404, err) return } - rc, err := store.FromContext(c).LogFind(proc) + rc, err := store_.LogFind(proc) if err != nil { c.AbortWithError(404, err) return @@ -162,16 +166,17 @@ func GetProcLogs(c *gin.Context) { // DeleteBuild cancels a build func DeleteBuild(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) num, _ := strconv.Atoi(c.Params.ByName("number")) - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { _ = c.AbortWithError(404, err) return } - procs, err := store.FromContext(c).ProcList(build) + procs, err := store_.ProcList(build) if err != nil { _ = c.AbortWithError(404, err) return @@ -207,18 +212,18 @@ func DeleteBuild(c *gin.Context) { for _, proc := range procs { if proc.State == model.StatusPending { if proc.PPID != 0 { - if _, err = shared.UpdateProcToStatusSkipped(store.FromContext(c), *proc, 0); err != nil { + if _, err = shared.UpdateProcToStatusSkipped(store_, *proc, 0); err != nil { log.Error().Msgf("error: done: cannot update proc_id %d state: %s", proc.ID, err) } } else { - if _, err = shared.UpdateProcToStatusKilled(store.FromContext(c), *proc); err != nil { + if _, err = shared.UpdateProcToStatusKilled(store_, *proc); err != nil { log.Error().Msgf("error: done: cannot update proc_id %d state: %s", proc.ID, err) } } } } - killedBuild, err := shared.UpdateToStatusKilled(store.FromContext(c), *build) + killedBuild, err := shared.UpdateToStatusKilled(store_, *build) if err != nil { c.AbortWithError(500, err) return @@ -227,7 +232,7 @@ func DeleteBuild(c *gin.Context) { // For pending builds, we stream the UI the latest state. // For running builds, the UI will be updated when the agents acknowledge the cancel if build.Status == model.StatusPending { - procs, err = store.FromContext(c).ProcList(killedBuild) + procs, err = store_.ProcList(killedBuild) if err != nil { c.AbortWithError(404, err) return @@ -242,6 +247,7 @@ func DeleteBuild(c *gin.Context) { func PostApproval(c *gin.Context) { var ( remote_ = remote.FromContext(c) + store_ = store.FromContext(c) repo = session.Repo(c) user = session.User(c) num, _ = strconv.Atoi( @@ -249,7 +255,7 @@ func PostApproval(c *gin.Context) { ) ) - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(404, err) return @@ -273,7 +279,7 @@ func PostApproval(c *gin.Context) { return } - if build, err = shared.UpdateToStatusPending(store.FromContext(c), *build, user.Login); err != nil { + if build, err = shared.UpdateToStatusPending(store_, *build, user.Login); err != nil { c.String(500, "error updating build. %s", err) return } @@ -282,7 +288,7 @@ func PostApproval(c *gin.Context) { // get the previous build so that we can send // on status change notifications - last, _ := store.GetBuildLastBefore(c, repo, build.Branch, build.ID) + last, _ := store_.GetBuildLastBefore(repo, build.Branch, build.ID) secs, err := server.Config.Services.Secrets.SecretListBuild(repo, build) if err != nil { log.Debug().Msgf("Error getting secrets for %s#%d. %s", repo.FullName, build.Number, err) @@ -317,14 +323,14 @@ func PostApproval(c *gin.Context) { } buildItems, err := b.Build() if err != nil { - if _, err = shared.UpdateToStatusError(store.FromContext(c), *build, err); err != nil { + if _, err = shared.UpdateToStatusError(store_, *build, err); err != nil { log.Error().Msgf("Error setting error status of build for %s#%d. %s", repo.FullName, build.Number, err) } return } build = shared.SetBuildStepsOnBuild(b.Curr, buildItems) - err = store.FromContext(c).ProcCreate(build.Procs) + err = store_.ProcCreate(build.Procs) if err != nil { log.Error().Msgf("error persisting procs %s/%d: %s", repo.FullName, build.Number, err) } @@ -350,14 +356,16 @@ func PostApproval(c *gin.Context) { func PostDecline(c *gin.Context) { var ( remote_ = remote.FromContext(c) - repo = session.Repo(c) - user = session.User(c) - num, _ = strconv.Atoi( + store_ = store.FromContext(c) + + repo = session.Repo(c) + user = session.User(c) + num, _ = strconv.Atoi( c.Params.ByName("number"), ) ) - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(404, err) return @@ -367,7 +375,7 @@ func PostDecline(c *gin.Context) { return } - if _, err = shared.UpdateToStatusDeclined(store.FromContext(c), *build, user.Login); err != nil { + if _, err = shared.UpdateToStatusDeclined(store_, *build, user.Login); err != nil { c.String(500, "error updating build. %s", err) return } @@ -382,7 +390,7 @@ func PostDecline(c *gin.Context) { } func GetBuildQueue(c *gin.Context) { - out, err := store.GetBuildQueue(c) + out, err := store.FromContext(c).GetBuildQueue() if err != nil { c.String(500, "Error getting build queue. %s", err) return @@ -393,6 +401,7 @@ func GetBuildQueue(c *gin.Context) { // PostBuild restarts a build func PostBuild(c *gin.Context) { remote_ := remote.FromContext(c) + store_ := store.FromContext(c) repo := session.Repo(c) num, err := strconv.Atoi(c.Param("number")) @@ -401,14 +410,14 @@ func PostBuild(c *gin.Context) { return } - user, err := store.GetUser(c, repo.UserID) + user, err := store_.GetUser(repo.UserID) if err != nil { log.Error().Msgf("failure to find repo owner %s. %s", repo.FullName, err) c.AbortWithError(500, err) return } - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { log.Error().Msgf("failure to get build %d. %s", num, err) c.AbortWithError(404, err) @@ -428,7 +437,7 @@ func PostBuild(c *gin.Context) { if refresher, ok := remote_.(remote.Refresher); ok { ok, _ := refresher.Refresh(c, user) if ok { - store.UpdateUser(c, user) + store_.UpdateUser(user) } } @@ -465,7 +474,7 @@ func PostBuild(c *gin.Context) { build.Event = event } - err = store.CreateBuild(c, build) + err = store_.CreateBuild(build) if err != nil { c.String(500, err.Error()) return @@ -492,7 +501,7 @@ func PostBuild(c *gin.Context) { // get the previous build so that we can send // on status change notifications - last, _ := store.GetBuildLastBefore(c, repo, build.Branch, build.ID) + last, _ := store_.GetBuildLastBefore(repo, build.Branch, build.ID) secs, err := server.Config.Services.Secrets.SecretListBuild(repo, build) if err != nil { log.Debug().Msgf("Error getting secrets for %s#%d. %s", repo.FullName, build.Number, err) @@ -535,7 +544,7 @@ func PostBuild(c *gin.Context) { } build = shared.SetBuildStepsOnBuild(b.Curr, buildItems) - err = store.FromContext(c).ProcCreate(build.Procs) + err = store_.ProcCreate(build.Procs) if err != nil { log.Error().Msgf("cannot restart %s#%d: %s", repo.FullName, build.Number, err) build.Status = model.StatusError @@ -552,17 +561,19 @@ func PostBuild(c *gin.Context) { } func DeleteBuildLogs(c *gin.Context) { + store_ := store.FromContext(c) + repo := session.Repo(c) user := session.User(c) num, _ := strconv.Atoi(c.Params.ByName("number")) - build, err := store.GetBuildNumber(c, repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(404, err) return } - procs, err := store.FromContext(c).ProcList(build) + procs, err := store_.ProcList(build) if err != nil { c.AbortWithError(404, err) return @@ -577,7 +588,7 @@ func DeleteBuildLogs(c *gin.Context) { for _, proc := range procs { t := time.Now().UTC() buf := bytes.NewBufferString(fmt.Sprintf(deleteStr, proc.Name, user.Login, t.Format(time.UnixDate))) - lerr := store.FromContext(c).LogSave(proc, buf) + lerr := store_.LogSave(proc, buf) if lerr != nil { err = lerr } diff --git a/server/api/file.go b/server/api/file.go index e5cf0020a..57ac5e2f6 100644 --- a/server/api/file.go +++ b/server/api/file.go @@ -28,6 +28,7 @@ import ( // FileList gets a list file by build. func FileList(c *gin.Context) { + store_ := store.FromContext(c) num, err := strconv.Atoi(c.Param("number")) if err != nil { c.AbortWithError(http.StatusBadRequest, err) @@ -35,13 +36,13 @@ func FileList(c *gin.Context) { } repo := session.Repo(c) - build, err := store.FromContext(c).GetBuildNumber(repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } - files, err := store.FromContext(c).FileList(build) + files, err := store_.FileList(build) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -53,6 +54,8 @@ func FileList(c *gin.Context) { // FileGet gets a file by process and name func FileGet(c *gin.Context) { var ( + store_ = store.FromContext(c) + repo = session.Repo(c) name = strings.TrimPrefix(c.Param("file"), "/") raw = func() bool { @@ -72,19 +75,19 @@ func FileGet(c *gin.Context) { return } - build, err := store.FromContext(c).GetBuildNumber(repo, num) + build, err := store_.GetBuildNumber(repo, num) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } - proc, err := store.FromContext(c).ProcFind(build, pid) + proc, err := store_.ProcFind(build, pid) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } - file, err := store.FromContext(c).FileFind(proc, name) + file, err := store_.FileFind(proc, name) if err != nil { c.String(404, "Error getting file %q. %s", name, err) return @@ -95,7 +98,7 @@ func FileGet(c *gin.Context) { return } - rc, err := store.FromContext(c).FileRead(proc, file.Name) + rc, err := store_.FileRead(proc, file.Name) if err != nil { c.String(404, "Error getting file stream %q. %s", name, err) return diff --git a/server/api/hook.go b/server/api/hook.go index ac1dda230..c63300148 100644 --- a/server/api/hook.go +++ b/server/api/hook.go @@ -77,6 +77,7 @@ func BlockTilQueueHasRunningItem(c *gin.Context) { func PostHook(c *gin.Context) { remote_ := remote.FromContext(c) + store_ := store.FromContext(c) tmpRepo, build, err := remote_.Hook(c.Request) if err != nil { @@ -103,7 +104,7 @@ func PostHook(c *gin.Context) { return } - repo, err := store.GetRepoOwnerName(c, tmpRepo.Owner, tmpRepo.Name) + repo, err := store_.GetRepoName(tmpRepo.Owner + "/" + tmpRepo.Name) if err != nil { log.Error().Msgf("failure to find repo %s/%s from hook. %s", tmpRepo.Owner, tmpRepo.Name, err) c.AbortWithError(404, err) @@ -143,7 +144,7 @@ func PostHook(c *gin.Context) { return } - user, err := store.GetUser(c, repo.UserID) + user, err := store_.GetUser(repo.UserID) if err != nil { log.Error().Msgf("failure to find repo owner %s. %s", repo.FullName, err) c.AbortWithError(500, err) @@ -158,7 +159,7 @@ func PostHook(c *gin.Context) { if err != nil { log.Error().Msgf("failed to refresh oauth2 token: %s", err) } else if ok { - if err := store.UpdateUser(c, user); err != nil { + if err := store_.UpdateUser(user); err != nil { log.Error().Msgf("error while updating user: %s", err) // move forward } @@ -198,7 +199,7 @@ func PostHook(c *gin.Context) { build.Status = model.StatusBlocked } - err = store.CreateBuild(c, build, build.Procs...) + err = store_.CreateBuild(build, build.Procs...) if err != nil { log.Error().Msgf("failure to save commit for %s. %s", repo.FullName, err) c.AbortWithError(500, err) @@ -246,7 +247,7 @@ func PostHook(c *gin.Context) { } // get the previous build so that we can send status change notifications - last, _ := store.GetBuildLastBefore(c, repo, build.Branch, build.ID) + last, _ := store_.GetBuildLastBefore(repo, build.Branch, build.ID) b := shared.ProcBuilder{ Repo: repo, @@ -261,14 +262,14 @@ func PostHook(c *gin.Context) { } buildItems, err := b.Build() if err != nil { - if _, err = shared.UpdateToStatusError(store.FromContext(c), *build, err); err != nil { + if _, err = shared.UpdateToStatusError(store_, *build, err); err != nil { log.Error().Msgf("Error setting error status of build for %s#%d. %s", repo.FullName, build.Number, err) } return } build = shared.SetBuildStepsOnBuild(b.Curr, buildItems) - err = store.FromContext(c).ProcCreate(build.Procs) + err = store_.ProcCreate(build.Procs) if err != nil { log.Error().Msgf("error persisting procs %s/%d: %s", repo.FullName, build.Number, err) } diff --git a/server/api/login.go b/server/api/login.go index f174d9900..e3db26767 100644 --- a/server/api/login.go +++ b/server/api/login.go @@ -49,6 +49,7 @@ func HandleLogin(c *gin.Context) { } func HandleAuth(c *gin.Context) { + store_ := store.FromContext(c) // when dealing with redirects we may need to adjust the content type. I // cannot, however, remember why, so need to revisit this line. @@ -68,7 +69,7 @@ func HandleAuth(c *gin.Context) { config := ToConfig(c) // get the user from the database - u, err := store.GetUserLogin(c, tmpuser.Login) + u, err := store_.GetUserLogin(tmpuser.Login) if err != nil { // if self-registration is disabled we should return a not authorized error @@ -102,7 +103,7 @@ func HandleAuth(c *gin.Context) { } // insert the user into the database - if err := store.CreateUser(c, u); err != nil { + if err := store_.CreateUser(u); err != nil { log.Error().Msgf("cannot insert %s. %s", u.Login, err) c.Redirect(303, "/login?error=internal_error") return @@ -126,7 +127,7 @@ func HandleAuth(c *gin.Context) { } } - if err := store.UpdateUser(c, u); err != nil { + if err := store_.UpdateUser(u); err != nil { log.Error().Msgf("cannot update %s. %s", u.Login, err) c.Redirect(303, "/login?error=internal_error") return @@ -157,6 +158,8 @@ func GetLogout(c *gin.Context) { } func GetLoginToken(c *gin.Context) { + store_ := store.FromContext(c) + in := &tokenPayload{} err := c.Bind(in) if err != nil { @@ -170,7 +173,7 @@ func GetLoginToken(c *gin.Context) { return } - user, err := store.GetUserLogin(c, login) + user, err := store_.GetUserLogin(login) if err != nil { c.AbortWithError(http.StatusNotFound, err) return diff --git a/server/api/repo.go b/server/api/repo.go index 158627d75..855518623 100644 --- a/server/api/repo.go +++ b/server/api/repo.go @@ -32,7 +32,8 @@ import ( ) func PostRepo(c *gin.Context) { - r := remote.FromContext(c) + remote_ := remote.FromContext(c) + store_ := store.FromContext(c) user := session.User(c) repo := session.Repo(c) @@ -76,18 +77,18 @@ func PostRepo(c *gin.Context) { sig, ) - err = r.Activate(c, user, repo, link) + err = remote_.Activate(c, user, repo, link) if err != nil { c.String(500, err.Error()) return } - from, err := r.Repo(c, user, repo.Owner, repo.Name) + from, err := remote_.Repo(c, user, repo.Owner, repo.Name) if err == nil { repo.Update(from) } - err = store.UpdateRepo(c, repo) + err = store_.UpdateRepo(repo) if err != nil { c.String(500, err.Error()) return @@ -97,6 +98,7 @@ func PostRepo(c *gin.Context) { } func PatchRepo(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) user := session.User(c) @@ -139,7 +141,7 @@ func PatchRepo(c *gin.Context) { repo.Counter = *in.BuildCounter } - err := store.UpdateRepo(c, repo) + err := store_.UpdateRepo(repo) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -149,11 +151,12 @@ func PatchRepo(c *gin.Context) { } func ChownRepo(c *gin.Context) { + store_ := store.FromContext(c) repo := session.Repo(c) user := session.User(c) repo.UserID = user.ID - err := store.UpdateRepo(c, repo) + err := store_.UpdateRepo(repo) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -186,28 +189,30 @@ func GetRepoBranches(c *gin.Context) { func DeleteRepo(c *gin.Context) { remove, _ := strconv.ParseBool(c.Query("remove")) - r := remote.FromContext(c) + remote_ := remote.FromContext(c) + store_ := store.FromContext(c) + repo := session.Repo(c) user := session.User(c) repo.IsActive = false repo.UserID = 0 - err := store.UpdateRepo(c, repo) + err := store_.UpdateRepo(repo) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } if remove { - err := store.DeleteRepo(c, repo) + err := store_.DeleteRepo(repo) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } } - if err := r.Deactivate(c, user, repo, server.Config.Server.Host); err != nil { + if err := remote_.Deactivate(c, user, repo, server.Config.Server.Host); err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } @@ -215,7 +220,8 @@ func DeleteRepo(c *gin.Context) { } func RepairRepo(c *gin.Context) { - r := remote.FromContext(c) + remote_ := remote.FromContext(c) + store_ := store.FromContext(c) repo := session.Repo(c) user := session.User(c) @@ -235,14 +241,14 @@ func RepairRepo(c *gin.Context) { sig, ) - _ = r.Deactivate(c, user, repo, host) - err = r.Activate(c, user, repo, link) + _ = remote_.Deactivate(c, user, repo, host) + err = remote_.Activate(c, user, repo, link) if err != nil { c.String(500, err.Error()) return } - from, err := r.Repo(c, user, repo.Owner, repo.Name) + from, err := remote_.Repo(c, user, repo.Owner, repo.Name) if err == nil { repo.Name = from.Name repo.Owner = from.Owner @@ -254,14 +260,15 @@ func RepairRepo(c *gin.Context) { if repo.IsPrivate != from.IsPrivate { repo.ResetVisibility() } - store.UpdateRepo(c, repo) + store_.UpdateRepo(repo) } c.Writer.WriteHeader(http.StatusOK) } func MoveRepo(c *gin.Context) { - r := remote.FromContext(c) + remote_ := remote.FromContext(c) + store_ := store.FromContext(c) repo := session.Repo(c) user := session.User(c) @@ -278,7 +285,7 @@ func MoveRepo(c *gin.Context) { return } - from, err := r.Repo(c, user, owner, name) + from, err := remote_.Repo(c, user, owner, name) if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return @@ -299,7 +306,7 @@ func MoveRepo(c *gin.Context) { repo.ResetVisibility() } - errStore := store.UpdateRepo(c, repo) + errStore := store_.UpdateRepo(repo) if errStore != nil { c.AbortWithError(http.StatusInternalServerError, errStore) return @@ -322,8 +329,8 @@ func MoveRepo(c *gin.Context) { ) // TODO: check if we should handle that error - r.Deactivate(c, user, repo, host) - err = r.Activate(c, user, repo, link) + remote_.Deactivate(c, user, repo, host) + err = remote_.Activate(c, user, repo, link) if err != nil { c.String(500, err.Error()) return diff --git a/server/api/stream.go b/server/api/stream.go index 6ebaeb45f..8233e0170 100644 --- a/server/api/stream.go +++ b/server/api/stream.go @@ -133,37 +133,21 @@ func LogStreamSSE(c *gin.Context) { io.WriteString(rw, ": ping\n\n") flusher.Flush() - // repo := session.Repo(c) - // + repo := session.Repo(c) + store_ := store.FromContext(c) + // // parse the build number and job sequence number from // // the repquest parameter. - // num, _ := strconv.Atoi(c.Params.ByName("number")) - // ppid, _ := strconv.Atoi(c.Params.ByName("ppid")) - // name := c.Params.ByName("proc") - // - // build, err := store.GetBuildNumber(c, repo, num) - // if err != nil { - // c.AbortWithError(404, err) - // return - // } - // - // proc, err := store.FromContext(c).ProcChild(build, ppid, name) - // if err != nil { - // c.AbortWithError(404, err) - // return - // } - - repo := session.Repo(c) buildn, _ := strconv.Atoi(c.Param("build")) jobn, _ := strconv.Atoi(c.Param("number")) - build, err := store.GetBuildNumber(c, repo, buildn) + build, err := store_.GetBuildNumber(repo, buildn) if err != nil { log.Debug().Msgf("stream cannot get build number: %v", err) io.WriteString(rw, "event: error\ndata: build not found\n\n") return } - proc, err := store.FromContext(c).ProcFind(build, jobn) + proc, err := store_.ProcFind(build, jobn) if err != nil { log.Debug().Msgf("stream cannot get proc number: %v", err) io.WriteString(rw, "event: error\ndata: process not found\n\n") diff --git a/server/api/user.go b/server/api/user.go index df63199a5..f55f494a6 100644 --- a/server/api/user.go +++ b/server/api/user.go @@ -37,6 +37,9 @@ func GetSelf(c *gin.Context) { } func GetFeed(c *gin.Context) { + store_ := store.FromContext(c) + remote_ := remote.FromContext(c) + user := session.User(c) latest, _ := strconv.ParseBool(c.Query("latest")) @@ -44,14 +47,14 @@ func GetFeed(c *gin.Context) { log.Debug().Msgf("sync begin: %s", user.Login) user.Synced = time.Now().Unix() - store.FromContext(c).UpdateUser(user) + store_.UpdateUser(user) config := ToConfig(c) sync := shared.Syncer{ - Remote: remote.FromContext(c), - Store: store.FromContext(c), - Perms: store.FromContext(c), + Remote: remote_, + Store: store_, + Perms: store_, Match: shared.NamespaceFilter(config.OwnersWhitelist), } if err := sync.Sync(c, user); err != nil { @@ -62,7 +65,7 @@ func GetFeed(c *gin.Context) { } if latest { - feed, err := store.FromContext(c).RepoListLatest(user) + feed, err := store_.RepoListLatest(user) if err != nil { c.String(500, "Error fetching feed. %s", err) } else { @@ -71,7 +74,7 @@ func GetFeed(c *gin.Context) { return } - feed, err := store.FromContext(c).UserFeed(user) + feed, err := store_.UserFeed(user) if err != nil { c.String(500, "Error fetching user feed. %s", err) return @@ -80,23 +83,24 @@ func GetFeed(c *gin.Context) { } func GetRepos(c *gin.Context) { - var ( - user = session.User(c) - all, _ = strconv.ParseBool(c.Query("all")) - flush, _ = strconv.ParseBool(c.Query("flush")) - ) + store_ := store.FromContext(c) + remote_ := remote.FromContext(c) + + user := session.User(c) + all, _ := strconv.ParseBool(c.Query("all")) + flush, _ := strconv.ParseBool(c.Query("flush")) if flush || time.Unix(user.Synced, 0).Add(time.Hour*72).Before(time.Now()) { log.Debug().Msgf("sync begin: %s", user.Login) user.Synced = time.Now().Unix() - store.FromContext(c).UpdateUser(user) + store_.UpdateUser(user) config := ToConfig(c) sync := shared.Syncer{ - Remote: remote.FromContext(c), - Store: store.FromContext(c), - Perms: store.FromContext(c), + Remote: remote_, + Store: store_, + Perms: store_, Match: shared.NamespaceFilter(config.OwnersWhitelist), } @@ -107,7 +111,7 @@ func GetRepos(c *gin.Context) { } } - repos, err := store.FromContext(c).RepoList(user, true) + repos, err := store_.RepoList(user, true) if err != nil { c.String(500, "Error fetching repository list. %s", err) return @@ -138,11 +142,13 @@ func PostToken(c *gin.Context) { } func DeleteToken(c *gin.Context) { + store_ := store.FromContext(c) + user := session.User(c) user.Hash = base32.StdEncoding.EncodeToString( securecookie.GenerateRandomKey(32), ) - if err := store.UpdateUser(c, user); err != nil { + if err := store_.UpdateUser(user); err != nil { c.String(500, "Error revoking tokens. %s", err) return } diff --git a/server/api/users.go b/server/api/users.go index 52499be33..65c0a7805 100644 --- a/server/api/users.go +++ b/server/api/users.go @@ -26,7 +26,7 @@ import ( ) func GetUsers(c *gin.Context) { - users, err := store.GetUserList(c) + users, err := store.FromContext(c).GetUserList() if err != nil { c.String(500, "Error getting user list. %s", err) return @@ -35,7 +35,7 @@ func GetUsers(c *gin.Context) { } func GetUser(c *gin.Context) { - user, err := store.GetUserLogin(c, c.Param("login")) + user, err := store.FromContext(c).GetUserLogin(c.Param("login")) if err != nil { c.String(404, "Cannot find user. %s", err) return @@ -44,6 +44,8 @@ func GetUser(c *gin.Context) { } func PatchUser(c *gin.Context) { + store_ := store.FromContext(c) + in := &model.User{} err := c.Bind(in) if err != nil { @@ -51,14 +53,14 @@ func PatchUser(c *gin.Context) { return } - user, err := store.GetUserLogin(c, c.Param("login")) + user, err := store_.GetUserLogin(c.Param("login")) if err != nil { c.AbortWithStatus(http.StatusNotFound) return } user.Active = in.Active - err = store.UpdateUser(c, user) + err = store_.UpdateUser(user) if err != nil { c.AbortWithStatus(http.StatusConflict) return @@ -87,7 +89,7 @@ func PostUser(c *gin.Context) { c.String(http.StatusBadRequest, err.Error()) return } - if err = store.CreateUser(c, user); err != nil { + if err = store.FromContext(c).CreateUser(user); err != nil { c.String(http.StatusInternalServerError, err.Error()) return } @@ -95,12 +97,14 @@ func PostUser(c *gin.Context) { } func DeleteUser(c *gin.Context) { - user, err := store.GetUserLogin(c, c.Param("login")) + store_ := store.FromContext(c) + + user, err := store_.GetUserLogin(c.Param("login")) if err != nil { c.String(404, "Cannot find user. %s", err) return } - if err = store.DeleteUser(c, user); err != nil { + if err = store_.DeleteUser(user); err != nil { c.String(500, "Error deleting user. %s", err) return } diff --git a/server/router/middleware/session/repo.go b/server/router/middleware/session/repo.go index 5c2e346c1..18bef8e4a 100644 --- a/server/router/middleware/session/repo.go +++ b/server/router/middleware/session/repo.go @@ -42,12 +42,13 @@ func Repo(c *gin.Context) *model.Repo { func SetRepo() gin.HandlerFunc { return func(c *gin.Context) { var ( - owner = c.Param("owner") - name = c.Param("name") - user = User(c) + store_ = store.FromContext(c) + owner = c.Param("owner") + name = c.Param("name") + user = User(c) ) - repo, err := store.GetRepoOwnerName(c, owner, name) + repo, err := store_.GetRepoName(owner + "/" + name) if err == nil { c.Set("repo", repo) c.Next() @@ -83,6 +84,7 @@ func Perm(c *gin.Context) *model.Perm { func SetPerm() gin.HandlerFunc { return func(c *gin.Context) { + store_ := store.FromContext(c) user := User(c) repo := Repo(c) perm := new(model.Perm) @@ -90,7 +92,7 @@ func SetPerm() gin.HandlerFunc { switch { case user != nil: var err error - perm, err = store.FromContext(c).PermFind(user, repo) + perm, err = store_.PermFind(user, repo) if err != nil { log.Error().Msgf("Error fetching permission for %s %s. %s", user.Login, repo.FullName, err) @@ -102,7 +104,7 @@ func SetPerm() gin.HandlerFunc { perm.Repo = repo.FullName perm.UserID = user.ID perm.Synced = time.Now().Unix() - store.FromContext(c).PermUpsert(perm) + store_.PermUpsert(perm) } } } diff --git a/server/router/middleware/session/user.go b/server/router/middleware/session/user.go index b9f9d8f97..7ba287aa3 100644 --- a/server/router/middleware/session/user.go +++ b/server/router/middleware/session/user.go @@ -42,7 +42,7 @@ func SetUser() gin.HandlerFunc { t, err := token.ParseRequest(c.Request, func(t *token.Token) (string, error) { var err error - user, err = store.GetUserLogin(c, t.Text) + user, err = store.FromContext(c).GetUserLogin(t.Text) return user.Hash, err }) if err == nil { diff --git a/server/router/middleware/token/token.go b/server/router/middleware/token/token.go index c13391561..19baf4acc 100644 --- a/server/router/middleware/token/token.go +++ b/server/router/middleware/token/token.go @@ -55,7 +55,7 @@ func Refresh(c *gin.Context) { // database. ok, _ = refresher.Refresh(c, user) if ok { - err := store.UpdateUser(c, user) + err := store.FromContext(c).UpdateUser(user) if err != nil { // we only log the error at this time. not sure // if we really want to fail the request, do we? diff --git a/server/store/store.go b/server/store/store.go index 598980891..d7991fc1b 100644 --- a/server/store/store.go +++ b/server/store/store.go @@ -15,7 +15,6 @@ package store import ( - "context" "io" "github.com/woodpecker-ci/woodpecker/server/model" @@ -156,95 +155,3 @@ type Store interface { Ping() error } - -// GetUser gets a user by unique ID. -func GetUser(c context.Context, id int64) (*model.User, error) { - return FromContext(c).GetUser(id) -} - -// GetUserLogin gets a user by unique Login name. -func GetUserLogin(c context.Context, login string) (*model.User, error) { - return FromContext(c).GetUserLogin(login) -} - -// GetUserList gets a list of all users in the system. -func GetUserList(c context.Context) ([]*model.User, error) { - return FromContext(c).GetUserList() -} - -// GetUserCount gets a count of all users in the system. -func GetUserCount(c context.Context) (int, error) { - return FromContext(c).GetUserCount() -} - -func CreateUser(c context.Context, user *model.User) error { - return FromContext(c).CreateUser(user) -} - -func UpdateUser(c context.Context, user *model.User) error { - return FromContext(c).UpdateUser(user) -} - -func DeleteUser(c context.Context, user *model.User) error { - return FromContext(c).DeleteUser(user) -} - -func GetRepo(c context.Context, id int64) (*model.Repo, error) { - return FromContext(c).GetRepo(id) -} - -func GetRepoName(c context.Context, name string) (*model.Repo, error) { - return FromContext(c).GetRepoName(name) -} - -func GetRepoOwnerName(c context.Context, owner, name string) (*model.Repo, error) { - return FromContext(c).GetRepoName(owner + "/" + name) -} - -func CreateRepo(c context.Context, repo *model.Repo) error { - return FromContext(c).CreateRepo(repo) -} - -func UpdateRepo(c context.Context, repo *model.Repo) error { - return FromContext(c).UpdateRepo(repo) -} - -func DeleteRepo(c context.Context, repo *model.Repo) error { - return FromContext(c).DeleteRepo(repo) -} - -func GetBuild(c context.Context, id int64) (*model.Build, error) { - return FromContext(c).GetBuild(id) -} - -func GetBuildNumber(c context.Context, repo *model.Repo, num int) (*model.Build, error) { - return FromContext(c).GetBuildNumber(repo, num) -} - -func GetBuildRef(c context.Context, repo *model.Repo, ref string) (*model.Build, error) { - return FromContext(c).GetBuildRef(repo, ref) -} - -func GetBuildCommit(c context.Context, repo *model.Repo, sha, branch string) (*model.Build, error) { - return FromContext(c).GetBuildCommit(repo, sha, branch) -} - -func GetBuildLast(c context.Context, repo *model.Repo, branch string) (*model.Build, error) { - return FromContext(c).GetBuildLast(repo, branch) -} - -func GetBuildLastBefore(c context.Context, repo *model.Repo, branch string, number int64) (*model.Build, error) { - return FromContext(c).GetBuildLastBefore(repo, branch, number) -} - -func GetBuildList(c context.Context, repo *model.Repo, page int) ([]*model.Build, error) { - return FromContext(c).GetBuildList(repo, page) -} - -func GetBuildQueue(c context.Context) ([]*model.Feed, error) { - return FromContext(c).GetBuildQueue() -} - -func CreateBuild(c context.Context, build *model.Build, procs ...*model.Proc) error { - return FromContext(c).CreateBuild(build, procs...) -}