mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-03-18 01:35:57 +01:00
Another round of db.DefaultContext
refactor (#27103)
Part of #27065 --------- Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
This commit is contained in:
parent
93bd4351bf
commit
7047df36d4
109 changed files with 353 additions and 306 deletions
cmd
models
activities
asymkey
issues
issue_index.goissue_stats.goissue_test.gopull.goreaction.goreaction_test.goreview_list.goreview_test.go
organization
repo
system
user
modules
routers
api
packages
alpine
cargo
chef
composer
conan
conda
container
cran
debian
generic
goproxy
helm
maven
npm
nuget
pub
pypi
rpm
rubygems
swift
vagrant
v1
web
services
asymkey
auth
context
convert
cron
externalaccount
migrations
mirror
packages
|
@ -389,7 +389,7 @@ func runRepoSyncReleases(_ *cli.Context) error {
|
||||||
}
|
}
|
||||||
log.Trace(" currentNumReleases is %d, running SyncReleasesWithTags", oldnum)
|
log.Trace(" currentNumReleases is %d, running SyncReleasesWithTags", oldnum)
|
||||||
|
|
||||||
if err = repo_module.SyncReleasesWithTags(repo, gitRepo); err != nil {
|
if err = repo_module.SyncReleasesWithTags(ctx, repo, gitRepo); err != nil {
|
||||||
log.Warn(" SyncReleasesWithTags: %v", err)
|
log.Warn(" SyncReleasesWithTags: %v", err)
|
||||||
gitRepo.Close()
|
gitRepo.Close()
|
||||||
continue
|
continue
|
||||||
|
@ -438,7 +438,7 @@ func runRegenerateKeys(_ *cli.Context) error {
|
||||||
if err := initDB(ctx); err != nil {
|
if err := initDB(ctx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return asymkey_model.RewriteAllPublicKeys()
|
return asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseOAuth2Config(c *cli.Context) *oauth2.Source {
|
func parseOAuth2Config(c *cli.Context) *oauth2.Source {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/packages"
|
"code.gitea.io/gitea/models/packages"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
@ -30,7 +31,7 @@ func TestMigratePackages(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer buf.Close()
|
defer buf.Close()
|
||||||
|
|
||||||
v, f, err := packages_service.CreatePackageAndAddFile(&packages_service.PackageCreationInfo{
|
v, f, err := packages_service.CreatePackageAndAddFile(db.DefaultContext, &packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: creator,
|
Owner: creator,
|
||||||
PackageType: packages.TypeGeneric,
|
PackageType: packages.TypeGeneric,
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
package activities
|
package activities
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
@ -18,16 +20,16 @@ type UserHeatmapData struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUserHeatmapDataByUser returns an array of UserHeatmapData
|
// GetUserHeatmapDataByUser returns an array of UserHeatmapData
|
||||||
func GetUserHeatmapDataByUser(user, doer *user_model.User) ([]*UserHeatmapData, error) {
|
func GetUserHeatmapDataByUser(ctx context.Context, user, doer *user_model.User) ([]*UserHeatmapData, error) {
|
||||||
return getUserHeatmapData(user, nil, doer)
|
return getUserHeatmapData(ctx, user, nil, doer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetUserHeatmapDataByUserTeam returns an array of UserHeatmapData
|
// GetUserHeatmapDataByUserTeam returns an array of UserHeatmapData
|
||||||
func GetUserHeatmapDataByUserTeam(user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
|
func GetUserHeatmapDataByUserTeam(ctx context.Context, user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
|
||||||
return getUserHeatmapData(user, team, doer)
|
return getUserHeatmapData(ctx, user, team, doer)
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserHeatmapData(user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
|
func getUserHeatmapData(ctx context.Context, user *user_model.User, team *organization.Team, doer *user_model.User) ([]*UserHeatmapData, error) {
|
||||||
hdata := make([]*UserHeatmapData, 0)
|
hdata := make([]*UserHeatmapData, 0)
|
||||||
|
|
||||||
if !ActivityReadable(user, doer) {
|
if !ActivityReadable(user, doer) {
|
||||||
|
@ -60,7 +62,7 @@ func getUserHeatmapData(user *user_model.User, team *organization.Team, doer *us
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return hdata, db.GetEngine(db.DefaultContext).
|
return hdata, db.GetEngine(ctx).
|
||||||
Select(groupBy+" AS timestamp, count(user_id) as contributions").
|
Select(groupBy+" AS timestamp, count(user_id) as contributions").
|
||||||
Table("action").
|
Table("action").
|
||||||
Where(cond).
|
Where(cond).
|
||||||
|
|
|
@ -83,7 +83,7 @@ func TestGetUserHeatmapDataByUser(t *testing.T) {
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Get the heatmap and compare
|
// Get the heatmap and compare
|
||||||
heatmap, err := activities_model.GetUserHeatmapDataByUser(user, doer)
|
heatmap, err := activities_model.GetUserHeatmapDataByUser(db.DefaultContext, user, doer)
|
||||||
var contributions int
|
var contributions int
|
||||||
for _, hm := range heatmap {
|
for _, hm := range heatmap {
|
||||||
contributions += int(hm.Contributions)
|
contributions += int(hm.Contributions)
|
||||||
|
|
|
@ -88,14 +88,14 @@ func ListGPGKeys(ctx context.Context, uid int64, listOptions db.ListOptions) ([]
|
||||||
}
|
}
|
||||||
|
|
||||||
// CountUserGPGKeys return number of gpg keys a user own
|
// CountUserGPGKeys return number of gpg keys a user own
|
||||||
func CountUserGPGKeys(userID int64) (int64, error) {
|
func CountUserGPGKeys(ctx context.Context, userID int64) (int64, error) {
|
||||||
return db.GetEngine(db.DefaultContext).Where("owner_id=? AND primary_key_id=''", userID).Count(&GPGKey{})
|
return db.GetEngine(ctx).Where("owner_id=? AND primary_key_id=''", userID).Count(&GPGKey{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetGPGKeyByID returns public key by given ID.
|
// GetGPGKeyByID returns public key by given ID.
|
||||||
func GetGPGKeyByID(keyID int64) (*GPGKey, error) {
|
func GetGPGKeyByID(ctx context.Context, keyID int64) (*GPGKey, error) {
|
||||||
key := new(GPGKey)
|
key := new(GPGKey)
|
||||||
has, err := db.GetEngine(db.DefaultContext).ID(keyID).Get(key)
|
has, err := db.GetEngine(ctx).ID(keyID).Get(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
|
@ -105,9 +105,9 @@ func GetGPGKeyByID(keyID int64) (*GPGKey, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetGPGKeysByKeyID returns public key by given ID.
|
// GetGPGKeysByKeyID returns public key by given ID.
|
||||||
func GetGPGKeysByKeyID(keyID string) ([]*GPGKey, error) {
|
func GetGPGKeysByKeyID(ctx context.Context, keyID string) ([]*GPGKey, error) {
|
||||||
keys := make([]*GPGKey, 0, 1)
|
keys := make([]*GPGKey, 0, 1)
|
||||||
return keys, db.GetEngine(db.DefaultContext).Where("key_id=?", keyID).Find(&keys)
|
return keys, db.GetEngine(ctx).Where("key_id=?", keyID).Find(&keys)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GPGKeyToEntity retrieve the imported key and the traducted entity
|
// GPGKeyToEntity retrieve the imported key and the traducted entity
|
||||||
|
@ -224,8 +224,8 @@ func deleteGPGKey(ctx context.Context, keyID string) (int64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteGPGKey deletes GPG key information in database.
|
// DeleteGPGKey deletes GPG key information in database.
|
||||||
func DeleteGPGKey(doer *user_model.User, id int64) (err error) {
|
func DeleteGPGKey(ctx context.Context, doer *user_model.User, id int64) (err error) {
|
||||||
key, err := GetGPGKeyByID(id)
|
key, err := GetGPGKeyByID(ctx, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if IsErrGPGKeyNotExist(err) {
|
if IsErrGPGKeyNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -238,7 +238,7 @@ func DeleteGPGKey(doer *user_model.User, id int64) (err error) {
|
||||||
return ErrGPGKeyAccessDenied{doer.ID, key.ID}
|
return ErrGPGKeyAccessDenied{doer.ID, key.ID}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,13 +66,13 @@ func addGPGSubKey(ctx context.Context, key *GPGKey) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddGPGKey adds new public key to database.
|
// AddGPGKey adds new public key to database.
|
||||||
func AddGPGKey(ownerID int64, content, token, signature string) ([]*GPGKey, error) {
|
func AddGPGKey(ctx context.Context, ownerID int64, content, token, signature string) ([]*GPGKey, error) {
|
||||||
ekeys, err := checkArmoredGPGKeyString(content)
|
ekeys, err := checkArmoredGPGKeyString(content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -392,7 +392,7 @@ func hashAndVerifyForKeyID(ctx context.Context, sig *packet.Signature, payload s
|
||||||
if keyID == "" {
|
if keyID == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
keys, err := GetGPGKeysByKeyID(keyID)
|
keys, err := GetGPGKeysByKeyID(ctx, keyID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("GetGPGKeysByKeyID: %v", err)
|
log.Error("GetGPGKeysByKeyID: %v", err)
|
||||||
return &CommitVerification{
|
return &CommitVerification{
|
||||||
|
@ -407,7 +407,7 @@ func hashAndVerifyForKeyID(ctx context.Context, sig *packet.Signature, payload s
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
var primaryKeys []*GPGKey
|
var primaryKeys []*GPGKey
|
||||||
if key.PrimaryKeyID != "" {
|
if key.PrimaryKeyID != "" {
|
||||||
primaryKeys, err = GetGPGKeysByKeyID(key.PrimaryKeyID)
|
primaryKeys, err = GetGPGKeysByKeyID(ctx, key.PrimaryKeyID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("GetGPGKeysByKeyID: %v", err)
|
log.Error("GetGPGKeysByKeyID: %v", err)
|
||||||
return &CommitVerification{
|
return &CommitVerification{
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
@ -228,7 +229,7 @@ Q0KHb+QcycSgbDx0ZAvdIacuKvBBcbxrsmFUI4LR+oIup0G9gUc0roPvr014jYQL
|
||||||
=zHo9
|
=zHo9
|
||||||
-----END PGP PUBLIC KEY BLOCK-----`
|
-----END PGP PUBLIC KEY BLOCK-----`
|
||||||
|
|
||||||
keys, err := AddGPGKey(1, testEmailWithUpperCaseLetters, "", "")
|
keys, err := AddGPGKey(db.DefaultContext, 1, testEmailWithUpperCaseLetters, "", "")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
if assert.NotEmpty(t, keys) {
|
if assert.NotEmpty(t, keys) {
|
||||||
key := keys[0]
|
key := keys[0]
|
||||||
|
|
|
@ -117,7 +117,7 @@ func appendAuthorizedKeysToFile(keys ...*PublicKey) error {
|
||||||
// RewriteAllPublicKeys removes any authorized key and rewrite all keys from database again.
|
// RewriteAllPublicKeys removes any authorized key and rewrite all keys from database again.
|
||||||
// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
|
// Note: db.GetEngine(db.DefaultContext).Iterate does not get latest data after insert/delete, so we have to call this function
|
||||||
// outside any session scope independently.
|
// outside any session scope independently.
|
||||||
func RewriteAllPublicKeys() error {
|
func RewriteAllPublicKeys(ctx context.Context) error {
|
||||||
// Don't rewrite key if internal server
|
// Don't rewrite key if internal server
|
||||||
if setting.SSH.StartBuiltinServer || !setting.SSH.CreateAuthorizedKeysFile {
|
if setting.SSH.StartBuiltinServer || !setting.SSH.CreateAuthorizedKeysFile {
|
||||||
return nil
|
return nil
|
||||||
|
@ -165,7 +165,7 @@ func RewriteAllPublicKeys() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := RegeneratePublicKeys(db.DefaultContext, t); err != nil {
|
if err := RegeneratePublicKeys(ctx, t); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,16 @@
|
||||||
|
|
||||||
package issues
|
package issues
|
||||||
|
|
||||||
import "code.gitea.io/gitea/models/db"
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
)
|
||||||
|
|
||||||
// RecalculateIssueIndexForRepo create issue_index for repo if not exist and
|
// RecalculateIssueIndexForRepo create issue_index for repo if not exist and
|
||||||
// update it based on highest index of existing issues assigned to a repo
|
// update it based on highest index of existing issues assigned to a repo
|
||||||
func RecalculateIssueIndexForRepo(repoID int64) error {
|
func RecalculateIssueIndexForRepo(ctx context.Context, repoID int64) error {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,9 +80,9 @@ func CountIssues(ctx context.Context, opts *IssuesOptions) (int64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetIssueStats returns issue statistic information by given conditions.
|
// GetIssueStats returns issue statistic information by given conditions.
|
||||||
func GetIssueStats(opts *IssuesOptions) (*IssueStats, error) {
|
func GetIssueStats(ctx context.Context, opts *IssuesOptions) (*IssueStats, error) {
|
||||||
if len(opts.IssueIDs) <= MaxQueryParameters {
|
if len(opts.IssueIDs) <= MaxQueryParameters {
|
||||||
return getIssueStatsChunk(opts, opts.IssueIDs)
|
return getIssueStatsChunk(ctx, opts, opts.IssueIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If too long a list of IDs is provided, we get the statistics in
|
// If too long a list of IDs is provided, we get the statistics in
|
||||||
|
@ -95,7 +95,7 @@ func GetIssueStats(opts *IssuesOptions) (*IssueStats, error) {
|
||||||
if chunk > len(opts.IssueIDs) {
|
if chunk > len(opts.IssueIDs) {
|
||||||
chunk = len(opts.IssueIDs)
|
chunk = len(opts.IssueIDs)
|
||||||
}
|
}
|
||||||
stats, err := getIssueStatsChunk(opts, opts.IssueIDs[i:chunk])
|
stats, err := getIssueStatsChunk(ctx, opts, opts.IssueIDs[i:chunk])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -112,10 +112,10 @@ func GetIssueStats(opts *IssuesOptions) (*IssueStats, error) {
|
||||||
return accum, nil
|
return accum, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getIssueStatsChunk(opts *IssuesOptions, issueIDs []int64) (*IssueStats, error) {
|
func getIssueStatsChunk(ctx context.Context, opts *IssuesOptions, issueIDs []int64) (*IssueStats, error) {
|
||||||
stats := &IssueStats{}
|
stats := &IssueStats{}
|
||||||
|
|
||||||
sess := db.GetEngine(db.DefaultContext).
|
sess := db.GetEngine(ctx).
|
||||||
Join("INNER", "repository", "`issue`.repo_id = `repository`.id")
|
Join("INNER", "repository", "`issue`.repo_id = `repository`.id")
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
|
|
@ -369,7 +369,7 @@ func TestCorrectIssueStats(t *testing.T) {
|
||||||
|
|
||||||
// Now we will call the GetIssueStats with these IDs and if working,
|
// Now we will call the GetIssueStats with these IDs and if working,
|
||||||
// get the correct stats back.
|
// get the correct stats back.
|
||||||
issueStats, err := issues_model.GetIssueStats(&issues_model.IssuesOptions{
|
issueStats, err := issues_model.GetIssueStats(db.DefaultContext, &issues_model.IssuesOptions{
|
||||||
RepoIDs: []int64{1},
|
RepoIDs: []int64{1},
|
||||||
IssueIDs: ids,
|
IssueIDs: ids,
|
||||||
})
|
})
|
||||||
|
|
|
@ -311,7 +311,7 @@ func (pr *PullRequest) LoadRequestedReviewers(ctx context.Context) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
reviews, err := GetReviewsByIssueID(pr.Issue.ID)
|
reviews, err := GetReviewsByIssueID(ctx, pr.Issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,11 +71,11 @@ type Reaction struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadUser load user of reaction
|
// LoadUser load user of reaction
|
||||||
func (r *Reaction) LoadUser() (*user_model.User, error) {
|
func (r *Reaction) LoadUser(ctx context.Context) (*user_model.User, error) {
|
||||||
if r.User != nil {
|
if r.User != nil {
|
||||||
return r.User, nil
|
return r.User, nil
|
||||||
}
|
}
|
||||||
user, err := user_model.GetUserByID(db.DefaultContext, r.UserID)
|
user, err := user_model.GetUserByID(ctx, r.UserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -141,16 +141,16 @@ func (opts *FindReactionsOptions) toConds() builder.Cond {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindCommentReactions returns a ReactionList of all reactions from an comment
|
// FindCommentReactions returns a ReactionList of all reactions from an comment
|
||||||
func FindCommentReactions(issueID, commentID int64) (ReactionList, int64, error) {
|
func FindCommentReactions(ctx context.Context, issueID, commentID int64) (ReactionList, int64, error) {
|
||||||
return FindReactions(db.DefaultContext, FindReactionsOptions{
|
return FindReactions(ctx, FindReactionsOptions{
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
CommentID: commentID,
|
CommentID: commentID,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// FindIssueReactions returns a ReactionList of all reactions from an issue
|
// FindIssueReactions returns a ReactionList of all reactions from an issue
|
||||||
func FindIssueReactions(issueID int64, listOptions db.ListOptions) (ReactionList, int64, error) {
|
func FindIssueReactions(ctx context.Context, issueID int64, listOptions db.ListOptions) (ReactionList, int64, error) {
|
||||||
return FindReactions(db.DefaultContext, FindReactionsOptions{
|
return FindReactions(ctx, FindReactionsOptions{
|
||||||
ListOptions: listOptions,
|
ListOptions: listOptions,
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
CommentID: -1,
|
CommentID: -1,
|
||||||
|
@ -218,12 +218,12 @@ type ReactionOptions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateReaction creates reaction for issue or comment.
|
// CreateReaction creates reaction for issue or comment.
|
||||||
func CreateReaction(opts *ReactionOptions) (*Reaction, error) {
|
func CreateReaction(ctx context.Context, opts *ReactionOptions) (*Reaction, error) {
|
||||||
if !setting.UI.ReactionsLookup.Contains(opts.Type) {
|
if !setting.UI.ReactionsLookup.Contains(opts.Type) {
|
||||||
return nil, ErrForbiddenIssueReaction{opts.Type}
|
return nil, ErrForbiddenIssueReaction{opts.Type}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -241,8 +241,8 @@ func CreateReaction(opts *ReactionOptions) (*Reaction, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateIssueReaction creates a reaction on issue.
|
// CreateIssueReaction creates a reaction on issue.
|
||||||
func CreateIssueReaction(doerID, issueID int64, content string) (*Reaction, error) {
|
func CreateIssueReaction(ctx context.Context, doerID, issueID int64, content string) (*Reaction, error) {
|
||||||
return CreateReaction(&ReactionOptions{
|
return CreateReaction(ctx, &ReactionOptions{
|
||||||
Type: content,
|
Type: content,
|
||||||
DoerID: doerID,
|
DoerID: doerID,
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
|
@ -250,8 +250,8 @@ func CreateIssueReaction(doerID, issueID int64, content string) (*Reaction, erro
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateCommentReaction creates a reaction on comment.
|
// CreateCommentReaction creates a reaction on comment.
|
||||||
func CreateCommentReaction(doerID, issueID, commentID int64, content string) (*Reaction, error) {
|
func CreateCommentReaction(ctx context.Context, doerID, issueID, commentID int64, content string) (*Reaction, error) {
|
||||||
return CreateReaction(&ReactionOptions{
|
return CreateReaction(ctx, &ReactionOptions{
|
||||||
Type: content,
|
Type: content,
|
||||||
DoerID: doerID,
|
DoerID: doerID,
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
|
@ -279,8 +279,8 @@ func DeleteReaction(ctx context.Context, opts *ReactionOptions) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteIssueReaction deletes a reaction on issue.
|
// DeleteIssueReaction deletes a reaction on issue.
|
||||||
func DeleteIssueReaction(doerID, issueID int64, content string) error {
|
func DeleteIssueReaction(ctx context.Context, doerID, issueID int64, content string) error {
|
||||||
return DeleteReaction(db.DefaultContext, &ReactionOptions{
|
return DeleteReaction(ctx, &ReactionOptions{
|
||||||
Type: content,
|
Type: content,
|
||||||
DoerID: doerID,
|
DoerID: doerID,
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
|
@ -289,8 +289,8 @@ func DeleteIssueReaction(doerID, issueID int64, content string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteCommentReaction deletes a reaction on comment.
|
// DeleteCommentReaction deletes a reaction on comment.
|
||||||
func DeleteCommentReaction(doerID, issueID, commentID int64, content string) error {
|
func DeleteCommentReaction(ctx context.Context, doerID, issueID, commentID int64, content string) error {
|
||||||
return DeleteReaction(db.DefaultContext, &ReactionOptions{
|
return DeleteReaction(ctx, &ReactionOptions{
|
||||||
Type: content,
|
Type: content,
|
||||||
DoerID: doerID,
|
DoerID: doerID,
|
||||||
IssueID: issueID,
|
IssueID: issueID,
|
||||||
|
|
|
@ -20,9 +20,9 @@ func addReaction(t *testing.T, doerID, issueID, commentID int64, content string)
|
||||||
var reaction *issues_model.Reaction
|
var reaction *issues_model.Reaction
|
||||||
var err error
|
var err error
|
||||||
if commentID == 0 {
|
if commentID == 0 {
|
||||||
reaction, err = issues_model.CreateIssueReaction(doerID, issueID, content)
|
reaction, err = issues_model.CreateIssueReaction(db.DefaultContext, doerID, issueID, content)
|
||||||
} else {
|
} else {
|
||||||
reaction, err = issues_model.CreateCommentReaction(doerID, issueID, commentID, content)
|
reaction, err = issues_model.CreateCommentReaction(db.DefaultContext, doerID, issueID, commentID, content)
|
||||||
}
|
}
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NotNil(t, reaction)
|
assert.NotNil(t, reaction)
|
||||||
|
@ -49,7 +49,7 @@ func TestIssueAddDuplicateReaction(t *testing.T) {
|
||||||
|
|
||||||
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
||||||
|
|
||||||
reaction, err := issues_model.CreateReaction(&issues_model.ReactionOptions{
|
reaction, err := issues_model.CreateReaction(db.DefaultContext, &issues_model.ReactionOptions{
|
||||||
DoerID: user1.ID,
|
DoerID: user1.ID,
|
||||||
IssueID: issue1ID,
|
IssueID: issue1ID,
|
||||||
Type: "heart",
|
Type: "heart",
|
||||||
|
@ -70,7 +70,7 @@ func TestIssueDeleteReaction(t *testing.T) {
|
||||||
|
|
||||||
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
addReaction(t, user1.ID, issue1ID, 0, "heart")
|
||||||
|
|
||||||
err := issues_model.DeleteIssueReaction(user1.ID, issue1ID, "heart")
|
err := issues_model.DeleteIssueReaction(db.DefaultContext, user1.ID, issue1ID, "heart")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID})
|
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID})
|
||||||
|
@ -168,7 +168,7 @@ func TestIssueCommentReactionCount(t *testing.T) {
|
||||||
var comment1ID int64 = 1
|
var comment1ID int64 = 1
|
||||||
|
|
||||||
addReaction(t, user1.ID, issue1ID, comment1ID, "heart")
|
addReaction(t, user1.ID, issue1ID, comment1ID, "heart")
|
||||||
assert.NoError(t, issues_model.DeleteCommentReaction(user1.ID, issue1ID, comment1ID, "heart"))
|
assert.NoError(t, issues_model.DeleteCommentReaction(db.DefaultContext, user1.ID, issue1ID, comment1ID, "heart"))
|
||||||
|
|
||||||
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID, CommentID: comment1ID})
|
unittest.AssertNotExistsBean(t, &issues_model.Reaction{Type: "heart", UserID: user1.ID, IssueID: issue1ID, CommentID: comment1ID})
|
||||||
}
|
}
|
||||||
|
|
|
@ -126,16 +126,16 @@ func FindLatestReviews(ctx context.Context, opts FindReviewOptions) (ReviewList,
|
||||||
}
|
}
|
||||||
|
|
||||||
// CountReviews returns count of reviews passing FindReviewOptions
|
// CountReviews returns count of reviews passing FindReviewOptions
|
||||||
func CountReviews(opts FindReviewOptions) (int64, error) {
|
func CountReviews(ctx context.Context, opts FindReviewOptions) (int64, error) {
|
||||||
return db.GetEngine(db.DefaultContext).Where(opts.toCond()).Count(&Review{})
|
return db.GetEngine(ctx).Where(opts.toCond()).Count(&Review{})
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetReviewersFromOriginalAuthorsByIssueID gets the latest review of each original authors for a pull request
|
// GetReviewersFromOriginalAuthorsByIssueID gets the latest review of each original authors for a pull request
|
||||||
func GetReviewersFromOriginalAuthorsByIssueID(issueID int64) (ReviewList, error) {
|
func GetReviewersFromOriginalAuthorsByIssueID(ctx context.Context, issueID int64) (ReviewList, error) {
|
||||||
reviews := make([]*Review, 0, 10)
|
reviews := make([]*Review, 0, 10)
|
||||||
|
|
||||||
// Get latest review of each reviewer, sorted in order they were made
|
// Get latest review of each reviewer, sorted in order they were made
|
||||||
if err := db.GetEngine(db.DefaultContext).SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND original_author_id <> 0 GROUP BY issue_id, original_author_id) ORDER BY review.updated_unix ASC",
|
if err := db.GetEngine(ctx).SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND original_author_id <> 0 GROUP BY issue_id, original_author_id) ORDER BY review.updated_unix ASC",
|
||||||
issueID, ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
|
issueID, ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
|
||||||
Find(&reviews); err != nil {
|
Find(&reviews); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -145,10 +145,10 @@ func GetReviewersFromOriginalAuthorsByIssueID(issueID int64) (ReviewList, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetReviewsByIssueID gets the latest review of each reviewer for a pull request
|
// GetReviewsByIssueID gets the latest review of each reviewer for a pull request
|
||||||
func GetReviewsByIssueID(issueID int64) (ReviewList, error) {
|
func GetReviewsByIssueID(ctx context.Context, issueID int64) (ReviewList, error) {
|
||||||
reviews := make([]*Review, 0, 10)
|
reviews := make([]*Review, 0, 10)
|
||||||
|
|
||||||
sess := db.GetEngine(db.DefaultContext)
|
sess := db.GetEngine(ctx)
|
||||||
|
|
||||||
// Get latest review of each reviewer, sorted in order they were made
|
// Get latest review of each reviewer, sorted in order they were made
|
||||||
if err := sess.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND dismissed = ? AND original_author_id = 0 GROUP BY issue_id, reviewer_id) ORDER BY review.updated_unix ASC",
|
if err := sess.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND dismissed = ? AND original_author_id = 0 GROUP BY issue_id, reviewer_id) ORDER BY review.updated_unix ASC",
|
||||||
|
|
|
@ -144,7 +144,7 @@ func TestGetReviewersByIssueID(t *testing.T) {
|
||||||
UpdatedUnix: 946684814,
|
UpdatedUnix: 946684814,
|
||||||
})
|
})
|
||||||
|
|
||||||
allReviews, err := issues_model.GetReviewsByIssueID(issue.ID)
|
allReviews, err := issues_model.GetReviewsByIssueID(db.DefaultContext, issue.ID)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
for _, review := range allReviews {
|
for _, review := range allReviews {
|
||||||
assert.NoError(t, review.LoadReviewer(db.DefaultContext))
|
assert.NoError(t, review.LoadReviewer(db.DefaultContext))
|
||||||
|
@ -157,7 +157,7 @@ func TestGetReviewersByIssueID(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allReviews, err = issues_model.GetReviewsByIssueID(issue.ID)
|
allReviews, err = issues_model.GetReviewsByIssueID(db.DefaultContext, issue.ID)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.NoError(t, allReviews.LoadReviewers(db.DefaultContext))
|
assert.NoError(t, allReviews.LoadReviewers(db.DefaultContext))
|
||||||
if assert.Len(t, allReviews, 3) {
|
if assert.Len(t, allReviews, 3) {
|
||||||
|
|
|
@ -77,8 +77,8 @@ func (opts *SearchTeamOptions) toCond() builder.Cond {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SearchTeam search for teams. Caller is responsible to check permissions.
|
// SearchTeam search for teams. Caller is responsible to check permissions.
|
||||||
func SearchTeam(opts *SearchTeamOptions) (TeamList, int64, error) {
|
func SearchTeam(ctx context.Context, opts *SearchTeamOptions) (TeamList, int64, error) {
|
||||||
sess := db.GetEngine(db.DefaultContext)
|
sess := db.GetEngine(ctx)
|
||||||
|
|
||||||
opts.SetDefaultValues()
|
opts.SetDefaultValues()
|
||||||
cond := opts.toCond()
|
cond := opts.toCond()
|
||||||
|
|
|
@ -142,7 +142,7 @@ func TestGetTeamMembers(t *testing.T) {
|
||||||
func TestGetUserTeams(t *testing.T) {
|
func TestGetUserTeams(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
test := func(userID int64) {
|
test := func(userID int64) {
|
||||||
teams, _, err := organization.SearchTeam(&organization.SearchTeamOptions{UserID: userID})
|
teams, _, err := organization.SearchTeam(db.DefaultContext, &organization.SearchTeamOptions{UserID: userID})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
for _, team := range teams {
|
for _, team := range teams {
|
||||||
unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{TeamID: team.ID, UID: userID})
|
unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{TeamID: team.ID, UID: userID})
|
||||||
|
|
|
@ -181,9 +181,9 @@ func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRelease returns release by given ID.
|
// GetRelease returns release by given ID.
|
||||||
func GetRelease(repoID int64, tagName string) (*Release, error) {
|
func GetRelease(ctx context.Context, repoID int64, tagName string) (*Release, error) {
|
||||||
rel := &Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)}
|
rel := &Release{RepoID: repoID, LowerTagName: strings.ToLower(tagName)}
|
||||||
has, err := db.GetEngine(db.DefaultContext).Get(rel)
|
has, err := db.GetEngine(ctx).Get(rel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
|
@ -284,12 +284,12 @@ func GetTagNamesByRepoID(ctx context.Context, repoID int64) ([]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CountReleasesByRepoID returns a number of releases matching FindReleaseOptions and RepoID.
|
// CountReleasesByRepoID returns a number of releases matching FindReleaseOptions and RepoID.
|
||||||
func CountReleasesByRepoID(repoID int64, opts FindReleasesOptions) (int64, error) {
|
func CountReleasesByRepoID(ctx context.Context, repoID int64, opts FindReleasesOptions) (int64, error) {
|
||||||
return db.GetEngine(db.DefaultContext).Where(opts.toConds(repoID)).Count(new(Release))
|
return db.GetEngine(ctx).Where(opts.toConds(repoID)).Count(new(Release))
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetLatestReleaseByRepoID returns the latest release for a repository
|
// GetLatestReleaseByRepoID returns the latest release for a repository
|
||||||
func GetLatestReleaseByRepoID(repoID int64) (*Release, error) {
|
func GetLatestReleaseByRepoID(ctx context.Context, repoID int64) (*Release, error) {
|
||||||
cond := builder.NewCond().
|
cond := builder.NewCond().
|
||||||
And(builder.Eq{"repo_id": repoID}).
|
And(builder.Eq{"repo_id": repoID}).
|
||||||
And(builder.Eq{"is_draft": false}).
|
And(builder.Eq{"is_draft": false}).
|
||||||
|
@ -297,7 +297,7 @@ func GetLatestReleaseByRepoID(repoID int64) (*Release, error) {
|
||||||
And(builder.Eq{"is_tag": false})
|
And(builder.Eq{"is_tag": false})
|
||||||
|
|
||||||
rel := new(Release)
|
rel := new(Release)
|
||||||
has, err := db.GetEngine(db.DefaultContext).
|
has, err := db.GetEngine(ctx).
|
||||||
Desc("created_unix", "id").
|
Desc("created_unix", "id").
|
||||||
Where(cond).
|
Where(cond).
|
||||||
Get(rel)
|
Get(rel)
|
||||||
|
@ -442,8 +442,8 @@ func DeleteReleaseByID(ctx context.Context, id int64) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateReleasesMigrationsByType updates all migrated repositories' releases from gitServiceType to replace originalAuthorID to posterID
|
// UpdateReleasesMigrationsByType updates all migrated repositories' releases from gitServiceType to replace originalAuthorID to posterID
|
||||||
func UpdateReleasesMigrationsByType(gitServiceType structs.GitServiceType, originalAuthorID string, posterID int64) error {
|
func UpdateReleasesMigrationsByType(ctx context.Context, gitServiceType structs.GitServiceType, originalAuthorID string, posterID int64) error {
|
||||||
_, err := db.GetEngine(db.DefaultContext).Table("release").
|
_, err := db.GetEngine(ctx).Table("release").
|
||||||
Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType).
|
Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType).
|
||||||
And("original_author_id = ?", originalAuthorID).
|
And("original_author_id = ?", originalAuthorID).
|
||||||
Update(map[string]any{
|
Update(map[string]any{
|
||||||
|
@ -485,8 +485,8 @@ func PushUpdateDeleteTagsContext(ctx context.Context, repo *Repository, tags []s
|
||||||
}
|
}
|
||||||
|
|
||||||
// PushUpdateDeleteTag must be called for any push actions to delete tag
|
// PushUpdateDeleteTag must be called for any push actions to delete tag
|
||||||
func PushUpdateDeleteTag(repo *Repository, tagName string) error {
|
func PushUpdateDeleteTag(ctx context.Context, repo *Repository, tagName string) error {
|
||||||
rel, err := GetRelease(repo.ID, tagName)
|
rel, err := GetRelease(ctx, repo.ID, tagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if IsErrReleaseNotExist(err) {
|
if IsErrReleaseNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
|
@ -494,14 +494,14 @@ func PushUpdateDeleteTag(repo *Repository, tagName string) error {
|
||||||
return fmt.Errorf("GetRelease: %w", err)
|
return fmt.Errorf("GetRelease: %w", err)
|
||||||
}
|
}
|
||||||
if rel.IsTag {
|
if rel.IsTag {
|
||||||
if _, err = db.GetEngine(db.DefaultContext).ID(rel.ID).Delete(new(Release)); err != nil {
|
if _, err = db.GetEngine(ctx).ID(rel.ID).Delete(new(Release)); err != nil {
|
||||||
return fmt.Errorf("Delete: %w", err)
|
return fmt.Errorf("Delete: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rel.IsDraft = true
|
rel.IsDraft = true
|
||||||
rel.NumCommits = 0
|
rel.NumCommits = 0
|
||||||
rel.Sha1 = ""
|
rel.Sha1 = ""
|
||||||
if _, err = db.GetEngine(db.DefaultContext).ID(rel.ID).AllCols().Update(rel); err != nil {
|
if _, err = db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel); err != nil {
|
||||||
return fmt.Errorf("Update: %w", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -510,15 +510,15 @@ func PushUpdateDeleteTag(repo *Repository, tagName string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SaveOrUpdateTag must be called for any push actions to add tag
|
// SaveOrUpdateTag must be called for any push actions to add tag
|
||||||
func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
|
func SaveOrUpdateTag(ctx context.Context, repo *Repository, newRel *Release) error {
|
||||||
rel, err := GetRelease(repo.ID, newRel.TagName)
|
rel, err := GetRelease(ctx, repo.ID, newRel.TagName)
|
||||||
if err != nil && !IsErrReleaseNotExist(err) {
|
if err != nil && !IsErrReleaseNotExist(err) {
|
||||||
return fmt.Errorf("GetRelease: %w", err)
|
return fmt.Errorf("GetRelease: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if rel == nil {
|
if rel == nil {
|
||||||
rel = newRel
|
rel = newRel
|
||||||
if _, err = db.GetEngine(db.DefaultContext).Insert(rel); err != nil {
|
if _, err = db.GetEngine(ctx).Insert(rel); err != nil {
|
||||||
return fmt.Errorf("InsertOne: %w", err)
|
return fmt.Errorf("InsertOne: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -529,7 +529,7 @@ func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
|
||||||
if rel.IsTag && newRel.PublisherID > 0 {
|
if rel.IsTag && newRel.PublisherID > 0 {
|
||||||
rel.PublisherID = newRel.PublisherID
|
rel.PublisherID = newRel.PublisherID
|
||||||
}
|
}
|
||||||
if _, err = db.GetEngine(db.DefaultContext).ID(rel.ID).AllCols().Update(rel); err != nil {
|
if _, err = db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel); err != nil {
|
||||||
return fmt.Errorf("Update: %w", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -554,8 +554,8 @@ func (r *Release) GetExternalName() string { return r.OriginalAuthor }
|
||||||
func (r *Release) GetExternalID() int64 { return r.OriginalAuthorID }
|
func (r *Release) GetExternalID() int64 { return r.OriginalAuthorID }
|
||||||
|
|
||||||
// InsertReleases migrates release
|
// InsertReleases migrates release
|
||||||
func InsertReleases(rels ...*Release) error {
|
func InsertReleases(ctx context.Context, rels ...*Release) error {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ package repo
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -21,6 +22,6 @@ func TestMigrate_InsertReleases(t *testing.T) {
|
||||||
Attachments: []*Attachment{a},
|
Attachments: []*Attachment{a},
|
||||||
}
|
}
|
||||||
|
|
||||||
err := InsertReleases(r)
|
err := InsertReleases(db.DefaultContext, r)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,28 +94,28 @@ func CountNotices() int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notices returns notices in given page.
|
// Notices returns notices in given page.
|
||||||
func Notices(page, pageSize int) ([]*Notice, error) {
|
func Notices(ctx context.Context, page, pageSize int) ([]*Notice, error) {
|
||||||
notices := make([]*Notice, 0, pageSize)
|
notices := make([]*Notice, 0, pageSize)
|
||||||
return notices, db.GetEngine(db.DefaultContext).
|
return notices, db.GetEngine(ctx).
|
||||||
Limit(pageSize, (page-1)*pageSize).
|
Limit(pageSize, (page-1)*pageSize).
|
||||||
Desc("created_unix").
|
Desc("created_unix").
|
||||||
Find(¬ices)
|
Find(¬ices)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteNotice deletes a system notice by given ID.
|
// DeleteNotice deletes a system notice by given ID.
|
||||||
func DeleteNotice(id int64) error {
|
func DeleteNotice(ctx context.Context, id int64) error {
|
||||||
_, err := db.GetEngine(db.DefaultContext).ID(id).Delete(new(Notice))
|
_, err := db.GetEngine(ctx).ID(id).Delete(new(Notice))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteNotices deletes all notices with ID from start to end (inclusive).
|
// DeleteNotices deletes all notices with ID from start to end (inclusive).
|
||||||
func DeleteNotices(start, end int64) error {
|
func DeleteNotices(ctx context.Context, start, end int64) error {
|
||||||
if start == 0 && end == 0 {
|
if start == 0 && end == 0 {
|
||||||
_, err := db.GetEngine(db.DefaultContext).Exec("DELETE FROM notice")
|
_, err := db.GetEngine(ctx).Exec("DELETE FROM notice")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
sess := db.GetEngine(db.DefaultContext).Where("id >= ?", start)
|
sess := db.GetEngine(ctx).Where("id >= ?", start)
|
||||||
if end > 0 {
|
if end > 0 {
|
||||||
sess.And("id <= ?", end)
|
sess.And("id <= ?", end)
|
||||||
}
|
}
|
||||||
|
@ -124,22 +124,22 @@ func DeleteNotices(start, end int64) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteNoticesByIDs deletes notices by given IDs.
|
// DeleteNoticesByIDs deletes notices by given IDs.
|
||||||
func DeleteNoticesByIDs(ids []int64) error {
|
func DeleteNoticesByIDs(ctx context.Context, ids []int64) error {
|
||||||
if len(ids) == 0 {
|
if len(ids) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
_, err := db.GetEngine(db.DefaultContext).
|
_, err := db.GetEngine(ctx).
|
||||||
In("id", ids).
|
In("id", ids).
|
||||||
Delete(new(Notice))
|
Delete(new(Notice))
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteOldSystemNotices deletes all old system notices from database.
|
// DeleteOldSystemNotices deletes all old system notices from database.
|
||||||
func DeleteOldSystemNotices(olderThan time.Duration) (err error) {
|
func DeleteOldSystemNotices(ctx context.Context, olderThan time.Duration) (err error) {
|
||||||
if olderThan <= 0 {
|
if olderThan <= 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = db.GetEngine(db.DefaultContext).Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Notice{})
|
_, err = db.GetEngine(ctx).Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Notice{})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,14 +55,14 @@ func TestCountNotices(t *testing.T) {
|
||||||
func TestNotices(t *testing.T) {
|
func TestNotices(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
notices, err := system.Notices(1, 2)
|
notices, err := system.Notices(db.DefaultContext, 1, 2)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
if assert.Len(t, notices, 2) {
|
if assert.Len(t, notices, 2) {
|
||||||
assert.Equal(t, int64(3), notices[0].ID)
|
assert.Equal(t, int64(3), notices[0].ID)
|
||||||
assert.Equal(t, int64(2), notices[1].ID)
|
assert.Equal(t, int64(2), notices[1].ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
notices, err = system.Notices(2, 2)
|
notices, err = system.Notices(db.DefaultContext, 2, 2)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
if assert.Len(t, notices, 1) {
|
if assert.Len(t, notices, 1) {
|
||||||
assert.Equal(t, int64(1), notices[0].ID)
|
assert.Equal(t, int64(1), notices[0].ID)
|
||||||
|
@ -73,7 +73,7 @@ func TestDeleteNotice(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
assert.NoError(t, system.DeleteNotice(3))
|
assert.NoError(t, system.DeleteNotice(db.DefaultContext, 3))
|
||||||
unittest.AssertNotExistsBean(t, &system.Notice{ID: 3})
|
unittest.AssertNotExistsBean(t, &system.Notice{ID: 3})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ func TestDeleteNotices(t *testing.T) {
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
assert.NoError(t, system.DeleteNotices(1, 2))
|
assert.NoError(t, system.DeleteNotices(db.DefaultContext, 1, 2))
|
||||||
unittest.AssertNotExistsBean(t, &system.Notice{ID: 1})
|
unittest.AssertNotExistsBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertNotExistsBean(t, &system.Notice{ID: 2})
|
unittest.AssertNotExistsBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
|
@ -97,7 +97,7 @@ func TestDeleteNotices2(t *testing.T) {
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
assert.NoError(t, system.DeleteNotices(3, 2))
|
assert.NoError(t, system.DeleteNotices(db.DefaultContext, 3, 2))
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
|
@ -109,7 +109,7 @@ func TestDeleteNoticesByIDs(t *testing.T) {
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 3})
|
||||||
assert.NoError(t, system.DeleteNoticesByIDs([]int64{1, 3}))
|
assert.NoError(t, system.DeleteNoticesByIDs(db.DefaultContext, []int64{1, 3}))
|
||||||
unittest.AssertNotExistsBean(t, &system.Notice{ID: 1})
|
unittest.AssertNotExistsBean(t, &system.Notice{ID: 1})
|
||||||
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
unittest.AssertExistsAndLoadBean(t, &system.Notice{ID: 2})
|
||||||
unittest.AssertNotExistsBean(t, &system.Notice{ID: 3})
|
unittest.AssertNotExistsBean(t, &system.Notice{ID: 3})
|
||||||
|
|
|
@ -48,10 +48,10 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupUserRedirect look up userID if a user has a redirect name
|
// LookupUserRedirect look up userID if a user has a redirect name
|
||||||
func LookupUserRedirect(userName string) (int64, error) {
|
func LookupUserRedirect(ctx context.Context, userName string) (int64, error) {
|
||||||
userName = strings.ToLower(userName)
|
userName = strings.ToLower(userName)
|
||||||
redirect := &Redirect{LowerName: userName}
|
redirect := &Redirect{LowerName: userName}
|
||||||
if has, err := db.GetEngine(db.DefaultContext).Get(redirect); err != nil {
|
if has, err := db.GetEngine(ctx).Get(redirect); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return 0, ErrUserRedirectNotExist{Name: userName}
|
return 0, ErrUserRedirectNotExist{Name: userName}
|
||||||
|
|
|
@ -6,6 +6,7 @@ package user_test
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
|
||||||
|
@ -15,10 +16,10 @@ import (
|
||||||
func TestLookupUserRedirect(t *testing.T) {
|
func TestLookupUserRedirect(t *testing.T) {
|
||||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
userID, err := user_model.LookupUserRedirect("olduser1")
|
userID, err := user_model.LookupUserRedirect(db.DefaultContext, "olduser1")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.EqualValues(t, 1, userID)
|
assert.EqualValues(t, 1, userID)
|
||||||
|
|
||||||
_, err = user_model.LookupUserRedirect("doesnotexist")
|
_, err = user_model.LookupUserRedirect(db.DefaultContext, "doesnotexist")
|
||||||
assert.True(t, user_model.IsErrUserRedirectNotExist(err))
|
assert.True(t, user_model.IsErrUserRedirectNotExist(err))
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ func GetOrganizationByParams(ctx *Context) {
|
||||||
ctx.Org.Organization, err = organization.GetOrgByName(ctx, orgName)
|
ctx.Org.Organization, err = organization.GetOrgByName(ctx, orgName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if organization.IsErrOrgNotExist(err) {
|
if organization.IsErrOrgNotExist(err) {
|
||||||
redirectUserID, err := user_model.LookupUserRedirect(orgName)
|
redirectUserID, err := user_model.LookupUserRedirect(ctx, orgName)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
RedirectToUser(ctx.Base, orgName, redirectUserID)
|
RedirectToUser(ctx.Base, orgName, redirectUserID)
|
||||||
} else if user_model.IsErrUserRedirectNotExist(err) {
|
} else if user_model.IsErrUserRedirectNotExist(err) {
|
||||||
|
|
|
@ -456,7 +456,7 @@ func RepoAssignment(ctx *Context) context.CancelFunc {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if redirectUserID, err := user_model.LookupUserRedirect(userName); err == nil {
|
if redirectUserID, err := user_model.LookupUserRedirect(ctx, userName); err == nil {
|
||||||
RedirectToUser(ctx.Base, userName, redirectUserID)
|
RedirectToUser(ctx.Base, userName, redirectUserID)
|
||||||
} else if user_model.IsErrUserRedirectNotExist(err) {
|
} else if user_model.IsErrUserRedirectNotExist(err) {
|
||||||
ctx.NotFound("GetUserByName", nil)
|
ctx.NotFound("GetUserByName", nil)
|
||||||
|
|
|
@ -33,7 +33,7 @@ func checkAuthorizedKeys(ctx context.Context, logger log.Logger, autofix bool) e
|
||||||
return fmt.Errorf("Unable to open authorized_keys file. ERROR: %w", err)
|
return fmt.Errorf("Unable to open authorized_keys file. ERROR: %w", err)
|
||||||
}
|
}
|
||||||
logger.Warn("Unable to open authorized_keys. (ERROR: %v). Attempting to rewrite...", err)
|
logger.Warn("Unable to open authorized_keys. (ERROR: %v). Attempting to rewrite...", err)
|
||||||
if err = asymkey_model.RewriteAllPublicKeys(); err != nil {
|
if err = asymkey_model.RewriteAllPublicKeys(ctx); err != nil {
|
||||||
logger.Critical("Unable to rewrite authorized_keys file. ERROR: %v", err)
|
logger.Critical("Unable to rewrite authorized_keys file. ERROR: %v", err)
|
||||||
return fmt.Errorf("Unable to rewrite authorized_keys file. ERROR: %w", err)
|
return fmt.Errorf("Unable to rewrite authorized_keys file. ERROR: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ func checkAuthorizedKeys(ctx context.Context, logger log.Logger, autofix bool) e
|
||||||
return fmt.Errorf(`authorized_keys is out of date and should be regenerated with "gitea admin regenerate keys" or "gitea doctor --run authorized-keys --fix"`)
|
return fmt.Errorf(`authorized_keys is out of date and should be regenerated with "gitea admin regenerate keys" or "gitea doctor --run authorized-keys --fix"`)
|
||||||
}
|
}
|
||||||
logger.Warn("authorized_keys is out of date. Attempting rewrite...")
|
logger.Warn("authorized_keys is out of date. Attempting rewrite...")
|
||||||
err = asymkey_model.RewriteAllPublicKeys()
|
err = asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Critical("Unable to rewrite authorized_keys file. ERROR: %v", err)
|
logger.Critical("Unable to rewrite authorized_keys file. ERROR: %v", err)
|
||||||
return fmt.Errorf("Unable to rewrite authorized_keys file. ERROR: %w", err)
|
return fmt.Errorf("Unable to rewrite authorized_keys file. ERROR: %w", err)
|
||||||
|
|
|
@ -119,7 +119,7 @@ func (graph *Graph) LoadAndProcessCommits(ctx context.Context, repository *repo_
|
||||||
return repo_model.IsOwnerMemberCollaborator(repository, user.ID)
|
return repo_model.IsOwnerMemberCollaborator(repository, user.ID)
|
||||||
}, &keyMap)
|
}, &keyMap)
|
||||||
|
|
||||||
statuses, _, err := git_model.GetLatestCommitStatus(db.DefaultContext, repository.ID, c.Commit.ID.String(), db.ListOptions{})
|
statuses, _, err := git_model.GetLatestCommitStatus(ctx, repository.ID, c.Commit.ID.String(), db.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("GetLatestCommitStatus: %v", err)
|
log.Error("GetLatestCommitStatus: %v", err)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -4,19 +4,20 @@
|
||||||
package repository
|
package repository
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"code.gitea.io/gitea/models/db"
|
"context"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CanUserDelete returns true if user could delete the repository
|
// CanUserDelete returns true if user could delete the repository
|
||||||
func CanUserDelete(repo *repo_model.Repository, user *user_model.User) (bool, error) {
|
func CanUserDelete(ctx context.Context, repo *repo_model.Repository, user *user_model.User) (bool, error) {
|
||||||
if user.IsAdmin || user.ID == repo.OwnerID {
|
if user.IsAdmin || user.ID == repo.OwnerID {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := repo.LoadOwner(db.DefaultContext); err != nil {
|
if err := repo.LoadOwner(ctx); err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@ func MigrateRepositoryGitData(ctx context.Context, u *user_model.User,
|
||||||
// note: this will greatly improve release (tag) sync
|
// note: this will greatly improve release (tag) sync
|
||||||
// for pull-mirrors with many tags
|
// for pull-mirrors with many tags
|
||||||
repo.IsMirror = opts.Mirror
|
repo.IsMirror = opts.Mirror
|
||||||
if err = SyncReleasesWithTags(repo, gitRepo); err != nil {
|
if err = SyncReleasesWithTags(ctx, repo, gitRepo); err != nil {
|
||||||
log.Error("Failed to synchronize tags to releases for repository: %v", err)
|
log.Error("Failed to synchronize tags to releases for repository: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -285,13 +285,13 @@ func CleanUpMigrateInfo(ctx context.Context, repo *repo_model.Repository) (*repo
|
||||||
}
|
}
|
||||||
|
|
||||||
// SyncReleasesWithTags synchronizes release table with repository tags
|
// SyncReleasesWithTags synchronizes release table with repository tags
|
||||||
func SyncReleasesWithTags(repo *repo_model.Repository, gitRepo *git.Repository) error {
|
func SyncReleasesWithTags(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository) error {
|
||||||
log.Debug("SyncReleasesWithTags: in Repo[%d:%s/%s]", repo.ID, repo.OwnerName, repo.Name)
|
log.Debug("SyncReleasesWithTags: in Repo[%d:%s/%s]", repo.ID, repo.OwnerName, repo.Name)
|
||||||
|
|
||||||
// optimized procedure for pull-mirrors which saves a lot of time (in
|
// optimized procedure for pull-mirrors which saves a lot of time (in
|
||||||
// particular for repos with many tags).
|
// particular for repos with many tags).
|
||||||
if repo.IsMirror {
|
if repo.IsMirror {
|
||||||
return pullMirrorReleaseSync(repo, gitRepo)
|
return pullMirrorReleaseSync(ctx, repo, gitRepo)
|
||||||
}
|
}
|
||||||
|
|
||||||
existingRelTags := make(container.Set[string])
|
existingRelTags := make(container.Set[string])
|
||||||
|
@ -318,7 +318,7 @@ func SyncReleasesWithTags(repo *repo_model.Repository, gitRepo *git.Repository)
|
||||||
return fmt.Errorf("unable to GetTagCommitID for %q in Repo[%d:%s/%s]: %w", rel.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
return fmt.Errorf("unable to GetTagCommitID for %q in Repo[%d:%s/%s]: %w", rel.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
}
|
}
|
||||||
if git.IsErrNotExist(err) || commitID != rel.Sha1 {
|
if git.IsErrNotExist(err) || commitID != rel.Sha1 {
|
||||||
if err := repo_model.PushUpdateDeleteTag(repo, rel.TagName); err != nil {
|
if err := repo_model.PushUpdateDeleteTag(ctx, repo, rel.TagName); err != nil {
|
||||||
return fmt.Errorf("unable to PushUpdateDeleteTag: %q in Repo[%d:%s/%s]: %w", rel.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
return fmt.Errorf("unable to PushUpdateDeleteTag: %q in Repo[%d:%s/%s]: %w", rel.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -333,7 +333,7 @@ func SyncReleasesWithTags(repo *repo_model.Repository, gitRepo *git.Repository)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := PushUpdateAddTag(db.DefaultContext, repo, gitRepo, tagName, sha1, refname); err != nil {
|
if err := PushUpdateAddTag(ctx, repo, gitRepo, tagName, sha1, refname); err != nil {
|
||||||
return fmt.Errorf("unable to PushUpdateAddTag: %q to Repo[%d:%s/%s]: %w", tagName, repo.ID, repo.OwnerName, repo.Name, err)
|
return fmt.Errorf("unable to PushUpdateAddTag: %q to Repo[%d:%s/%s]: %w", tagName, repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -390,7 +390,7 @@ func PushUpdateAddTag(ctx context.Context, repo *repo_model.Repository, gitRepo
|
||||||
rel.PublisherID = author.ID
|
rel.PublisherID = author.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
return repo_model.SaveOrUpdateTag(repo, &rel)
|
return repo_model.SaveOrUpdateTag(ctx, repo, &rel)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StoreMissingLfsObjectsInRepository downloads missing LFS objects
|
// StoreMissingLfsObjectsInRepository downloads missing LFS objects
|
||||||
|
@ -497,13 +497,13 @@ func StoreMissingLfsObjectsInRepository(ctx context.Context, repo *repo_model.Re
|
||||||
// upstream. Hence, after each sync we want the pull-mirror release set to be
|
// upstream. Hence, after each sync we want the pull-mirror release set to be
|
||||||
// identical to the upstream tag set. This is much more efficient for
|
// identical to the upstream tag set. This is much more efficient for
|
||||||
// repositories like https://github.com/vim/vim (with over 13000 tags).
|
// repositories like https://github.com/vim/vim (with over 13000 tags).
|
||||||
func pullMirrorReleaseSync(repo *repo_model.Repository, gitRepo *git.Repository) error {
|
func pullMirrorReleaseSync(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository) error {
|
||||||
log.Trace("pullMirrorReleaseSync: rebuilding releases for pull-mirror Repo[%d:%s/%s]", repo.ID, repo.OwnerName, repo.Name)
|
log.Trace("pullMirrorReleaseSync: rebuilding releases for pull-mirror Repo[%d:%s/%s]", repo.ID, repo.OwnerName, repo.Name)
|
||||||
tags, numTags, err := gitRepo.GetTagInfos(0, 0)
|
tags, numTags, err := gitRepo.GetTagInfos(0, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to GetTagInfos in pull-mirror Repo[%d:%s/%s]: %w", repo.ID, repo.OwnerName, repo.Name, err)
|
return fmt.Errorf("unable to GetTagInfos in pull-mirror Repo[%d:%s/%s]: %w", repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
}
|
}
|
||||||
err = db.WithTx(db.DefaultContext, func(ctx context.Context) error {
|
err = db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
//
|
//
|
||||||
// clear out existing releases
|
// clear out existing releases
|
||||||
//
|
//
|
||||||
|
|
|
@ -62,7 +62,7 @@ func GetRepositoryKey(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetRepositoryFile(ctx *context.Context) {
|
func GetRepositoryFile(ctx *context.Context) {
|
||||||
pv, err := alpine_service.GetOrCreateRepositoryVersion(ctx.Package.Owner.ID)
|
pv, err := alpine_service.GetOrCreateRepositoryVersion(ctx, ctx.Package.Owner.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
|
@ -134,6 +134,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -227,7 +228,7 @@ func DeletePackageFile(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := packages_service.RemovePackageFileAndVersionIfUnreferenced(ctx.Doer, pfs[0]); err != nil {
|
if err := packages_service.RemovePackageFileAndVersionIfUnreferenced(ctx, ctx.Doer, pfs[0]); err != nil {
|
||||||
if errors.Is(err, util.ErrNotExist) {
|
if errors.Is(err, util.ErrNotExist) {
|
||||||
apiError(ctx, http.StatusNotFound, err)
|
apiError(ctx, http.StatusNotFound, err)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -214,6 +214,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pv, _, err := packages_service.CreatePackageAndAddFile(
|
pv, _, err := packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -286,6 +286,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageAndAddFile(
|
_, _, err = packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -356,6 +357,7 @@ func DeletePackageVersion(ctx *context.Context) {
|
||||||
packageVersion := ctx.Params("version")
|
packageVersion := ctx.Params("version")
|
||||||
|
|
||||||
err := packages_service.RemovePackageVersionByNameAndVersion(
|
err := packages_service.RemovePackageVersionByNameAndVersion(
|
||||||
|
ctx,
|
||||||
ctx.Doer,
|
ctx.Doer,
|
||||||
&packages_service.PackageInfo{
|
&packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -390,7 +392,7 @@ func DeletePackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pv := range pvs {
|
for _, pv := range pvs {
|
||||||
if err := packages_service.RemovePackageVersion(ctx.Doer, pv); err != nil {
|
if err := packages_service.RemovePackageVersion(ctx, ctx.Doer, pv); err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,6 +220,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageAndAddFile(
|
_, _, err = packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -408,6 +408,7 @@ func uploadFile(ctx *context.Context, fileFilter container.Set[string], fileKey
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
pci,
|
pci,
|
||||||
pfci,
|
pfci,
|
||||||
)
|
)
|
||||||
|
|
|
@ -229,6 +229,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -653,7 +653,7 @@ func DeleteManifest(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pv := range pvs {
|
for _, pv := range pvs {
|
||||||
if err := packages_service.RemovePackageVersion(ctx.Doer, pv); err != nil {
|
if err := packages_service.RemovePackageVersion(ctx, ctx.Doer, pv); err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,6 +183,7 @@ func uploadPackageFile(ctx *context.Context, compositeKey string, properties map
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -45,7 +45,7 @@ func GetRepositoryKey(ctx *context.Context) {
|
||||||
// https://wiki.debian.org/DebianRepository/Format#A.22Release.22_files
|
// https://wiki.debian.org/DebianRepository/Format#A.22Release.22_files
|
||||||
// https://wiki.debian.org/DebianRepository/Format#A.22Packages.22_Indices
|
// https://wiki.debian.org/DebianRepository/Format#A.22Packages.22_Indices
|
||||||
func GetRepositoryFile(ctx *context.Context) {
|
func GetRepositoryFile(ctx *context.Context) {
|
||||||
pv, err := debian_service.GetOrCreateRepositoryVersion(ctx.Package.Owner.ID)
|
pv, err := debian_service.GetOrCreateRepositoryVersion(ctx, ctx.Package.Owner.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
|
@ -81,7 +81,7 @@ func GetRepositoryFile(ctx *context.Context) {
|
||||||
|
|
||||||
// https://wiki.debian.org/DebianRepository/Format#indices_acquisition_via_hashsums_.28by-hash.29
|
// https://wiki.debian.org/DebianRepository/Format#indices_acquisition_via_hashsums_.28by-hash.29
|
||||||
func GetRepositoryFileByHash(ctx *context.Context) {
|
func GetRepositoryFileByHash(ctx *context.Context) {
|
||||||
pv, err := debian_service.GetOrCreateRepositoryVersion(ctx.Package.Owner.ID)
|
pv, err := debian_service.GetOrCreateRepositoryVersion(ctx, ctx.Package.Owner.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
|
@ -159,6 +159,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -89,6 +89,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
defer buf.Close()
|
defer buf.Close()
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -125,6 +126,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
// DeletePackage deletes the specific generic package.
|
// DeletePackage deletes the specific generic package.
|
||||||
func DeletePackage(ctx *context.Context) {
|
func DeletePackage(ctx *context.Context) {
|
||||||
err := packages_service.RemovePackageVersionByNameAndVersion(
|
err := packages_service.RemovePackageVersionByNameAndVersion(
|
||||||
|
ctx,
|
||||||
ctx.Doer,
|
ctx.Doer,
|
||||||
&packages_service.PackageInfo{
|
&packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -176,7 +178,7 @@ func DeletePackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(pfs) == 1 {
|
if len(pfs) == 1 {
|
||||||
if err := packages_service.RemovePackageVersion(ctx.Doer, pv); err != nil {
|
if err := packages_service.RemovePackageVersion(ctx, ctx.Doer, pv); err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -185,6 +185,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageAndAddFile(
|
_, _, err = packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -174,6 +174,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -356,6 +356,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
pvci,
|
pvci,
|
||||||
pfci,
|
pfci,
|
||||||
)
|
)
|
||||||
|
|
|
@ -190,6 +190,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
defer buf.Close()
|
defer buf.Close()
|
||||||
|
|
||||||
pv, _, err := packages_service.CreatePackageAndAddFile(
|
pv, _, err := packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -255,6 +256,7 @@ func DeletePackageVersion(ctx *context.Context) {
|
||||||
packageVersion := ctx.Params("version")
|
packageVersion := ctx.Params("version")
|
||||||
|
|
||||||
err := packages_service.RemovePackageVersionByNameAndVersion(
|
err := packages_service.RemovePackageVersionByNameAndVersion(
|
||||||
|
ctx,
|
||||||
ctx.Doer,
|
ctx.Doer,
|
||||||
&packages_service.PackageInfo{
|
&packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -291,7 +293,7 @@ func DeletePackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pv := range pvs {
|
for _, pv := range pvs {
|
||||||
if err := packages_service.RemovePackageVersion(ctx.Doer, pv); err != nil {
|
if err := packages_service.RemovePackageVersion(ctx, ctx.Doer, pv); err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -431,6 +431,7 @@ func UploadPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err := packages_service.CreatePackageAndAddFile(
|
_, _, err := packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -503,6 +504,7 @@ func UploadSymbolPackage(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = packages_service.AddFileToExistingPackage(
|
_, err = packages_service.AddFileToExistingPackage(
|
||||||
|
ctx,
|
||||||
pi,
|
pi,
|
||||||
&packages_service.PackageFileCreationInfo{
|
&packages_service.PackageFileCreationInfo{
|
||||||
PackageFileInfo: packages_service.PackageFileInfo{
|
PackageFileInfo: packages_service.PackageFileInfo{
|
||||||
|
@ -529,6 +531,7 @@ func UploadSymbolPackage(ctx *context.Context) {
|
||||||
|
|
||||||
for _, pdb := range pdbs {
|
for _, pdb := range pdbs {
|
||||||
_, err := packages_service.AddFileToExistingPackage(
|
_, err := packages_service.AddFileToExistingPackage(
|
||||||
|
ctx,
|
||||||
pi,
|
pi,
|
||||||
&packages_service.PackageFileCreationInfo{
|
&packages_service.PackageFileCreationInfo{
|
||||||
PackageFileInfo: packages_service.PackageFileInfo{
|
PackageFileInfo: packages_service.PackageFileInfo{
|
||||||
|
@ -647,6 +650,7 @@ func DeletePackage(ctx *context.Context) {
|
||||||
packageVersion := ctx.Params("version")
|
packageVersion := ctx.Params("version")
|
||||||
|
|
||||||
err := packages_service.RemovePackageVersionByNameAndVersion(
|
err := packages_service.RemovePackageVersionByNameAndVersion(
|
||||||
|
ctx,
|
||||||
ctx.Doer,
|
ctx.Doer,
|
||||||
&packages_service.PackageInfo{
|
&packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -189,6 +189,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageAndAddFile(
|
_, _, err = packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -145,6 +145,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -59,7 +59,7 @@ func GetRepositoryKey(ctx *context.Context) {
|
||||||
|
|
||||||
// Gets a pre-generated repository metadata file
|
// Gets a pre-generated repository metadata file
|
||||||
func GetRepositoryFile(ctx *context.Context) {
|
func GetRepositoryFile(ctx *context.Context) {
|
||||||
pv, err := rpm_service.GetOrCreateRepositoryVersion(ctx.Package.Owner.ID)
|
pv, err := rpm_service.GetOrCreateRepositoryVersion(ctx, ctx.Package.Owner.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
apiError(ctx, http.StatusInternalServerError, err)
|
apiError(ctx, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
|
@ -123,6 +123,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -234,6 +234,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageAndAddFile(
|
_, _, err = packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
@ -280,6 +281,7 @@ func DeletePackage(ctx *context.Context) {
|
||||||
packageVersion := ctx.FormString("version")
|
packageVersion := ctx.FormString("version")
|
||||||
|
|
||||||
err := packages_service.RemovePackageVersionByNameAndVersion(
|
err := packages_service.RemovePackageVersionByNameAndVersion(
|
||||||
|
ctx,
|
||||||
ctx.Doer,
|
ctx.Doer,
|
||||||
&packages_service.PackageInfo{
|
&packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -329,6 +329,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
pv, _, err := packages_service.CreatePackageAndAddFile(
|
pv, _, err := packages_service.CreatePackageAndAddFile(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -177,6 +177,7 @@ func UploadPackageFile(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
_, _, err = packages_service.CreatePackageOrAddFileToExisting(
|
||||||
|
ctx,
|
||||||
&packages_service.PackageCreationInfo{
|
&packages_service.PackageCreationInfo{
|
||||||
PackageInfo: packages_service.PackageInfo{
|
PackageInfo: packages_service.PackageInfo{
|
||||||
Owner: ctx.Package.Owner,
|
Owner: ctx.Package.Owner,
|
||||||
|
|
|
@ -402,7 +402,7 @@ func DeleteUserPublicKey(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
if err := asymkey_service.DeletePublicKey(ctx.ContextUser, ctx.ParamsInt64(":id")); err != nil {
|
if err := asymkey_service.DeletePublicKey(ctx, ctx.ContextUser, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if asymkey_model.IsErrKeyNotExist(err) {
|
if asymkey_model.IsErrKeyNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
} else if asymkey_model.IsErrKeyAccessDenied(err) {
|
} else if asymkey_model.IsErrKeyAccessDenied(err) {
|
||||||
|
|
|
@ -148,7 +148,7 @@ func repoAssignment() func(ctx *context.APIContext) {
|
||||||
owner, err = user_model.GetUserByName(ctx, userName)
|
owner, err = user_model.GetUserByName(ctx, userName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if user_model.IsErrUserNotExist(err) {
|
if user_model.IsErrUserNotExist(err) {
|
||||||
if redirectUserID, err := user_model.LookupUserRedirect(userName); err == nil {
|
if redirectUserID, err := user_model.LookupUserRedirect(ctx, userName); err == nil {
|
||||||
context.RedirectToUser(ctx.Base, userName, redirectUserID)
|
context.RedirectToUser(ctx.Base, userName, redirectUserID)
|
||||||
} else if user_model.IsErrUserRedirectNotExist(err) {
|
} else if user_model.IsErrUserRedirectNotExist(err) {
|
||||||
ctx.NotFound("GetUserByName", err)
|
ctx.NotFound("GetUserByName", err)
|
||||||
|
@ -564,7 +564,7 @@ func orgAssignment(args ...bool) func(ctx *context.APIContext) {
|
||||||
ctx.Org.Organization, err = organization.GetOrgByName(ctx, ctx.Params(":org"))
|
ctx.Org.Organization, err = organization.GetOrgByName(ctx, ctx.Params(":org"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if organization.IsErrOrgNotExist(err) {
|
if organization.IsErrOrgNotExist(err) {
|
||||||
redirectUserID, err := user_model.LookupUserRedirect(ctx.Params(":org"))
|
redirectUserID, err := user_model.LookupUserRedirect(ctx, ctx.Params(":org"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
context.RedirectToUser(ctx.Base, ctx.Params(":org"), redirectUserID)
|
context.RedirectToUser(ctx.Base, ctx.Params(":org"), redirectUserID)
|
||||||
} else if user_model.IsErrUserRedirectNotExist(err) {
|
} else if user_model.IsErrUserRedirectNotExist(err) {
|
||||||
|
|
|
@ -53,7 +53,7 @@ func ListTeams(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
teams, count, err := organization.SearchTeam(&organization.SearchTeamOptions{
|
teams, count, err := organization.SearchTeam(ctx, &organization.SearchTeamOptions{
|
||||||
ListOptions: utils.GetListOptions(ctx),
|
ListOptions: utils.GetListOptions(ctx),
|
||||||
OrgID: ctx.Org.Organization.ID,
|
OrgID: ctx.Org.Organization.ID,
|
||||||
})
|
})
|
||||||
|
@ -92,7 +92,7 @@ func ListUserTeams(ctx *context.APIContext) {
|
||||||
// "200":
|
// "200":
|
||||||
// "$ref": "#/responses/TeamList"
|
// "$ref": "#/responses/TeamList"
|
||||||
|
|
||||||
teams, count, err := organization.SearchTeam(&organization.SearchTeamOptions{
|
teams, count, err := organization.SearchTeam(ctx, &organization.SearchTeamOptions{
|
||||||
ListOptions: utils.GetListOptions(ctx),
|
ListOptions: utils.GetListOptions(ctx),
|
||||||
UserID: ctx.Doer.ID,
|
UserID: ctx.Doer.ID,
|
||||||
})
|
})
|
||||||
|
@ -810,7 +810,7 @@ func SearchTeam(ctx *context.APIContext) {
|
||||||
opts.UserID = ctx.Doer.ID
|
opts.UserID = ctx.Doer.ID
|
||||||
}
|
}
|
||||||
|
|
||||||
teams, maxResults, err := organization.SearchTeam(opts)
|
teams, maxResults, err := organization.SearchTeam(ctx, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("SearchTeam failed: %v", err)
|
log.Error("SearchTeam failed: %v", err)
|
||||||
ctx.JSON(http.StatusInternalServerError, map[string]any{
|
ctx.JSON(http.StatusInternalServerError, map[string]any{
|
||||||
|
|
|
@ -164,7 +164,7 @@ func DeletePackage(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
err := packages_service.RemovePackageVersion(ctx.Doer, ctx.Package.Descriptor.Version)
|
err := packages_service.RemovePackageVersion(ctx, ctx.Doer, ctx.Package.Descriptor.Version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "RemovePackageVersion", err)
|
ctx.Error(http.StatusInternalServerError, "RemovePackageVersion", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -68,7 +68,7 @@ func GetIssueCommentReactions(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reactions, _, err := issues_model.FindCommentReactions(comment.IssueID, comment.ID)
|
reactions, _, err := issues_model.FindCommentReactions(ctx, comment.IssueID, comment.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "FindCommentReactions", err)
|
ctx.Error(http.StatusInternalServerError, "FindCommentReactions", err)
|
||||||
return
|
return
|
||||||
|
@ -202,7 +202,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
|
||||||
|
|
||||||
if isCreateType {
|
if isCreateType {
|
||||||
// PostIssueCommentReaction part
|
// PostIssueCommentReaction part
|
||||||
reaction, err := issues_model.CreateCommentReaction(ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Reaction)
|
reaction, err := issues_model.CreateCommentReaction(ctx, ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Reaction)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if issues_model.IsErrForbiddenIssueReaction(err) {
|
if issues_model.IsErrForbiddenIssueReaction(err) {
|
||||||
ctx.Error(http.StatusForbidden, err.Error(), err)
|
ctx.Error(http.StatusForbidden, err.Error(), err)
|
||||||
|
@ -225,7 +225,7 @@ func changeIssueCommentReaction(ctx *context.APIContext, form api.EditReactionOp
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// DeleteIssueCommentReaction part
|
// DeleteIssueCommentReaction part
|
||||||
err = issues_model.DeleteCommentReaction(ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Reaction)
|
err = issues_model.DeleteCommentReaction(ctx, ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Reaction)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "DeleteCommentReaction", err)
|
ctx.Error(http.StatusInternalServerError, "DeleteCommentReaction", err)
|
||||||
return
|
return
|
||||||
|
@ -292,7 +292,7 @@ func GetIssueReactions(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reactions, count, err := issues_model.FindIssueReactions(issue.ID, utils.GetListOptions(ctx))
|
reactions, count, err := issues_model.FindIssueReactions(ctx, issue.ID, utils.GetListOptions(ctx))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "FindIssueReactions", err)
|
ctx.Error(http.StatusInternalServerError, "FindIssueReactions", err)
|
||||||
return
|
return
|
||||||
|
@ -418,7 +418,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
|
||||||
|
|
||||||
if isCreateType {
|
if isCreateType {
|
||||||
// PostIssueReaction part
|
// PostIssueReaction part
|
||||||
reaction, err := issues_model.CreateIssueReaction(ctx.Doer.ID, issue.ID, form.Reaction)
|
reaction, err := issues_model.CreateIssueReaction(ctx, ctx.Doer.ID, issue.ID, form.Reaction)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if issues_model.IsErrForbiddenIssueReaction(err) {
|
if issues_model.IsErrForbiddenIssueReaction(err) {
|
||||||
ctx.Error(http.StatusForbidden, err.Error(), err)
|
ctx.Error(http.StatusForbidden, err.Error(), err)
|
||||||
|
@ -441,7 +441,7 @@ func changeIssueReaction(ctx *context.APIContext, form api.EditReactionOption, i
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// DeleteIssueReaction part
|
// DeleteIssueReaction part
|
||||||
err = issues_model.DeleteIssueReaction(ctx.Doer.ID, issue.ID, form.Reaction)
|
err = issues_model.DeleteIssueReaction(ctx, ctx.Doer.ID, issue.ID, form.Reaction)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "DeleteIssueReaction", err)
|
ctx.Error(http.StatusInternalServerError, "DeleteIssueReaction", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -279,7 +279,7 @@ func DeleteDeploykey(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
if err := asymkey_service.DeleteDeployKey(ctx.Doer, ctx.ParamsInt64(":id")); err != nil {
|
if err := asymkey_service.DeleteDeployKey(ctx, ctx.Doer, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if asymkey_model.IsErrKeyAccessDenied(err) {
|
if asymkey_model.IsErrKeyAccessDenied(err) {
|
||||||
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -92,7 +92,7 @@ func ListPullReviews(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
count, err := issues_model.CountReviews(opts)
|
count, err := issues_model.CountReviews(ctx, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.InternalServerError(err)
|
ctx.InternalServerError(err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -90,7 +90,7 @@ func GetLatestRelease(ctx *context.APIContext) {
|
||||||
// "$ref": "#/responses/Release"
|
// "$ref": "#/responses/Release"
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
release, err := repo_model.GetLatestReleaseByRepoID(ctx.Repo.Repository.ID)
|
release, err := repo_model.GetLatestReleaseByRepoID(ctx, ctx.Repo.Repository.ID)
|
||||||
if err != nil && !repo_model.IsErrReleaseNotExist(err) {
|
if err != nil && !repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.Error(http.StatusInternalServerError, "GetLatestRelease", err)
|
ctx.Error(http.StatusInternalServerError, "GetLatestRelease", err)
|
||||||
return
|
return
|
||||||
|
@ -179,7 +179,7 @@ func ListReleases(ctx *context.APIContext) {
|
||||||
rels[i] = convert.ToAPIRelease(ctx, ctx.Repo.Repository, release)
|
rels[i] = convert.ToAPIRelease(ctx, ctx.Repo.Repository, release)
|
||||||
}
|
}
|
||||||
|
|
||||||
filteredCount, err := repo_model.CountReleasesByRepoID(ctx.Repo.Repository.ID, opts)
|
filteredCount, err := repo_model.CountReleasesByRepoID(ctx, ctx.Repo.Repository.ID, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.InternalServerError(err)
|
ctx.InternalServerError(err)
|
||||||
return
|
return
|
||||||
|
@ -222,7 +222,7 @@ func CreateRelease(ctx *context.APIContext) {
|
||||||
// "409":
|
// "409":
|
||||||
// "$ref": "#/responses/error"
|
// "$ref": "#/responses/error"
|
||||||
form := web.GetForm(ctx).(*api.CreateReleaseOption)
|
form := web.GetForm(ctx).(*api.CreateReleaseOption)
|
||||||
rel, err := repo_model.GetRelease(ctx.Repo.Repository.ID, form.TagName)
|
rel, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, form.TagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !repo_model.IsErrReleaseNotExist(err) {
|
if !repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.Error(http.StatusInternalServerError, "GetRelease", err)
|
ctx.Error(http.StatusInternalServerError, "GetRelease", err)
|
||||||
|
@ -269,7 +269,7 @@ func CreateRelease(ctx *context.APIContext) {
|
||||||
rel.Publisher = ctx.Doer
|
rel.Publisher = ctx.Doer
|
||||||
rel.Target = form.Target
|
rel.Target = form.Target
|
||||||
|
|
||||||
if err = release_service.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
|
if err = release_service.UpdateRelease(ctx, ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
|
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -344,7 +344,7 @@ func EditRelease(ctx *context.APIContext) {
|
||||||
if form.IsPrerelease != nil {
|
if form.IsPrerelease != nil {
|
||||||
rel.IsPrerelease = *form.IsPrerelease
|
rel.IsPrerelease = *form.IsPrerelease
|
||||||
}
|
}
|
||||||
if err := release_service.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
|
if err := release_service.UpdateRelease(ctx, ctx.Doer, ctx.Repo.GitRepo, rel, nil, nil, nil); err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
|
ctx.Error(http.StatusInternalServerError, "UpdateRelease", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ func GetReleaseByTag(ctx *context.APIContext) {
|
||||||
|
|
||||||
tag := ctx.Params(":tag")
|
tag := ctx.Params(":tag")
|
||||||
|
|
||||||
release, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tag)
|
release, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
|
@ -97,7 +97,7 @@ func DeleteReleaseByTag(ctx *context.APIContext) {
|
||||||
|
|
||||||
tag := ctx.Params(":tag")
|
tag := ctx.Params(":tag")
|
||||||
|
|
||||||
release, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tag)
|
release, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
|
|
|
@ -1114,7 +1114,7 @@ func Delete(ctx *context.APIContext) {
|
||||||
owner := ctx.Repo.Owner
|
owner := ctx.Repo.Owner
|
||||||
repo := ctx.Repo.Repository
|
repo := ctx.Repo.Repository
|
||||||
|
|
||||||
canDelete, err := repo_module.CanUserDelete(repo, ctx.Doer)
|
canDelete, err := repo_module.CanUserDelete(ctx, repo, ctx.Doer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "CanUserDelete", err)
|
ctx.Error(http.StatusInternalServerError, "CanUserDelete", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -257,7 +257,7 @@ func DeleteTag(ctx *context.APIContext) {
|
||||||
// "$ref": "#/responses/repoArchivedError"
|
// "$ref": "#/responses/repoArchivedError"
|
||||||
tagName := ctx.Params("*")
|
tagName := ctx.Params("*")
|
||||||
|
|
||||||
tag, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tagName)
|
tag, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
|
|
|
@ -29,7 +29,7 @@ func listGPGKeys(ctx *context.APIContext, uid int64, listOptions db.ListOptions)
|
||||||
apiKeys[i] = convert.ToGPGKey(keys[i])
|
apiKeys[i] = convert.ToGPGKey(keys[i])
|
||||||
}
|
}
|
||||||
|
|
||||||
total, err := asymkey_model.CountUserGPGKeys(uid)
|
total, err := asymkey_model.CountUserGPGKeys(ctx, uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.InternalServerError(err)
|
ctx.InternalServerError(err)
|
||||||
return
|
return
|
||||||
|
@ -112,7 +112,7 @@ func GetGPGKey(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
key, err := asymkey_model.GetGPGKeyByID(ctx.ParamsInt64(":id"))
|
key, err := asymkey_model.GetGPGKeyByID(ctx, ctx.ParamsInt64(":id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if asymkey_model.IsErrGPGKeyNotExist(err) {
|
if asymkey_model.IsErrGPGKeyNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
|
@ -129,9 +129,9 @@ func CreateUserGPGKey(ctx *context.APIContext, form api.CreateGPGKeyOption, uid
|
||||||
token := asymkey_model.VerificationToken(ctx.Doer, 1)
|
token := asymkey_model.VerificationToken(ctx.Doer, 1)
|
||||||
lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
|
lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
|
||||||
|
|
||||||
keys, err := asymkey_model.AddGPGKey(uid, form.ArmoredKey, token, form.Signature)
|
keys, err := asymkey_model.AddGPGKey(ctx, uid, form.ArmoredKey, token, form.Signature)
|
||||||
if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
|
if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
|
||||||
keys, err = asymkey_model.AddGPGKey(uid, form.ArmoredKey, lastToken, form.Signature)
|
keys, err = asymkey_model.AddGPGKey(ctx, uid, form.ArmoredKey, lastToken, form.Signature)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
HandleAddGPGKeyError(ctx, err, token)
|
HandleAddGPGKeyError(ctx, err, token)
|
||||||
|
@ -198,7 +198,7 @@ func VerifyUserGPGKey(ctx *context.APIContext) {
|
||||||
ctx.Error(http.StatusInternalServerError, "VerifyUserGPGKey", err)
|
ctx.Error(http.StatusInternalServerError, "VerifyUserGPGKey", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
key, err := asymkey_model.GetGPGKeysByKeyID(form.KeyID)
|
key, err := asymkey_model.GetGPGKeysByKeyID(ctx, form.KeyID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if asymkey_model.IsErrGPGKeyNotExist(err) {
|
if asymkey_model.IsErrGPGKeyNotExist(err) {
|
||||||
ctx.NotFound()
|
ctx.NotFound()
|
||||||
|
@ -259,7 +259,7 @@ func DeleteGPGKey(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
if err := asymkey_model.DeleteGPGKey(ctx.Doer, ctx.ParamsInt64(":id")); err != nil {
|
if err := asymkey_model.DeleteGPGKey(ctx, ctx.Doer, ctx.ParamsInt64(":id")); err != nil {
|
||||||
if asymkey_model.IsErrGPGKeyAccessDenied(err) {
|
if asymkey_model.IsErrGPGKeyAccessDenied(err) {
|
||||||
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -16,7 +16,7 @@ func GetUserByParamsName(ctx *context.APIContext, name string) *user_model.User
|
||||||
user, err := user_model.GetUserByName(ctx, username)
|
user, err := user_model.GetUserByName(ctx, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if user_model.IsErrUserNotExist(err) {
|
if user_model.IsErrUserNotExist(err) {
|
||||||
if redirectUserID, err2 := user_model.LookupUserRedirect(username); err2 == nil {
|
if redirectUserID, err2 := user_model.LookupUserRedirect(ctx, username); err2 == nil {
|
||||||
context.RedirectToUser(ctx.Base, username, redirectUserID)
|
context.RedirectToUser(ctx.Base, username, redirectUserID)
|
||||||
} else {
|
} else {
|
||||||
ctx.NotFound("GetUserByName", err)
|
ctx.NotFound("GetUserByName", err)
|
||||||
|
|
|
@ -277,7 +277,7 @@ func DeletePublicKey(ctx *context.APIContext) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := asymkey_service.DeletePublicKey(ctx.Doer, id); err != nil {
|
if err := asymkey_service.DeletePublicKey(ctx, ctx.Doer, id); err != nil {
|
||||||
if asymkey_model.IsErrKeyAccessDenied(err) {
|
if asymkey_model.IsErrKeyAccessDenied(err) {
|
||||||
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
ctx.Error(http.StatusForbidden, "", "You do not have access to this key")
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -138,7 +138,7 @@ func GetUserHeatmapData(ctx *context.APIContext) {
|
||||||
// "404":
|
// "404":
|
||||||
// "$ref": "#/responses/notFound"
|
// "$ref": "#/responses/notFound"
|
||||||
|
|
||||||
heatmap, err := activities_model.GetUserHeatmapDataByUser(ctx.ContextUser, ctx.Doer)
|
heatmap, err := activities_model.GetUserHeatmapDataByUser(ctx, ctx.ContextUser, ctx.Doer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "GetUserHeatmapDataByUser", err)
|
ctx.Error(http.StatusInternalServerError, "GetUserHeatmapDataByUser", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -93,7 +93,7 @@ func syncAppConfForGit(ctx context.Context) error {
|
||||||
mustInitCtx(ctx, repo_service.SyncRepositoryHooks)
|
mustInitCtx(ctx, repo_service.SyncRepositoryHooks)
|
||||||
|
|
||||||
log.Info("re-write ssh public keys ...")
|
log.Info("re-write ssh public keys ...")
|
||||||
mustInit(asymkey_model.RewriteAllPublicKeys)
|
mustInitCtx(ctx, asymkey_model.RewriteAllPublicKeys)
|
||||||
|
|
||||||
return system.AppState.Set(runtimeState)
|
return system.AppState.Set(runtimeState)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ func Notices(ctx *context.Context) {
|
||||||
page = 1
|
page = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
notices, err := system_model.Notices(page, setting.UI.Admin.NoticePagingNum)
|
notices, err := system_model.Notices(ctx, page, setting.UI.Admin.NoticePagingNum)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("Notices", err)
|
ctx.ServerError("Notices", err)
|
||||||
return
|
return
|
||||||
|
@ -55,7 +55,7 @@ func DeleteNotices(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := system_model.DeleteNoticesByIDs(ids); err != nil {
|
if err := system_model.DeleteNoticesByIDs(ctx, ids); err != nil {
|
||||||
ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error())
|
ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error())
|
||||||
ctx.Status(http.StatusInternalServerError)
|
ctx.Status(http.StatusInternalServerError)
|
||||||
} else {
|
} else {
|
||||||
|
@ -66,7 +66,7 @@ func DeleteNotices(ctx *context.Context) {
|
||||||
|
|
||||||
// EmptyNotices delete all the notices
|
// EmptyNotices delete all the notices
|
||||||
func EmptyNotices(ctx *context.Context) {
|
func EmptyNotices(ctx *context.Context) {
|
||||||
if err := system_model.DeleteNotices(0, 0); err != nil {
|
if err := system_model.DeleteNotices(ctx, 0, 0); err != nil {
|
||||||
ctx.ServerError("DeleteNotices", err)
|
ctx.ServerError("DeleteNotices", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ func DeletePackageVersion(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := packages_service.RemovePackageVersion(ctx.Doer, pv); err != nil {
|
if err := packages_service.RemovePackageVersion(ctx, ctx.Doer, pv); err != nil {
|
||||||
ctx.ServerError("RemovePackageVersion", err)
|
ctx.ServerError("RemovePackageVersion", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ func TwoFactorPost(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ctx.Session.Get("linkAccount") != nil {
|
if ctx.Session.Get("linkAccount") != nil {
|
||||||
err = externalaccount.LinkAccountFromStore(ctx.Session, u)
|
err = externalaccount.LinkAccountFromStore(ctx, ctx.Session, u)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("UserSignIn", err)
|
ctx.ServerError("UserSignIn", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -164,7 +164,7 @@ func linkAccount(ctx *context.Context, u *user_model.User, gothUser goth.User, r
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = externalaccount.LinkAccountToUser(u, gothUser)
|
err = externalaccount.LinkAccountToUser(ctx, u, gothUser)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("UserLinkAccount", err)
|
ctx.ServerError("UserLinkAccount", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -941,7 +941,7 @@ func SignInOAuthCallback(ctx *context.Context) {
|
||||||
if u == nil {
|
if u == nil {
|
||||||
if ctx.Doer != nil {
|
if ctx.Doer != nil {
|
||||||
// attach user to already logged in user
|
// attach user to already logged in user
|
||||||
err = externalaccount.LinkAccountToUser(ctx.Doer, gothUser)
|
err = externalaccount.LinkAccountToUser(ctx, ctx.Doer, gothUser)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("UserLinkAccount", err)
|
ctx.ServerError("UserLinkAccount", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -141,7 +141,7 @@ func WebAuthnLoginAssertionPost(ctx *context.Context) {
|
||||||
|
|
||||||
// Now handle account linking if that's requested
|
// Now handle account linking if that's requested
|
||||||
if ctx.Session.Get("linkAccount") != nil {
|
if ctx.Session.Get("linkAccount") != nil {
|
||||||
if err := externalaccount.LinkAccountFromStore(ctx.Session, user); err != nil {
|
if err := externalaccount.LinkAccountFromStore(ctx, ctx.Session, user); err != nil {
|
||||||
ctx.ServerError("LinkAccountFromStore", err)
|
ctx.ServerError("LinkAccountFromStore", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -428,7 +428,7 @@ func SearchTeam(ctx *context.Context) {
|
||||||
ListOptions: listOptions,
|
ListOptions: listOptions,
|
||||||
}
|
}
|
||||||
|
|
||||||
teams, maxResults, err := org_model.SearchTeam(opts)
|
teams, maxResults, err := org_model.SearchTeam(ctx, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("SearchTeam failed: %v", err)
|
log.Error("SearchTeam failed: %v", err)
|
||||||
ctx.JSON(http.StatusInternalServerError, map[string]any{
|
ctx.JSON(http.StatusInternalServerError, map[string]any{
|
||||||
|
|
|
@ -231,7 +231,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption uti
|
||||||
} else {
|
} else {
|
||||||
// So it did search with the keyword, and found some issues. It needs to get issueStats of these issues.
|
// So it did search with the keyword, and found some issues. It needs to get issueStats of these issues.
|
||||||
// Or the keyword is empty, so it doesn't need issueIDs as filter, just get issueStats with statsOpts.
|
// Or the keyword is empty, so it doesn't need issueIDs as filter, just get issueStats with statsOpts.
|
||||||
issueStats, err = issues_model.GetIssueStats(statsOpts)
|
issueStats, err = issues_model.GetIssueStats(ctx, statsOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetIssueStats", err)
|
ctx.ServerError("GetIssueStats", err)
|
||||||
return
|
return
|
||||||
|
@ -611,14 +611,14 @@ type repoReviewerSelection struct {
|
||||||
func RetrieveRepoReviewers(ctx *context.Context, repo *repo_model.Repository, issue *issues_model.Issue, canChooseReviewer bool) {
|
func RetrieveRepoReviewers(ctx *context.Context, repo *repo_model.Repository, issue *issues_model.Issue, canChooseReviewer bool) {
|
||||||
ctx.Data["CanChooseReviewer"] = canChooseReviewer
|
ctx.Data["CanChooseReviewer"] = canChooseReviewer
|
||||||
|
|
||||||
originalAuthorReviews, err := issues_model.GetReviewersFromOriginalAuthorsByIssueID(issue.ID)
|
originalAuthorReviews, err := issues_model.GetReviewersFromOriginalAuthorsByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetReviewersFromOriginalAuthorsByIssueID", err)
|
ctx.ServerError("GetReviewersFromOriginalAuthorsByIssueID", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["OriginalReviews"] = originalAuthorReviews
|
ctx.Data["OriginalReviews"] = originalAuthorReviews
|
||||||
|
|
||||||
reviews, err := issues_model.GetReviewsByIssueID(issue.ID)
|
reviews, err := issues_model.GetReviewsByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetReviewersByIssueID", err)
|
ctx.ServerError("GetReviewersByIssueID", err)
|
||||||
return
|
return
|
||||||
|
@ -3206,7 +3206,7 @@ func ChangeIssueReaction(ctx *context.Context) {
|
||||||
|
|
||||||
switch ctx.Params(":action") {
|
switch ctx.Params(":action") {
|
||||||
case "react":
|
case "react":
|
||||||
reaction, err := issues_model.CreateIssueReaction(ctx.Doer.ID, issue.ID, form.Content)
|
reaction, err := issues_model.CreateIssueReaction(ctx, ctx.Doer.ID, issue.ID, form.Content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if issues_model.IsErrForbiddenIssueReaction(err) {
|
if issues_model.IsErrForbiddenIssueReaction(err) {
|
||||||
ctx.ServerError("ChangeIssueReaction", err)
|
ctx.ServerError("ChangeIssueReaction", err)
|
||||||
|
@ -3224,7 +3224,7 @@ func ChangeIssueReaction(ctx *context.Context) {
|
||||||
|
|
||||||
log.Trace("Reaction for issue created: %d/%d/%d", ctx.Repo.Repository.ID, issue.ID, reaction.ID)
|
log.Trace("Reaction for issue created: %d/%d/%d", ctx.Repo.Repository.ID, issue.ID, reaction.ID)
|
||||||
case "unreact":
|
case "unreact":
|
||||||
if err := issues_model.DeleteIssueReaction(ctx.Doer.ID, issue.ID, form.Content); err != nil {
|
if err := issues_model.DeleteIssueReaction(ctx, ctx.Doer.ID, issue.ID, form.Content); err != nil {
|
||||||
ctx.ServerError("DeleteIssueReaction", err)
|
ctx.ServerError("DeleteIssueReaction", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -3308,7 +3308,7 @@ func ChangeCommentReaction(ctx *context.Context) {
|
||||||
|
|
||||||
switch ctx.Params(":action") {
|
switch ctx.Params(":action") {
|
||||||
case "react":
|
case "react":
|
||||||
reaction, err := issues_model.CreateCommentReaction(ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Content)
|
reaction, err := issues_model.CreateCommentReaction(ctx, ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if issues_model.IsErrForbiddenIssueReaction(err) {
|
if issues_model.IsErrForbiddenIssueReaction(err) {
|
||||||
ctx.ServerError("ChangeIssueReaction", err)
|
ctx.ServerError("ChangeIssueReaction", err)
|
||||||
|
@ -3326,7 +3326,7 @@ func ChangeCommentReaction(ctx *context.Context) {
|
||||||
|
|
||||||
log.Trace("Reaction for comment created: %d/%d/%d/%d", ctx.Repo.Repository.ID, comment.Issue.ID, comment.ID, reaction.ID)
|
log.Trace("Reaction for comment created: %d/%d/%d/%d", ctx.Repo.Repository.ID, comment.Issue.ID, comment.ID, reaction.ID)
|
||||||
case "unreact":
|
case "unreact":
|
||||||
if err := issues_model.DeleteCommentReaction(ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Content); err != nil {
|
if err := issues_model.DeleteCommentReaction(ctx, ctx.Doer.ID, comment.Issue.ID, comment.ID, form.Content); err != nil {
|
||||||
ctx.ServerError("DeleteCommentReaction", err)
|
ctx.ServerError("DeleteCommentReaction", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,7 +241,7 @@ func SingleRelease(ctx *context.Context) {
|
||||||
writeAccess := ctx.Repo.CanWrite(unit.TypeReleases)
|
writeAccess := ctx.Repo.CanWrite(unit.TypeReleases)
|
||||||
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
|
ctx.Data["CanCreateRelease"] = writeAccess && !ctx.Repo.Repository.IsArchived
|
||||||
|
|
||||||
release, err := repo_model.GetRelease(ctx.Repo.Repository.ID, ctx.Params("*"))
|
release, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, ctx.Params("*"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound("GetRelease", err)
|
ctx.NotFound("GetRelease", err)
|
||||||
|
@ -297,7 +297,7 @@ func SingleRelease(ctx *context.Context) {
|
||||||
|
|
||||||
// LatestRelease redirects to the latest release
|
// LatestRelease redirects to the latest release
|
||||||
func LatestRelease(ctx *context.Context) {
|
func LatestRelease(ctx *context.Context) {
|
||||||
release, err := repo_model.GetLatestReleaseByRepoID(ctx.Repo.Repository.ID)
|
release, err := repo_model.GetLatestReleaseByRepoID(ctx, ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound("LatestRelease", err)
|
ctx.NotFound("LatestRelease", err)
|
||||||
|
@ -321,7 +321,7 @@ func NewRelease(ctx *context.Context) {
|
||||||
ctx.Data["PageIsReleaseList"] = true
|
ctx.Data["PageIsReleaseList"] = true
|
||||||
ctx.Data["tag_target"] = ctx.Repo.Repository.DefaultBranch
|
ctx.Data["tag_target"] = ctx.Repo.Repository.DefaultBranch
|
||||||
if tagName := ctx.FormString("tag"); len(tagName) > 0 {
|
if tagName := ctx.FormString("tag"); len(tagName) > 0 {
|
||||||
rel, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tagName)
|
rel, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tagName)
|
||||||
if err != nil && !repo_model.IsErrReleaseNotExist(err) {
|
if err != nil && !repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.ServerError("GetRelease", err)
|
ctx.ServerError("GetRelease", err)
|
||||||
return
|
return
|
||||||
|
@ -403,7 +403,7 @@ func NewReleasePost(ctx *context.Context) {
|
||||||
attachmentUUIDs = form.Files
|
attachmentUUIDs = form.Files
|
||||||
}
|
}
|
||||||
|
|
||||||
rel, err := repo_model.GetRelease(ctx.Repo.Repository.ID, form.TagName)
|
rel, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, form.TagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !repo_model.IsErrReleaseNotExist(err) {
|
if !repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.ServerError("GetRelease", err)
|
ctx.ServerError("GetRelease", err)
|
||||||
|
@ -488,7 +488,7 @@ func NewReleasePost(ctx *context.Context) {
|
||||||
rel.PublisherID = ctx.Doer.ID
|
rel.PublisherID = ctx.Doer.ID
|
||||||
rel.IsTag = false
|
rel.IsTag = false
|
||||||
|
|
||||||
if err = releaseservice.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo, rel, attachmentUUIDs, nil, nil); err != nil {
|
if err = releaseservice.UpdateRelease(ctx, ctx.Doer, ctx.Repo.GitRepo, rel, attachmentUUIDs, nil, nil); err != nil {
|
||||||
ctx.Data["Err_TagName"] = true
|
ctx.Data["Err_TagName"] = true
|
||||||
ctx.ServerError("UpdateRelease", err)
|
ctx.ServerError("UpdateRelease", err)
|
||||||
return
|
return
|
||||||
|
@ -508,7 +508,7 @@ func EditRelease(ctx *context.Context) {
|
||||||
upload.AddUploadContext(ctx, "release")
|
upload.AddUploadContext(ctx, "release")
|
||||||
|
|
||||||
tagName := ctx.Params("*")
|
tagName := ctx.Params("*")
|
||||||
rel, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tagName)
|
rel, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound("GetRelease", err)
|
ctx.NotFound("GetRelease", err)
|
||||||
|
@ -551,7 +551,7 @@ func EditReleasePost(ctx *context.Context) {
|
||||||
ctx.Data["PageIsEditRelease"] = true
|
ctx.Data["PageIsEditRelease"] = true
|
||||||
|
|
||||||
tagName := ctx.Params("*")
|
tagName := ctx.Params("*")
|
||||||
rel, err := repo_model.GetRelease(ctx.Repo.Repository.ID, tagName)
|
rel, err := repo_model.GetRelease(ctx, ctx.Repo.Repository.ID, tagName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if repo_model.IsErrReleaseNotExist(err) {
|
if repo_model.IsErrReleaseNotExist(err) {
|
||||||
ctx.NotFound("GetRelease", err)
|
ctx.NotFound("GetRelease", err)
|
||||||
|
@ -594,7 +594,7 @@ func EditReleasePost(ctx *context.Context) {
|
||||||
rel.Note = form.Content
|
rel.Note = form.Content
|
||||||
rel.IsDraft = len(form.Draft) > 0
|
rel.IsDraft = len(form.Draft) > 0
|
||||||
rel.IsPrerelease = form.Prerelease
|
rel.IsPrerelease = form.Prerelease
|
||||||
if err = releaseservice.UpdateRelease(ctx.Doer, ctx.Repo.GitRepo,
|
if err = releaseservice.UpdateRelease(ctx, ctx.Doer, ctx.Repo.GitRepo,
|
||||||
rel, addAttachmentUUIDs, delAttachmentUUIDs, editAttachments); err != nil {
|
rel, addAttachmentUUIDs, delAttachmentUUIDs, editAttachments); err != nil {
|
||||||
ctx.ServerError("UpdateRelease", err)
|
ctx.ServerError("UpdateRelease", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -396,7 +396,7 @@ func RedirectDownload(ctx *context.Context) {
|
||||||
} else if len(releases) == 0 && vTag == "latest" {
|
} else if len(releases) == 0 && vTag == "latest" {
|
||||||
// GitHub supports the alias "latest" for the latest release
|
// GitHub supports the alias "latest" for the latest release
|
||||||
// We only fetch the latest release if the tag is "latest" and no release with the tag "latest" exists
|
// We only fetch the latest release if the tag is "latest" and no release with the tag "latest" exists
|
||||||
release, err := repo_model.GetLatestReleaseByRepoID(ctx.Repo.Repository.ID)
|
release, err := repo_model.GetLatestReleaseByRepoID(ctx, ctx.Repo.Repository.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusNotFound)
|
ctx.Error(http.StatusNotFound)
|
||||||
return
|
return
|
||||||
|
|
|
@ -99,7 +99,7 @@ func DeployKeysPost(ctx *context.Context) {
|
||||||
|
|
||||||
// DeleteDeployKey response for deleting a deploy key
|
// DeleteDeployKey response for deleting a deploy key
|
||||||
func DeleteDeployKey(ctx *context.Context) {
|
func DeleteDeployKey(ctx *context.Context) {
|
||||||
if err := asymkey_service.DeleteDeployKey(ctx.Doer, ctx.FormInt64("id")); err != nil {
|
if err := asymkey_service.DeleteDeployKey(ctx, ctx.Doer, ctx.FormInt64("id")); err != nil {
|
||||||
ctx.Flash.Error("DeleteDeployKey: " + err.Error())
|
ctx.Flash.Error("DeleteDeployKey: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
ctx.Flash.Success(ctx.Tr("repo.settings.deploy_key_deletion_success"))
|
ctx.Flash.Success(ctx.Tr("repo.settings.deploy_key_deletion_success"))
|
||||||
|
|
|
@ -105,7 +105,7 @@ func Dashboard(ctx *context.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if setting.Service.EnableUserHeatmap {
|
if setting.Service.EnableUserHeatmap {
|
||||||
data, err := activities_model.GetUserHeatmapDataByUserTeam(ctxUser, ctx.Org.Team, ctx.Doer)
|
data, err := activities_model.GetUserHeatmapDataByUserTeam(ctx, ctxUser, ctx.Org.Team, ctx.Doer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetUserHeatmapDataByUserTeam", err)
|
ctx.ServerError("GetUserHeatmapDataByUserTeam", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -439,7 +439,7 @@ func PackageSettingsPost(ctx *context.Context) {
|
||||||
ctx.Redirect(ctx.Link)
|
ctx.Redirect(ctx.Link)
|
||||||
return
|
return
|
||||||
case "delete":
|
case "delete":
|
||||||
err := packages_service.RemovePackageVersion(ctx.Doer, ctx.Package.Descriptor.Version)
|
err := packages_service.RemovePackageVersion(ctx, ctx.Doer, ctx.Package.Descriptor.Version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("Error deleting package: %v", err)
|
log.Error("Error deleting package: %v", err)
|
||||||
ctx.Flash.Error(ctx.Tr("packages.settings.delete.error"))
|
ctx.Flash.Error(ctx.Tr("packages.settings.delete.error"))
|
||||||
|
|
|
@ -56,7 +56,7 @@ func userProfile(ctx *context.Context) {
|
||||||
|
|
||||||
// prepare heatmap data
|
// prepare heatmap data
|
||||||
if setting.Service.EnableUserHeatmap {
|
if setting.Service.EnableUserHeatmap {
|
||||||
data, err := activities_model.GetUserHeatmapDataByUser(ctx.ContextUser, ctx.Doer)
|
data, err := activities_model.GetUserHeatmapDataByUser(ctx, ctx.ContextUser, ctx.Doer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.ServerError("GetUserHeatmapDataByUser", err)
|
ctx.ServerError("GetUserHeatmapDataByUser", err)
|
||||||
return
|
return
|
||||||
|
|
|
@ -80,9 +80,9 @@ func KeysPost(ctx *context.Context) {
|
||||||
token := asymkey_model.VerificationToken(ctx.Doer, 1)
|
token := asymkey_model.VerificationToken(ctx.Doer, 1)
|
||||||
lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
|
lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
|
||||||
|
|
||||||
keys, err := asymkey_model.AddGPGKey(ctx.Doer.ID, form.Content, token, form.Signature)
|
keys, err := asymkey_model.AddGPGKey(ctx, ctx.Doer.ID, form.Content, token, form.Signature)
|
||||||
if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
|
if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
|
||||||
keys, err = asymkey_model.AddGPGKey(ctx.Doer.ID, form.Content, lastToken, form.Signature)
|
keys, err = asymkey_model.AddGPGKey(ctx, ctx.Doer.ID, form.Content, lastToken, form.Signature)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Data["HasGPGError"] = true
|
ctx.Data["HasGPGError"] = true
|
||||||
|
@ -224,7 +224,7 @@ func KeysPost(ctx *context.Context) {
|
||||||
func DeleteKey(ctx *context.Context) {
|
func DeleteKey(ctx *context.Context) {
|
||||||
switch ctx.FormString("type") {
|
switch ctx.FormString("type") {
|
||||||
case "gpg":
|
case "gpg":
|
||||||
if err := asymkey_model.DeleteGPGKey(ctx.Doer, ctx.FormInt64("id")); err != nil {
|
if err := asymkey_model.DeleteGPGKey(ctx, ctx.Doer, ctx.FormInt64("id")); err != nil {
|
||||||
ctx.Flash.Error("DeleteGPGKey: " + err.Error())
|
ctx.Flash.Error("DeleteGPGKey: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
ctx.Flash.Success(ctx.Tr("settings.gpg_key_deletion_success"))
|
ctx.Flash.Success(ctx.Tr("settings.gpg_key_deletion_success"))
|
||||||
|
@ -241,13 +241,13 @@ func DeleteKey(ctx *context.Context) {
|
||||||
ctx.Redirect(setting.AppSubURL + "/user/settings/keys")
|
ctx.Redirect(setting.AppSubURL + "/user/settings/keys")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := asymkey_service.DeletePublicKey(ctx.Doer, keyID); err != nil {
|
if err := asymkey_service.DeletePublicKey(ctx, ctx.Doer, keyID); err != nil {
|
||||||
ctx.Flash.Error("DeletePublicKey: " + err.Error())
|
ctx.Flash.Error("DeletePublicKey: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
ctx.Flash.Success(ctx.Tr("settings.ssh_key_deletion_success"))
|
ctx.Flash.Success(ctx.Tr("settings.ssh_key_deletion_success"))
|
||||||
}
|
}
|
||||||
case "principal":
|
case "principal":
|
||||||
if err := asymkey_service.DeletePublicKey(ctx.Doer, ctx.FormInt64("id")); err != nil {
|
if err := asymkey_service.DeletePublicKey(ctx, ctx.Doer, ctx.FormInt64("id")); err != nil {
|
||||||
ctx.Flash.Error("DeletePublicKey: " + err.Error())
|
ctx.Flash.Error("DeletePublicKey: " + err.Error())
|
||||||
} else {
|
} else {
|
||||||
ctx.Flash.Success(ctx.Tr("settings.ssh_principal_deletion_success"))
|
ctx.Flash.Success(ctx.Tr("settings.ssh_principal_deletion_success"))
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
package asymkey
|
package asymkey
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
@ -11,19 +13,19 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeleteDeployKey deletes deploy key from its repository authorized_keys file if needed.
|
// DeleteDeployKey deletes deploy key from its repository authorized_keys file if needed.
|
||||||
func DeleteDeployKey(doer *user_model.User, id int64) error {
|
func DeleteDeployKey(ctx context.Context, doer *user_model.User, id int64) error {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
dbCtx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if err := models.DeleteDeployKey(ctx, doer, id); err != nil {
|
if err := models.DeleteDeployKey(dbCtx, doer, id); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := committer.Commit(); err != nil {
|
if err := committer.Commit(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return asymkey_model.RewriteAllPublicKeys()
|
return asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,13 +4,15 @@
|
||||||
package asymkey
|
package asymkey
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DeletePublicKey deletes SSH key information both in database and authorized_keys file.
|
// DeletePublicKey deletes SSH key information both in database and authorized_keys file.
|
||||||
func DeletePublicKey(doer *user_model.User, id int64) (err error) {
|
func DeletePublicKey(ctx context.Context, doer *user_model.User, id int64) (err error) {
|
||||||
key, err := asymkey_model.GetPublicKeyByID(id)
|
key, err := asymkey_model.GetPublicKeyByID(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -25,13 +27,13 @@ func DeletePublicKey(doer *user_model.User, id int64) (err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
dbCtx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if err = asymkey_model.DeletePublicKeys(ctx, id); err != nil {
|
if err = asymkey_model.DeletePublicKeys(dbCtx, id); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,8 +43,8 @@ func DeletePublicKey(doer *user_model.User, id int64) (err error) {
|
||||||
committer.Close()
|
committer.Close()
|
||||||
|
|
||||||
if key.Type == asymkey_model.KeyTypePrincipal {
|
if key.Type == asymkey_model.KeyTypePrincipal {
|
||||||
return asymkey_model.RewriteAllPrincipalKeys(db.DefaultContext)
|
return asymkey_model.RewriteAllPrincipalKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
return asymkey_model.RewriteAllPublicKeys()
|
return asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
|
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
"code.gitea.io/gitea/models/auth"
|
"code.gitea.io/gitea/models/auth"
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
|
||||||
|
@ -77,7 +78,7 @@ ssh-dss AAAAB3NzaC1kc3MAAACBAOChCC7lf6Uo9n7BmZ6M8St19PZf4Tn59NriyboW2x/DZuYAz3ib
|
||||||
assert.Contains(t, kase.keyContents, key.Content)
|
assert.Contains(t, kase.keyContents, key.Content)
|
||||||
}
|
}
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
DeletePublicKey(user, key.ID)
|
DeletePublicKey(db.DefaultContext, user, key.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/auth/webauthn"
|
"code.gitea.io/gitea/modules/auth/webauthn"
|
||||||
gitea_context "code.gitea.io/gitea/modules/context"
|
gitea_context "code.gitea.io/gitea/modules/context"
|
||||||
|
@ -83,7 +82,7 @@ func handleSignIn(resp http.ResponseWriter, req *http.Request, sess SessionStore
|
||||||
if len(user.Language) == 0 {
|
if len(user.Language) == 0 {
|
||||||
lc := middleware.Locale(resp, req)
|
lc := middleware.Locale(resp, req)
|
||||||
user.Language = lc.Language()
|
user.Language = lc.Language()
|
||||||
if err := user_model.UpdateUserCols(db.DefaultContext, user, "language"); err != nil {
|
if err := user_model.UpdateUserCols(req.Context(), user, "language"); err != nil {
|
||||||
log.Error(fmt.Sprintf("Error updating user language [user: %d, locale: %s]", user.ID, user.Language))
|
log.Error(fmt.Sprintf("Error updating user language [user: %d, locale: %s]", user.ID, user.Language))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,7 +65,7 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
|
||||||
|
|
||||||
if user != nil {
|
if user != nil {
|
||||||
if isAttributeSSHPublicKeySet && asymkey_model.SynchronizePublicKeys(user, source.authSource, sr.SSHPublicKey) {
|
if isAttributeSSHPublicKeySet && asymkey_model.SynchronizePublicKeys(user, source.authSource, sr.SSHPublicKey) {
|
||||||
if err := asymkey_model.RewriteAllPublicKeys(); err != nil {
|
if err := asymkey_model.RewriteAllPublicKeys(ctx); err != nil {
|
||||||
return user, err
|
return user, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
|
||||||
}
|
}
|
||||||
|
|
||||||
if isAttributeSSHPublicKeySet && asymkey_model.AddPublicKeysBySource(user, source.authSource, sr.SSHPublicKey) {
|
if isAttributeSSHPublicKeySet && asymkey_model.AddPublicKeysBySource(user, source.authSource, sr.SSHPublicKey) {
|
||||||
if err := asymkey_model.RewriteAllPublicKeys(); err != nil {
|
if err := asymkey_model.RewriteAllPublicKeys(ctx); err != nil {
|
||||||
return user, err
|
return user, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,7 +77,7 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error {
|
||||||
log.Warn("SyncExternalUsers: Cancelled at update of %s before completed update of users", source.authSource.Name)
|
log.Warn("SyncExternalUsers: Cancelled at update of %s before completed update of users", source.authSource.Name)
|
||||||
// Rewrite authorized_keys file if LDAP Public SSH Key attribute is set and any key was added or removed
|
// Rewrite authorized_keys file if LDAP Public SSH Key attribute is set and any key was added or removed
|
||||||
if sshKeysNeedUpdate {
|
if sshKeysNeedUpdate {
|
||||||
err = asymkey_model.RewriteAllPublicKeys()
|
err = asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("RewriteAllPublicKeys: %v", err)
|
log.Error("RewriteAllPublicKeys: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -193,7 +193,7 @@ func (source *Source) Sync(ctx context.Context, updateExisting bool) error {
|
||||||
|
|
||||||
// Rewrite authorized_keys file if LDAP Public SSH Key attribute is set and any key was added or removed
|
// Rewrite authorized_keys file if LDAP Public SSH Key attribute is set and any key was added or removed
|
||||||
if sshKeysNeedUpdate {
|
if sshKeysNeedUpdate {
|
||||||
err = asymkey_model.RewriteAllPublicKeys()
|
err = asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("RewriteAllPublicKeys: %v", err)
|
log.Error("RewriteAllPublicKeys: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ func userAssignment(ctx *context.Base, doer *user_model.User, errCb func(int, st
|
||||||
contextUser, err = user_model.GetUserByName(ctx, username)
|
contextUser, err = user_model.GetUserByName(ctx, username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if user_model.IsErrUserNotExist(err) {
|
if user_model.IsErrUserNotExist(err) {
|
||||||
if redirectUserID, err := user_model.LookupUserRedirect(username); err == nil {
|
if redirectUserID, err := user_model.LookupUserRedirect(ctx, username); err == nil {
|
||||||
context.RedirectToUser(ctx, username, redirectUserID)
|
context.RedirectToUser(ctx, username, redirectUserID)
|
||||||
} else if user_model.IsErrUserRedirectNotExist(err) {
|
} else if user_model.IsErrUserRedirectNotExist(err) {
|
||||||
errCb(http.StatusNotFound, "GetUserByName", err)
|
errCb(http.StatusNotFound, "GetUserByName", err)
|
||||||
|
|
|
@ -13,7 +13,6 @@ import (
|
||||||
|
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
"code.gitea.io/gitea/models/auth"
|
"code.gitea.io/gitea/models/auth"
|
||||||
"code.gitea.io/gitea/models/db"
|
|
||||||
git_model "code.gitea.io/gitea/models/git"
|
git_model "code.gitea.io/gitea/models/git"
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
"code.gitea.io/gitea/models/organization"
|
"code.gitea.io/gitea/models/organization"
|
||||||
|
@ -334,7 +333,7 @@ func ToTeams(ctx context.Context, teams []*organization.Team, loadOrgs bool) ([]
|
||||||
if loadOrgs {
|
if loadOrgs {
|
||||||
apiOrg, ok := cache[teams[i].OrgID]
|
apiOrg, ok := cache[teams[i].OrgID]
|
||||||
if !ok {
|
if !ok {
|
||||||
org, err := organization.GetOrgByID(db.DefaultContext, teams[i].OrgID)
|
org, err := organization.GetOrgByID(ctx, teams[i].OrgID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ import (
|
||||||
|
|
||||||
activities_model "code.gitea.io/gitea/models/activities"
|
activities_model "code.gitea.io/gitea/models/activities"
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
"code.gitea.io/gitea/models/db"
|
|
||||||
"code.gitea.io/gitea/models/system"
|
"code.gitea.io/gitea/models/system"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
@ -71,8 +70,8 @@ func registerRewriteAllPublicKeys() {
|
||||||
Enabled: false,
|
Enabled: false,
|
||||||
RunAtStart: false,
|
RunAtStart: false,
|
||||||
Schedule: "@every 72h",
|
Schedule: "@every 72h",
|
||||||
}, func(_ context.Context, _ *user_model.User, _ Config) error {
|
}, func(ctx context.Context, _ *user_model.User, _ Config) error {
|
||||||
return asymkey_model.RewriteAllPublicKeys()
|
return asymkey_model.RewriteAllPublicKeys(ctx)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,8 +80,8 @@ func registerRewriteAllPrincipalKeys() {
|
||||||
Enabled: false,
|
Enabled: false,
|
||||||
RunAtStart: false,
|
RunAtStart: false,
|
||||||
Schedule: "@every 72h",
|
Schedule: "@every 72h",
|
||||||
}, func(_ context.Context, _ *user_model.User, _ Config) error {
|
}, func(ctx context.Context, _ *user_model.User, _ Config) error {
|
||||||
return asymkey_model.RewriteAllPrincipalKeys(db.DefaultContext)
|
return asymkey_model.RewriteAllPrincipalKeys(ctx)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +167,7 @@ func registerDeleteOldSystemNotices() {
|
||||||
OlderThan: 365 * 24 * time.Hour,
|
OlderThan: 365 * 24 * time.Hour,
|
||||||
}, func(ctx context.Context, _ *user_model.User, config Config) error {
|
}, func(ctx context.Context, _ *user_model.User, config Config) error {
|
||||||
olderThanConfig := config.(*OlderThanConfig)
|
olderThanConfig := config.(*OlderThanConfig)
|
||||||
return system.DeleteOldSystemNotices(olderThanConfig.OlderThan)
|
return system.DeleteOldSystemNotices(ctx, olderThanConfig.OlderThan)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
package externalaccount
|
package externalaccount
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
@ -19,11 +20,11 @@ type Store interface {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LinkAccountFromStore links the provided user with a stored external user
|
// LinkAccountFromStore links the provided user with a stored external user
|
||||||
func LinkAccountFromStore(store Store, user *user_model.User) error {
|
func LinkAccountFromStore(ctx context.Context, store Store, user *user_model.User) error {
|
||||||
gothUser := store.Get("linkAccountGothUser")
|
gothUser := store.Get("linkAccountGothUser")
|
||||||
if gothUser == nil {
|
if gothUser == nil {
|
||||||
return fmt.Errorf("not in LinkAccount session")
|
return fmt.Errorf("not in LinkAccount session")
|
||||||
}
|
}
|
||||||
|
|
||||||
return LinkAccountToUser(user, gothUser.(goth.User))
|
return LinkAccountToUser(ctx, user, gothUser.(goth.User))
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
package externalaccount
|
package externalaccount
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/auth"
|
"code.gitea.io/gitea/models/auth"
|
||||||
|
@ -42,7 +43,7 @@ func toExternalLoginUser(user *user_model.User, gothUser goth.User) (*user_model
|
||||||
}
|
}
|
||||||
|
|
||||||
// LinkAccountToUser link the gothUser to the user
|
// LinkAccountToUser link the gothUser to the user
|
||||||
func LinkAccountToUser(user *user_model.User, gothUser goth.User) error {
|
func LinkAccountToUser(ctx context.Context, user *user_model.User, gothUser goth.User) error {
|
||||||
externalLoginUser, err := toExternalLoginUser(user, gothUser)
|
externalLoginUser, err := toExternalLoginUser(user, gothUser)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -63,7 +64,7 @@ func LinkAccountToUser(user *user_model.User, gothUser goth.User) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if tp.Name() != "" {
|
if tp.Name() != "" {
|
||||||
return UpdateMigrationsByType(tp, externalID, user.ID)
|
return UpdateMigrationsByType(ctx, tp, externalID, user.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -80,7 +81,7 @@ func UpdateExternalUser(user *user_model.User, gothUser goth.User) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateMigrationsByType updates all migrated repositories' posterid from gitServiceType to replace originalAuthorID to posterID
|
// UpdateMigrationsByType updates all migrated repositories' posterid from gitServiceType to replace originalAuthorID to posterID
|
||||||
func UpdateMigrationsByType(tp structs.GitServiceType, externalUserID string, userID int64) error {
|
func UpdateMigrationsByType(ctx context.Context, tp structs.GitServiceType, externalUserID string, userID int64) error {
|
||||||
if err := issues_model.UpdateIssuesMigrationsByType(tp, externalUserID, userID); err != nil {
|
if err := issues_model.UpdateIssuesMigrationsByType(tp, externalUserID, userID); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -89,7 +90,7 @@ func UpdateMigrationsByType(tp structs.GitServiceType, externalUserID string, us
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := repo_model.UpdateReleasesMigrationsByType(tp, externalUserID, userID); err != nil {
|
if err := repo_model.UpdateReleasesMigrationsByType(ctx, tp, externalUserID, userID); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -350,12 +350,12 @@ func (g *GiteaLocalUploader) CreateReleases(releases ...*base.Release) error {
|
||||||
rels = append(rels, &rel)
|
rels = append(rels, &rel)
|
||||||
}
|
}
|
||||||
|
|
||||||
return repo_model.InsertReleases(rels...)
|
return repo_model.InsertReleases(g.ctx, rels...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// SyncTags syncs releases with tags in the database
|
// SyncTags syncs releases with tags in the database
|
||||||
func (g *GiteaLocalUploader) SyncTags() error {
|
func (g *GiteaLocalUploader) SyncTags() error {
|
||||||
return repo_module.SyncReleasesWithTags(g.repo, g.gitRepo)
|
return repo_module.SyncReleasesWithTags(g.ctx, g.repo, g.gitRepo)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateIssues creates issues
|
// CreateIssues creates issues
|
||||||
|
@ -937,7 +937,7 @@ func (g *GiteaLocalUploader) Finish() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// update issue_index
|
// update issue_index
|
||||||
if err := issues_model.RecalculateIssueIndexForRepo(g.repo.ID); err != nil {
|
if err := issues_model.RecalculateIssueIndexForRepo(g.ctx, g.repo.ID); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ func updateMigrationPosterIDByGitService(ctx context.Context, tp structs.GitServ
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
externalUserID := user.ExternalID
|
externalUserID := user.ExternalID
|
||||||
if err := externalaccount.UpdateMigrationsByType(tp, externalUserID, user.UserID); err != nil {
|
if err := externalaccount.UpdateMigrationsByType(ctx, tp, externalUserID, user.UserID); err != nil {
|
||||||
log.Error("UpdateMigrationsByType type %s external user id %v to local user id %v failed: %v", tp.Name(), user.ExternalID, user.UserID, err)
|
log.Error("UpdateMigrationsByType type %s external user id %v to local user id %v failed: %v", tp.Name(), user.ExternalID, user.UserID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,7 +313,7 @@ func runSync(ctx context.Context, m *repo_model.Mirror) ([]*mirrorSyncResult, bo
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Trace("SyncMirrors [repo: %-v]: syncing releases with tags...", m.Repo)
|
log.Trace("SyncMirrors [repo: %-v]: syncing releases with tags...", m.Repo)
|
||||||
if err = repo_module.SyncReleasesWithTags(m.Repo, gitRepo); err != nil {
|
if err = repo_module.SyncReleasesWithTags(ctx, m.Repo, gitRepo); err != nil {
|
||||||
log.Error("SyncMirrors [repo: %-v]: failed to synchronize tags to releases: %v", m.Repo, err)
|
log.Error("SyncMirrors [repo: %-v]: failed to synchronize tags to releases: %v", m.Repo, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ const IndexFilename = "APKINDEX.tar.gz"
|
||||||
|
|
||||||
// GetOrCreateRepositoryVersion gets or creates the internal repository package
|
// GetOrCreateRepositoryVersion gets or creates the internal repository package
|
||||||
// The Alpine registry needs multiple index files which are stored in this package.
|
// The Alpine registry needs multiple index files which are stored in this package.
|
||||||
func GetOrCreateRepositoryVersion(ownerID int64) (*packages_model.PackageVersion, error) {
|
func GetOrCreateRepositoryVersion(ctx context.Context, ownerID int64) (*packages_model.PackageVersion, error) {
|
||||||
return packages_service.GetOrCreateInternalPackageVersion(ownerID, packages_model.TypeAlpine, alpine_module.RepositoryPackage, alpine_module.RepositoryVersion)
|
return packages_service.GetOrCreateInternalPackageVersion(ctx, ownerID, packages_model.TypeAlpine, alpine_module.RepositoryPackage, alpine_module.RepositoryVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOrCreateKeyPair gets or creates the RSA keys used to sign repository files
|
// GetOrCreateKeyPair gets or creates the RSA keys used to sign repository files
|
||||||
|
@ -70,7 +70,7 @@ func GetOrCreateKeyPair(ctx context.Context, ownerID int64) (string, string, err
|
||||||
|
|
||||||
// BuildAllRepositoryFiles (re)builds all repository files for every available distributions, components and architectures
|
// BuildAllRepositoryFiles (re)builds all repository files for every available distributions, components and architectures
|
||||||
func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
||||||
pv, err := GetOrCreateRepositoryVersion(ownerID)
|
pv, err := GetOrCreateRepositoryVersion(ctx, ownerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
||||||
|
|
||||||
// BuildSpecificRepositoryFiles builds index files for the repository
|
// BuildSpecificRepositoryFiles builds index files for the repository
|
||||||
func BuildSpecificRepositoryFiles(ctx context.Context, ownerID int64, branch, repository, architecture string) error {
|
func BuildSpecificRepositoryFiles(ctx context.Context, ownerID int64, branch, repository, architecture string) error {
|
||||||
pv, err := GetOrCreateRepositoryVersion(ownerID)
|
pv, err := GetOrCreateRepositoryVersion(ctx, ownerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -290,6 +290,7 @@ func buildPackagesIndex(ctx context.Context, ownerID int64, repoVersion *package
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = packages_service.AddFileToPackageVersionInternal(
|
_, err = packages_service.AddFileToPackageVersionInternal(
|
||||||
|
ctx,
|
||||||
repoVersion,
|
repoVersion,
|
||||||
&packages_service.PackageFileCreationInfo{
|
&packages_service.PackageFileCreationInfo{
|
||||||
PackageFileInfo: packages_service.PackageFileInfo{
|
PackageFileInfo: packages_service.PackageFileInfo{
|
||||||
|
|
|
@ -32,8 +32,8 @@ import (
|
||||||
|
|
||||||
// GetOrCreateRepositoryVersion gets or creates the internal repository package
|
// GetOrCreateRepositoryVersion gets or creates the internal repository package
|
||||||
// The Debian registry needs multiple index files which are stored in this package.
|
// The Debian registry needs multiple index files which are stored in this package.
|
||||||
func GetOrCreateRepositoryVersion(ownerID int64) (*packages_model.PackageVersion, error) {
|
func GetOrCreateRepositoryVersion(ctx context.Context, ownerID int64) (*packages_model.PackageVersion, error) {
|
||||||
return packages_service.GetOrCreateInternalPackageVersion(ownerID, packages_model.TypeDebian, debian_module.RepositoryPackage, debian_module.RepositoryVersion)
|
return packages_service.GetOrCreateInternalPackageVersion(ctx, ownerID, packages_model.TypeDebian, debian_module.RepositoryPackage, debian_module.RepositoryVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOrCreateKeyPair gets or creates the PGP keys used to sign repository files
|
// GetOrCreateKeyPair gets or creates the PGP keys used to sign repository files
|
||||||
|
@ -98,7 +98,7 @@ func generateKeypair() (string, string, error) {
|
||||||
|
|
||||||
// BuildAllRepositoryFiles (re)builds all repository files for every available distributions, components and architectures
|
// BuildAllRepositoryFiles (re)builds all repository files for every available distributions, components and architectures
|
||||||
func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
||||||
pv, err := GetOrCreateRepositoryVersion(ownerID)
|
pv, err := GetOrCreateRepositoryVersion(ctx, ownerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ func BuildAllRepositoryFiles(ctx context.Context, ownerID int64) error {
|
||||||
|
|
||||||
// BuildSpecificRepositoryFiles builds index files for the repository
|
// BuildSpecificRepositoryFiles builds index files for the repository
|
||||||
func BuildSpecificRepositoryFiles(ctx context.Context, ownerID int64, distribution, component, architecture string) error {
|
func BuildSpecificRepositoryFiles(ctx context.Context, ownerID int64, distribution, component, architecture string) error {
|
||||||
pv, err := GetOrCreateRepositoryVersion(ownerID)
|
pv, err := GetOrCreateRepositoryVersion(ctx, ownerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -234,6 +234,7 @@ func buildPackagesIndices(ctx context.Context, ownerID int64, repoVersion *packa
|
||||||
{"Packages.xz", packagesXzContent},
|
{"Packages.xz", packagesXzContent},
|
||||||
} {
|
} {
|
||||||
_, err = packages_service.AddFileToPackageVersionInternal(
|
_, err = packages_service.AddFileToPackageVersionInternal(
|
||||||
|
ctx,
|
||||||
repoVersion,
|
repoVersion,
|
||||||
&packages_service.PackageFileCreationInfo{
|
&packages_service.PackageFileCreationInfo{
|
||||||
PackageFileInfo: packages_service.PackageFileInfo{
|
PackageFileInfo: packages_service.PackageFileInfo{
|
||||||
|
@ -381,6 +382,7 @@ func buildReleaseFiles(ctx context.Context, ownerID int64, repoVersion *packages
|
||||||
{"InRelease", inReleaseContent},
|
{"InRelease", inReleaseContent},
|
||||||
} {
|
} {
|
||||||
_, err = packages_service.AddFileToPackageVersionInternal(
|
_, err = packages_service.AddFileToPackageVersionInternal(
|
||||||
|
ctx,
|
||||||
repoVersion,
|
repoVersion,
|
||||||
&packages_service.PackageFileCreationInfo{
|
&packages_service.PackageFileCreationInfo{
|
||||||
PackageFileInfo: packages_service.PackageFileInfo{
|
PackageFileInfo: packages_service.PackageFileInfo{
|
||||||
|
|
|
@ -66,28 +66,28 @@ type PackageFileCreationInfo struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreatePackageAndAddFile creates a package with a file. If the same package exists already, ErrDuplicatePackageVersion is returned
|
// CreatePackageAndAddFile creates a package with a file. If the same package exists already, ErrDuplicatePackageVersion is returned
|
||||||
func CreatePackageAndAddFile(pvci *PackageCreationInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
func CreatePackageAndAddFile(ctx context.Context, pvci *PackageCreationInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
||||||
return createPackageAndAddFile(pvci, pfci, false)
|
return createPackageAndAddFile(ctx, pvci, pfci, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreatePackageOrAddFileToExisting creates a package with a file or adds the file if the package exists already
|
// CreatePackageOrAddFileToExisting creates a package with a file or adds the file if the package exists already
|
||||||
func CreatePackageOrAddFileToExisting(pvci *PackageCreationInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
func CreatePackageOrAddFileToExisting(ctx context.Context, pvci *PackageCreationInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
||||||
return createPackageAndAddFile(pvci, pfci, true)
|
return createPackageAndAddFile(ctx, pvci, pfci, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPackageAndAddFile(pvci *PackageCreationInfo, pfci *PackageFileCreationInfo, allowDuplicate bool) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
func createPackageAndAddFile(ctx context.Context, pvci *PackageCreationInfo, pfci *PackageFileCreationInfo, allowDuplicate bool) (*packages_model.PackageVersion, *packages_model.PackageFile, error) {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
dbCtx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
pv, created, err := createPackageAndVersion(ctx, pvci, allowDuplicate)
|
pv, created, err := createPackageAndVersion(dbCtx, pvci, allowDuplicate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pf, pb, blobCreated, err := addFileToPackageVersion(ctx, pv, &pvci.PackageInfo, pfci)
|
pf, pb, blobCreated, err := addFileToPackageVersion(dbCtx, pv, &pvci.PackageInfo, pfci)
|
||||||
removeBlob := false
|
removeBlob := false
|
||||||
defer func() {
|
defer func() {
|
||||||
if blobCreated && removeBlob {
|
if blobCreated && removeBlob {
|
||||||
|
@ -108,12 +108,12 @@ func createPackageAndAddFile(pvci *PackageCreationInfo, pfci *PackageFileCreatio
|
||||||
}
|
}
|
||||||
|
|
||||||
if created {
|
if created {
|
||||||
pd, err := packages_model.GetPackageDescriptor(db.DefaultContext, pv)
|
pd, err := packages_model.GetPackageDescriptor(ctx, pv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_service.PackageCreate(db.DefaultContext, pvci.Creator, pd)
|
notify_service.PackageCreate(ctx, pvci.Creator, pd)
|
||||||
}
|
}
|
||||||
|
|
||||||
return pv, pf, nil
|
return pv, pf, nil
|
||||||
|
@ -189,8 +189,8 @@ func createPackageAndVersion(ctx context.Context, pvci *PackageCreationInfo, all
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddFileToExistingPackage adds a file to an existing package. If the package does not exist, ErrPackageNotExist is returned
|
// AddFileToExistingPackage adds a file to an existing package. If the package does not exist, ErrPackageNotExist is returned
|
||||||
func AddFileToExistingPackage(pvi *PackageInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageFile, error) {
|
func AddFileToExistingPackage(ctx context.Context, pvi *PackageInfo, pfci *PackageFileCreationInfo) (*packages_model.PackageFile, error) {
|
||||||
return addFileToPackageWrapper(func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error) {
|
return addFileToPackageWrapper(ctx, func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error) {
|
||||||
pv, err := packages_model.GetVersionByNameAndVersion(ctx, pvi.Owner.ID, pvi.PackageType, pvi.Name, pvi.Version)
|
pv, err := packages_model.GetVersionByNameAndVersion(ctx, pvi.Owner.ID, pvi.PackageType, pvi.Name, pvi.Version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, false, err
|
return nil, nil, false, err
|
||||||
|
@ -202,14 +202,14 @@ func AddFileToExistingPackage(pvi *PackageInfo, pfci *PackageFileCreationInfo) (
|
||||||
|
|
||||||
// AddFileToPackageVersionInternal adds a file to the package
|
// AddFileToPackageVersionInternal adds a file to the package
|
||||||
// This method skips quota checks and should only be used for system-managed packages.
|
// This method skips quota checks and should only be used for system-managed packages.
|
||||||
func AddFileToPackageVersionInternal(pv *packages_model.PackageVersion, pfci *PackageFileCreationInfo) (*packages_model.PackageFile, error) {
|
func AddFileToPackageVersionInternal(ctx context.Context, pv *packages_model.PackageVersion, pfci *PackageFileCreationInfo) (*packages_model.PackageFile, error) {
|
||||||
return addFileToPackageWrapper(func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error) {
|
return addFileToPackageWrapper(ctx, func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error) {
|
||||||
return addFileToPackageVersionUnchecked(ctx, pv, pfci)
|
return addFileToPackageVersionUnchecked(ctx, pv, pfci)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func addFileToPackageWrapper(fn func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error)) (*packages_model.PackageFile, error) {
|
func addFileToPackageWrapper(ctx context.Context, fn func(ctx context.Context) (*packages_model.PackageFile, *packages_model.PackageBlob, bool, error)) (*packages_model.PackageFile, error) {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -418,10 +418,10 @@ func CheckSizeQuotaExceeded(ctx context.Context, doer, owner *user_model.User, p
|
||||||
|
|
||||||
// GetOrCreateInternalPackageVersion gets or creates an internal package
|
// GetOrCreateInternalPackageVersion gets or creates an internal package
|
||||||
// Some package types need such internal packages for housekeeping.
|
// Some package types need such internal packages for housekeeping.
|
||||||
func GetOrCreateInternalPackageVersion(ownerID int64, packageType packages_model.Type, name, version string) (*packages_model.PackageVersion, error) {
|
func GetOrCreateInternalPackageVersion(ctx context.Context, ownerID int64, packageType packages_model.Type, name, version string) (*packages_model.PackageVersion, error) {
|
||||||
var pv *packages_model.PackageVersion
|
var pv *packages_model.PackageVersion
|
||||||
|
|
||||||
return pv, db.WithTx(db.DefaultContext, func(ctx context.Context) error {
|
return pv, db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
p := &packages_model.Package{
|
p := &packages_model.Package{
|
||||||
OwnerID: ownerID,
|
OwnerID: ownerID,
|
||||||
Type: packageType,
|
Type: packageType,
|
||||||
|
@ -457,31 +457,31 @@ func GetOrCreateInternalPackageVersion(ownerID int64, packageType packages_model
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemovePackageVersionByNameAndVersion deletes a package version and all associated files
|
// RemovePackageVersionByNameAndVersion deletes a package version and all associated files
|
||||||
func RemovePackageVersionByNameAndVersion(doer *user_model.User, pvi *PackageInfo) error {
|
func RemovePackageVersionByNameAndVersion(ctx context.Context, doer *user_model.User, pvi *PackageInfo) error {
|
||||||
pv, err := packages_model.GetVersionByNameAndVersion(db.DefaultContext, pvi.Owner.ID, pvi.PackageType, pvi.Name, pvi.Version)
|
pv, err := packages_model.GetVersionByNameAndVersion(ctx, pvi.Owner.ID, pvi.PackageType, pvi.Name, pvi.Version)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return RemovePackageVersion(doer, pv)
|
return RemovePackageVersion(ctx, doer, pv)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemovePackageVersion deletes the package version and all associated files
|
// RemovePackageVersion deletes the package version and all associated files
|
||||||
func RemovePackageVersion(doer *user_model.User, pv *packages_model.PackageVersion) error {
|
func RemovePackageVersion(ctx context.Context, doer *user_model.User, pv *packages_model.PackageVersion) error {
|
||||||
ctx, committer, err := db.TxContext(db.DefaultContext)
|
dbCtx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
pd, err := packages_model.GetPackageDescriptor(ctx, pv)
|
pd, err := packages_model.GetPackageDescriptor(dbCtx, pv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Trace("Deleting package: %v", pv.ID)
|
log.Trace("Deleting package: %v", pv.ID)
|
||||||
|
|
||||||
if err := DeletePackageVersionAndReferences(ctx, pv); err != nil {
|
if err := DeletePackageVersionAndReferences(dbCtx, pv); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,16 +489,16 @@ func RemovePackageVersion(doer *user_model.User, pv *packages_model.PackageVersi
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_service.PackageDelete(db.DefaultContext, doer, pd)
|
notify_service.PackageDelete(ctx, doer, pd)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemovePackageFileAndVersionIfUnreferenced deletes the package file and the version if there are no referenced files afterwards
|
// RemovePackageFileAndVersionIfUnreferenced deletes the package file and the version if there are no referenced files afterwards
|
||||||
func RemovePackageFileAndVersionIfUnreferenced(doer *user_model.User, pf *packages_model.PackageFile) error {
|
func RemovePackageFileAndVersionIfUnreferenced(ctx context.Context, doer *user_model.User, pf *packages_model.PackageFile) error {
|
||||||
var pd *packages_model.PackageDescriptor
|
var pd *packages_model.PackageDescriptor
|
||||||
|
|
||||||
if err := db.WithTx(db.DefaultContext, func(ctx context.Context) error {
|
if err := db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
if err := DeletePackageFile(ctx, pf); err != nil {
|
if err := DeletePackageFile(ctx, pf); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ func RemovePackageFileAndVersionIfUnreferenced(doer *user_model.User, pf *packag
|
||||||
}
|
}
|
||||||
|
|
||||||
if pd != nil {
|
if pd != nil {
|
||||||
notify_service.PackageDelete(db.DefaultContext, doer, pd)
|
notify_service.PackageDelete(ctx, doer, pd)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue