mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-01 05:36:19 +01:00
Replace all instances of fmt.Errorf(%v) with fmt.Errorf(%w) (#21551)
Found using `find . -type f -name '*.go' -print -exec vim {} -c ':%s/fmt\.Errorf(\(.*\)%v\(.*\)err/fmt.Errorf(\1%w\2err/g' -c ':wq' \;` Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Andrew Thornton <art27@cantab.net> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
parent
7c11a73833
commit
0ebb45cfe7
207 changed files with 857 additions and 857 deletions
|
@ -588,7 +588,7 @@ func runCreateUser(c *cli.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := user_model.CreateUser(u, overwriteDefault); err != nil {
|
if err := user_model.CreateUser(u, overwriteDefault); err != nil {
|
||||||
return fmt.Errorf("CreateUser: %v", err)
|
return fmt.Errorf("CreateUser: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Bool("access-token") {
|
if c.Bool("access-token") {
|
||||||
|
@ -735,7 +735,7 @@ func runRepoSyncReleases(_ *cli.Context) error {
|
||||||
Private: true,
|
Private: true,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("SearchRepositoryByName: %v", err)
|
return fmt.Errorf("SearchRepositoryByName: %w", err)
|
||||||
}
|
}
|
||||||
if len(repos) == 0 {
|
if len(repos) == 0 {
|
||||||
break
|
break
|
||||||
|
|
|
@ -68,7 +68,7 @@ Ensure you are running in the correct environment or set the correct configurati
|
||||||
If this is the intended configuration file complete the [database] section.`, setting.CustomConf)
|
If this is the intended configuration file complete the [database] section.`, setting.CustomConf)
|
||||||
}
|
}
|
||||||
if err := db.InitEngine(ctx); err != nil {
|
if err := db.InitEngine(ctx); err != nil {
|
||||||
return fmt.Errorf("unable to initialize the database using the configuration in %q. Error: %v", setting.CustomConf, err)
|
return fmt.Errorf("unable to initialize the database using the configuration in %q. Error: %w", setting.CustomConf, err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ func runDumpRepository(ctx *cli.Context) error {
|
||||||
// make sure the directory doesn't exist or is empty, prevent from deleting user files
|
// make sure the directory doesn't exist or is empty, prevent from deleting user files
|
||||||
repoDir := ctx.String("repo_dir")
|
repoDir := ctx.String("repo_dir")
|
||||||
if exists, err := util.IsExist(repoDir); err != nil {
|
if exists, err := util.IsExist(repoDir); err != nil {
|
||||||
return fmt.Errorf("unable to stat repo_dir %q: %v", repoDir, err)
|
return fmt.Errorf("unable to stat repo_dir %q: %w", repoDir, err)
|
||||||
} else if exists {
|
} else if exists {
|
||||||
if isDir, _ := util.IsDir(repoDir); !isDir {
|
if isDir, _ := util.IsDir(repoDir); !isDir {
|
||||||
return fmt.Errorf("repo_dir %q already exists but it's not a directory", repoDir)
|
return fmt.Errorf("repo_dir %q already exists but it's not a directory", repoDir)
|
||||||
|
|
|
@ -186,11 +186,11 @@ func runViewDo(c *cli.Context) error {
|
||||||
|
|
||||||
data, err := assets[0].Section.Asset(assets[0].Name)
|
data, err := assets[0].Section.Asset(assets[0].Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %v", assets[0].Path, err)
|
return fmt.Errorf("%s: %w", assets[0].Path, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = os.Stdout.Write(data); err != nil {
|
if _, err = os.Stdout.Write(data); err != nil {
|
||||||
return fmt.Errorf("%s: %v", assets[0].Path, err)
|
return fmt.Errorf("%s: %w", assets[0].Path, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -251,11 +251,11 @@ func extractAsset(d string, a asset, overwrite, rename bool) error {
|
||||||
|
|
||||||
data, err := a.Section.Asset(a.Name)
|
data, err := a.Section.Asset(a.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %v", a.Path, err)
|
return fmt.Errorf("%s: %w", a.Path, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
||||||
return fmt.Errorf("%s: %v", dir, err)
|
return fmt.Errorf("%s: %w", dir, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
perms := os.ModePerm & 0o666
|
perms := os.ModePerm & 0o666
|
||||||
|
@ -263,7 +263,7 @@ func extractAsset(d string, a asset, overwrite, rename bool) error {
|
||||||
fi, err := os.Lstat(dest)
|
fi, err := os.Lstat(dest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !errors.Is(err, os.ErrNotExist) {
|
if !errors.Is(err, os.ErrNotExist) {
|
||||||
return fmt.Errorf("%s: %v", dest, err)
|
return fmt.Errorf("%s: %w", dest, err)
|
||||||
}
|
}
|
||||||
} else if !overwrite && !rename {
|
} else if !overwrite && !rename {
|
||||||
fmt.Printf("%s already exists; skipped.\n", dest)
|
fmt.Printf("%s already exists; skipped.\n", dest)
|
||||||
|
@ -272,7 +272,7 @@ func extractAsset(d string, a asset, overwrite, rename bool) error {
|
||||||
return fmt.Errorf("%s already exists, but it's not a regular file", dest)
|
return fmt.Errorf("%s already exists, but it's not a regular file", dest)
|
||||||
} else if rename {
|
} else if rename {
|
||||||
if err := util.Rename(dest, dest+".bak"); err != nil {
|
if err := util.Rename(dest, dest+".bak"); err != nil {
|
||||||
return fmt.Errorf("Error creating backup for %s: %v", dest, err)
|
return fmt.Errorf("Error creating backup for %s: %w", dest, err)
|
||||||
}
|
}
|
||||||
// Attempt to respect file permissions mask (even if user:group will be set anew)
|
// Attempt to respect file permissions mask (even if user:group will be set anew)
|
||||||
perms = fi.Mode()
|
perms = fi.Mode()
|
||||||
|
@ -280,12 +280,12 @@ func extractAsset(d string, a asset, overwrite, rename bool) error {
|
||||||
|
|
||||||
file, err := os.OpenFile(dest, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, perms)
|
file, err := os.OpenFile(dest, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, perms)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %v", dest, err)
|
return fmt.Errorf("%s: %w", dest, err)
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
if _, err = file.Write(data); err != nil {
|
if _, err = file.Write(data); err != nil {
|
||||||
return fmt.Errorf("%s: %v", dest, err)
|
return fmt.Errorf("%s: %w", dest, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(dest)
|
fmt.Println(dest)
|
||||||
|
@ -325,7 +325,7 @@ func getPatterns(args []string) ([]glob.Glob, error) {
|
||||||
pat := make([]glob.Glob, len(args))
|
pat := make([]glob.Glob, len(args))
|
||||||
for i := range args {
|
for i := range args {
|
||||||
if g, err := glob.Compile(args[i], '/'); err != nil {
|
if g, err := glob.Compile(args[i], '/'); err != nil {
|
||||||
return nil, fmt.Errorf("'%s': Invalid glob pattern: %v", args[i], err)
|
return nil, fmt.Errorf("'%s': Invalid glob pattern: %w", args[i], err)
|
||||||
} else {
|
} else {
|
||||||
pat[i] = g
|
pat[i] = g
|
||||||
}
|
}
|
||||||
|
|
|
@ -312,7 +312,7 @@ func runHookPostReceive(c *cli.Context) error {
|
||||||
|
|
||||||
// First of all run update-server-info no matter what
|
// First of all run update-server-info no matter what
|
||||||
if _, _, err := git.NewCommand(ctx, "update-server-info").RunStdString(nil); err != nil {
|
if _, _, err := git.NewCommand(ctx, "update-server-info").RunStdString(nil); err != nil {
|
||||||
return fmt.Errorf("Failed to call 'git update-server-info': %v", err)
|
return fmt.Errorf("Failed to call 'git update-server-info': %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now if we're an internal don't do anything else
|
// Now if we're an internal don't do anything else
|
||||||
|
|
|
@ -359,11 +359,11 @@ func GetFeeds(ctx context.Context, opts GetFeedsOptions) (ActionList, error) {
|
||||||
actions := make([]*Action, 0, opts.PageSize)
|
actions := make([]*Action, 0, opts.PageSize)
|
||||||
|
|
||||||
if err := sess.Desc("`action`.created_unix").Find(&actions); err != nil {
|
if err := sess.Desc("`action`.created_unix").Find(&actions); err != nil {
|
||||||
return nil, fmt.Errorf("Find: %v", err)
|
return nil, fmt.Errorf("Find: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := ActionList(actions).loadAttributes(ctx); err != nil {
|
if err := ActionList(actions).loadAttributes(ctx); err != nil {
|
||||||
return nil, fmt.Errorf("LoadAttributes: %v", err)
|
return nil, fmt.Errorf("LoadAttributes: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return actions, nil
|
return actions, nil
|
||||||
|
@ -415,7 +415,7 @@ func activityQueryCondition(opts GetFeedsOptions) (builder.Cond, error) {
|
||||||
env := organization.OrgFromUser(opts.RequestedUser).AccessibleTeamReposEnv(opts.RequestedTeam)
|
env := organization.OrgFromUser(opts.RequestedUser).AccessibleTeamReposEnv(opts.RequestedTeam)
|
||||||
teamRepoIDs, err := env.RepoIDs(1, opts.RequestedUser.NumRepos)
|
teamRepoIDs, err := env.RepoIDs(1, opts.RequestedUser.NumRepos)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetTeamRepositories: %v", err)
|
return nil, fmt.Errorf("GetTeamRepositories: %w", err)
|
||||||
}
|
}
|
||||||
cond = cond.And(builder.In("repo_id", teamRepoIDs))
|
cond = cond.And(builder.In("repo_id", teamRepoIDs))
|
||||||
}
|
}
|
||||||
|
@ -477,14 +477,14 @@ func notifyWatchers(ctx context.Context, actions ...*Action) error {
|
||||||
// Add feeds for user self and all watchers.
|
// Add feeds for user self and all watchers.
|
||||||
watchers, err = repo_model.GetWatchers(ctx, act.RepoID)
|
watchers, err = repo_model.GetWatchers(ctx, act.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get watchers: %v", err)
|
return fmt.Errorf("get watchers: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add feed for actioner.
|
// Add feed for actioner.
|
||||||
act.UserID = act.ActUserID
|
act.UserID = act.ActUserID
|
||||||
if _, err = e.Insert(act); err != nil {
|
if _, err = e.Insert(act); err != nil {
|
||||||
return fmt.Errorf("insert new actioner: %v", err)
|
return fmt.Errorf("insert new actioner: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if repoChanged {
|
if repoChanged {
|
||||||
|
@ -493,7 +493,7 @@ func notifyWatchers(ctx context.Context, actions ...*Action) error {
|
||||||
|
|
||||||
// check repo owner exist.
|
// check repo owner exist.
|
||||||
if err := act.Repo.GetOwner(ctx); err != nil {
|
if err := act.Repo.GetOwner(ctx); err != nil {
|
||||||
return fmt.Errorf("can't get repo owner: %v", err)
|
return fmt.Errorf("can't get repo owner: %w", err)
|
||||||
}
|
}
|
||||||
} else if act.Repo == nil {
|
} else if act.Repo == nil {
|
||||||
act.Repo = repo
|
act.Repo = repo
|
||||||
|
@ -504,7 +504,7 @@ func notifyWatchers(ctx context.Context, actions ...*Action) error {
|
||||||
act.ID = 0
|
act.ID = 0
|
||||||
act.UserID = act.Repo.Owner.ID
|
act.UserID = act.Repo.Owner.ID
|
||||||
if err = db.Insert(ctx, act); err != nil {
|
if err = db.Insert(ctx, act); err != nil {
|
||||||
return fmt.Errorf("insert new actioner: %v", err)
|
return fmt.Errorf("insert new actioner: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -557,7 +557,7 @@ func notifyWatchers(ctx context.Context, actions ...*Action) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = db.Insert(ctx, act); err != nil {
|
if err = db.Insert(ctx, act); err != nil {
|
||||||
return fmt.Errorf("insert new action: %v", err)
|
return fmt.Errorf("insert new action: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ func (actions ActionList) loadUsers(ctx context.Context) (map[int64]*user_model.
|
||||||
In("id", userIDs).
|
In("id", userIDs).
|
||||||
Find(&userMaps)
|
Find(&userMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("find user: %v", err)
|
return nil, fmt.Errorf("find user: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
|
@ -62,7 +62,7 @@ func (actions ActionList) loadRepositories(ctx context.Context) error {
|
||||||
repoMaps := make(map[int64]*repo_model.Repository, len(repoIDs))
|
repoMaps := make(map[int64]*repo_model.Repository, len(repoIDs))
|
||||||
err := db.GetEngine(ctx).In("id", repoIDs).Find(&repoMaps)
|
err := db.GetEngine(ctx).In("id", repoIDs).Find(&repoMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("find repository: %v", err)
|
return fmt.Errorf("find repository: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, action := range actions {
|
for _, action := range actions {
|
||||||
|
|
|
@ -403,7 +403,7 @@ func (n *Notification) loadRepo(ctx context.Context) (err error) {
|
||||||
if n.Repository == nil {
|
if n.Repository == nil {
|
||||||
n.Repository, err = repo_model.GetRepositoryByIDCtx(ctx, n.RepoID)
|
n.Repository, err = repo_model.GetRepositoryByIDCtx(ctx, n.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getRepositoryByID [%d]: %v", n.RepoID, err)
|
return fmt.Errorf("getRepositoryByID [%d]: %w", n.RepoID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -413,7 +413,7 @@ func (n *Notification) loadIssue(ctx context.Context) (err error) {
|
||||||
if n.Issue == nil && n.IssueID != 0 {
|
if n.Issue == nil && n.IssueID != 0 {
|
||||||
n.Issue, err = issues_model.GetIssueByID(ctx, n.IssueID)
|
n.Issue, err = issues_model.GetIssueByID(ctx, n.IssueID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getIssueByID [%d]: %v", n.IssueID, err)
|
return fmt.Errorf("getIssueByID [%d]: %w", n.IssueID, err)
|
||||||
}
|
}
|
||||||
return n.Issue.LoadAttributes(ctx)
|
return n.Issue.LoadAttributes(ctx)
|
||||||
}
|
}
|
||||||
|
@ -440,7 +440,7 @@ func (n *Notification) loadUser(ctx context.Context) (err error) {
|
||||||
if n.User == nil {
|
if n.User == nil {
|
||||||
n.User, err = user_model.GetUserByIDCtx(ctx, n.UserID)
|
n.User, err = user_model.GetUserByIDCtx(ctx, n.UserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getUserByID [%d]: %v", n.UserID, err)
|
return fmt.Errorf("getUserByID [%d]: %w", n.UserID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -49,32 +49,32 @@ func GetActivityStats(ctx context.Context, repo *repo_model.Repository, timeFrom
|
||||||
stats := &ActivityStats{Code: &git.CodeActivityStats{}}
|
stats := &ActivityStats{Code: &git.CodeActivityStats{}}
|
||||||
if releases {
|
if releases {
|
||||||
if err := stats.FillReleases(repo.ID, timeFrom); err != nil {
|
if err := stats.FillReleases(repo.ID, timeFrom); err != nil {
|
||||||
return nil, fmt.Errorf("FillReleases: %v", err)
|
return nil, fmt.Errorf("FillReleases: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if prs {
|
if prs {
|
||||||
if err := stats.FillPullRequests(repo.ID, timeFrom); err != nil {
|
if err := stats.FillPullRequests(repo.ID, timeFrom); err != nil {
|
||||||
return nil, fmt.Errorf("FillPullRequests: %v", err)
|
return nil, fmt.Errorf("FillPullRequests: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if issues {
|
if issues {
|
||||||
if err := stats.FillIssues(repo.ID, timeFrom); err != nil {
|
if err := stats.FillIssues(repo.ID, timeFrom); err != nil {
|
||||||
return nil, fmt.Errorf("FillIssues: %v", err)
|
return nil, fmt.Errorf("FillIssues: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := stats.FillUnresolvedIssues(repo.ID, timeFrom, issues, prs); err != nil {
|
if err := stats.FillUnresolvedIssues(repo.ID, timeFrom, issues, prs); err != nil {
|
||||||
return nil, fmt.Errorf("FillUnresolvedIssues: %v", err)
|
return nil, fmt.Errorf("FillUnresolvedIssues: %w", err)
|
||||||
}
|
}
|
||||||
if code {
|
if code {
|
||||||
gitRepo, closer, err := git.RepositoryFromContextOrOpen(ctx, repo.RepoPath())
|
gitRepo, closer, err := git.RepositoryFromContextOrOpen(ctx, repo.RepoPath())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("OpenRepository: %v", err)
|
return nil, fmt.Errorf("OpenRepository: %w", err)
|
||||||
}
|
}
|
||||||
defer closer.Close()
|
defer closer.Close()
|
||||||
|
|
||||||
code, err := gitRepo.GetCodeActivityStats(timeFrom, repo.DefaultBranch)
|
code, err := gitRepo.GetCodeActivityStats(timeFrom, repo.DefaultBranch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("FillFromGit: %v", err)
|
return nil, fmt.Errorf("FillFromGit: %w", err)
|
||||||
}
|
}
|
||||||
stats.Code = code
|
stats.Code = code
|
||||||
}
|
}
|
||||||
|
@ -85,13 +85,13 @@ func GetActivityStats(ctx context.Context, repo *repo_model.Repository, timeFrom
|
||||||
func GetActivityStatsTopAuthors(ctx context.Context, repo *repo_model.Repository, timeFrom time.Time, count int) ([]*ActivityAuthorData, error) {
|
func GetActivityStatsTopAuthors(ctx context.Context, repo *repo_model.Repository, timeFrom time.Time, count int) ([]*ActivityAuthorData, error) {
|
||||||
gitRepo, closer, err := git.RepositoryFromContextOrOpen(ctx, repo.RepoPath())
|
gitRepo, closer, err := git.RepositoryFromContextOrOpen(ctx, repo.RepoPath())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("OpenRepository: %v", err)
|
return nil, fmt.Errorf("OpenRepository: %w", err)
|
||||||
}
|
}
|
||||||
defer closer.Close()
|
defer closer.Close()
|
||||||
|
|
||||||
code, err := gitRepo.GetCodeActivityStats(timeFrom, "")
|
code, err := gitRepo.GetCodeActivityStats(timeFrom, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("FillFromGit: %v", err)
|
return nil, fmt.Errorf("FillFromGit: %w", err)
|
||||||
}
|
}
|
||||||
if code.Authors == nil {
|
if code.Authors == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
|
|
@ -226,7 +226,7 @@ func DeleteGPGKey(doer *user_model.User, id int64) (err error) {
|
||||||
if IsErrGPGKeyNotExist(err) {
|
if IsErrGPGKeyNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("GetPublicKeyByID: %v", err)
|
return fmt.Errorf("GetPublicKeyByID: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if user has access to delete this key.
|
// Check if user has access to delete this key.
|
||||||
|
|
|
@ -130,7 +130,7 @@ func AddPublicKey(ownerID int64, name, content string, authSourceID int64) (*Pub
|
||||||
LoginSourceID: authSourceID,
|
LoginSourceID: authSourceID,
|
||||||
}
|
}
|
||||||
if err = addKey(ctx, key); err != nil {
|
if err = addKey(ctx, key); err != nil {
|
||||||
return nil, fmt.Errorf("addKey: %v", err)
|
return nil, fmt.Errorf("addKey: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return key, committer.Commit()
|
return key, committer.Commit()
|
||||||
|
|
|
@ -151,7 +151,7 @@ func AddDeployKey(repoID int64, name, content string, readOnly bool) (*DeployKey
|
||||||
pkey.Content = content
|
pkey.Content = content
|
||||||
pkey.Name = name
|
pkey.Name = name
|
||||||
if err = addKey(ctx, pkey); err != nil {
|
if err = addKey(ctx, pkey); err != nil {
|
||||||
return nil, fmt.Errorf("addKey: %v", err)
|
return nil, fmt.Errorf("addKey: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ func CalcFingerprint(publicKeyContent string) (string, error) {
|
||||||
log.Info("%s", publicKeyContent)
|
log.Info("%s", publicKeyContent)
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return "", fmt.Errorf("%s: %v", fnName, err)
|
return "", fmt.Errorf("%s: %w", fnName, err)
|
||||||
}
|
}
|
||||||
return fp, nil
|
return fp, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ const ssh2keyStart = "---- BEGIN SSH2 PUBLIC KEY ----"
|
||||||
func extractTypeFromBase64Key(key string) (string, error) {
|
func extractTypeFromBase64Key(key string) (string, error) {
|
||||||
b, err := base64.StdEncoding.DecodeString(key)
|
b, err := base64.StdEncoding.DecodeString(key)
|
||||||
if err != nil || len(b) < 4 {
|
if err != nil || len(b) < 4 {
|
||||||
return "", fmt.Errorf("invalid key format: %v", err)
|
return "", fmt.Errorf("invalid key format: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
keyLength := int(binary.BigEndian.Uint32(b))
|
keyLength := int(binary.BigEndian.Uint32(b))
|
||||||
|
@ -85,7 +85,7 @@ func parseKeyString(content string) (string, error) {
|
||||||
|
|
||||||
t, err := extractTypeFromBase64Key(keyContent)
|
t, err := extractTypeFromBase64Key(keyContent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("extractTypeFromBase64Key: %v", err)
|
return "", fmt.Errorf("extractTypeFromBase64Key: %w", err)
|
||||||
}
|
}
|
||||||
keyType = t
|
keyType = t
|
||||||
} else {
|
} else {
|
||||||
|
@ -104,14 +104,14 @@ func parseKeyString(content string) (string, error) {
|
||||||
var pk rsa.PublicKey
|
var pk rsa.PublicKey
|
||||||
_, err2 := asn1.Unmarshal(block.Bytes, &pk)
|
_, err2 := asn1.Unmarshal(block.Bytes, &pk)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
return "", fmt.Errorf("failed to parse DER encoded public key as either PKIX or PEM RSA Key: %v %v", err, err2)
|
return "", fmt.Errorf("failed to parse DER encoded public key as either PKIX or PEM RSA Key: %v %w", err, err2)
|
||||||
}
|
}
|
||||||
pub = &pk
|
pub = &pk
|
||||||
}
|
}
|
||||||
|
|
||||||
sshKey, err := ssh.NewPublicKey(pub)
|
sshKey, err := ssh.NewPublicKey(pub)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("unable to convert to ssh public key: %v", err)
|
return "", fmt.Errorf("unable to convert to ssh public key: %w", err)
|
||||||
}
|
}
|
||||||
content = string(ssh.MarshalAuthorizedKey(sshKey))
|
content = string(ssh.MarshalAuthorizedKey(sshKey))
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,7 @@ func parseKeyString(content string) (string, error) {
|
||||||
// If keyType is not given, extract it from content. If given, validate it.
|
// If keyType is not given, extract it from content. If given, validate it.
|
||||||
t, err := extractTypeFromBase64Key(keyContent)
|
t, err := extractTypeFromBase64Key(keyContent)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("extractTypeFromBase64Key: %v", err)
|
return "", fmt.Errorf("extractTypeFromBase64Key: %w", err)
|
||||||
}
|
}
|
||||||
if len(keyType) == 0 {
|
if len(keyType) == 0 {
|
||||||
keyType = t
|
keyType = t
|
||||||
|
@ -149,7 +149,7 @@ func parseKeyString(content string) (string, error) {
|
||||||
// Finally we need to check whether we can actually read the proposed key:
|
// Finally we need to check whether we can actually read the proposed key:
|
||||||
_, _, _, _, err := ssh.ParseAuthorizedKey([]byte(keyType + " " + keyContent + " " + keyComment))
|
_, _, _, _, err := ssh.ParseAuthorizedKey([]byte(keyType + " " + keyContent + " " + keyComment))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("invalid ssh public key: %v", err)
|
return "", fmt.Errorf("invalid ssh public key: %w", err)
|
||||||
}
|
}
|
||||||
return keyType + " " + keyContent + " " + keyComment, nil
|
return keyType + " " + keyContent + " " + keyComment, nil
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ func CheckPublicKeyString(content string) (_ string, err error) {
|
||||||
keyType, length, err = SSHKeyGenParsePublicKey(content)
|
keyType, length, err = SSHKeyGenParsePublicKey(content)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("%s: %v", fnName, err)
|
return "", fmt.Errorf("%s: %w", fnName, err)
|
||||||
}
|
}
|
||||||
log.Trace("Key info [native: %v]: %s-%d", setting.SSH.StartBuiltinServer, keyType, length)
|
log.Trace("Key info [native: %v]: %s-%d", setting.SSH.StartBuiltinServer, keyType, length)
|
||||||
|
|
||||||
|
@ -220,7 +220,7 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) {
|
||||||
if strings.Contains(err.Error(), "ssh: unknown key algorithm") {
|
if strings.Contains(err.Error(), "ssh: unknown key algorithm") {
|
||||||
return "", 0, ErrKeyUnableVerify{err.Error()}
|
return "", 0, ErrKeyUnableVerify{err.Error()}
|
||||||
}
|
}
|
||||||
return "", 0, fmt.Errorf("ParsePublicKey: %v", err)
|
return "", 0, fmt.Errorf("ParsePublicKey: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The ssh library can parse the key, so next we find out what key exactly we have.
|
// The ssh library can parse the key, so next we find out what key exactly we have.
|
||||||
|
@ -267,12 +267,12 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) {
|
||||||
func writeTmpKeyFile(content string) (string, error) {
|
func writeTmpKeyFile(content string) (string, error) {
|
||||||
tmpFile, err := os.CreateTemp(setting.SSH.KeyTestPath, "gitea_keytest")
|
tmpFile, err := os.CreateTemp(setting.SSH.KeyTestPath, "gitea_keytest")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("TempFile: %v", err)
|
return "", fmt.Errorf("TempFile: %w", err)
|
||||||
}
|
}
|
||||||
defer tmpFile.Close()
|
defer tmpFile.Close()
|
||||||
|
|
||||||
if _, err = tmpFile.WriteString(content); err != nil {
|
if _, err = tmpFile.WriteString(content); err != nil {
|
||||||
return "", fmt.Errorf("WriteString: %v", err)
|
return "", fmt.Errorf("WriteString: %w", err)
|
||||||
}
|
}
|
||||||
return tmpFile.Name(), nil
|
return tmpFile.Name(), nil
|
||||||
}
|
}
|
||||||
|
@ -281,7 +281,7 @@ func writeTmpKeyFile(content string) (string, error) {
|
||||||
func SSHKeyGenParsePublicKey(key string) (string, int, error) {
|
func SSHKeyGenParsePublicKey(key string) (string, int, error) {
|
||||||
tmpName, err := writeTmpKeyFile(key)
|
tmpName, err := writeTmpKeyFile(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", 0, fmt.Errorf("writeTmpKeyFile: %v", err)
|
return "", 0, fmt.Errorf("writeTmpKeyFile: %w", err)
|
||||||
}
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := util.Remove(tmpName); err != nil {
|
if err := util.Remove(tmpName); err != nil {
|
||||||
|
|
|
@ -51,7 +51,7 @@ func AddPrincipalKey(ownerID int64, content string, authSourceID int64) (*Public
|
||||||
LoginSourceID: authSourceID,
|
LoginSourceID: authSourceID,
|
||||||
}
|
}
|
||||||
if err = db.Insert(ctx, key); err != nil {
|
if err = db.Insert(ctx, key); err != nil {
|
||||||
return nil, fmt.Errorf("addKey: %v", err)
|
return nil, fmt.Errorf("addKey: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = committer.Commit(); err != nil {
|
if err = committer.Commit(); err != nil {
|
||||||
|
|
|
@ -570,7 +570,7 @@ func DeleteOAuth2RelictsByUserID(ctx context.Context, userID int64) error {
|
||||||
&OAuth2Application{UID: userID},
|
&OAuth2Application{UID: userID},
|
||||||
&OAuth2Grant{UserID: userID},
|
&OAuth2Grant{UserID: userID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("DeleteBeans: %v", err)
|
return fmt.Errorf("DeleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -86,7 +86,7 @@ func init() {
|
||||||
var err error
|
var err error
|
||||||
successfulAccessTokenCache, err = lru.New(setting.SuccessfulTokensCacheSize)
|
successfulAccessTokenCache, err = lru.New(setting.SuccessfulTokensCacheSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to allocate AccessToken cache: %v", err)
|
return fmt.Errorf("unable to allocate AccessToken cache: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
successfulAccessTokenCache = nil
|
successfulAccessTokenCache = nil
|
||||||
|
|
|
@ -130,7 +130,7 @@ func SyncAllTables() error {
|
||||||
func InitEngine(ctx context.Context) error {
|
func InitEngine(ctx context.Context) error {
|
||||||
xormEngine, err := newXORMEngine()
|
xormEngine, err := newXORMEngine()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to connect to database: %v", err)
|
return fmt.Errorf("failed to connect to database: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
xormEngine.SetMapper(names.GonicMapper{})
|
xormEngine.SetMapper(names.GonicMapper{})
|
||||||
|
@ -189,16 +189,16 @@ func InitEngineWithMigration(ctx context.Context, migrateFunc func(*xorm.Engine)
|
||||||
// However, we should think carefully about should we support re-install on an installed instance,
|
// However, we should think carefully about should we support re-install on an installed instance,
|
||||||
// as there may be other problems due to secret reinitialization.
|
// as there may be other problems due to secret reinitialization.
|
||||||
if err = migrateFunc(x); err != nil {
|
if err = migrateFunc(x); err != nil {
|
||||||
return fmt.Errorf("migrate: %v", err)
|
return fmt.Errorf("migrate: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = SyncAllTables(); err != nil {
|
if err = SyncAllTables(); err != nil {
|
||||||
return fmt.Errorf("sync database struct error: %v", err)
|
return fmt.Errorf("sync database struct error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, initFunc := range initFuncs {
|
for _, initFunc := range initFuncs {
|
||||||
if err := initFunc(); err != nil {
|
if err := initFunc(); err != nil {
|
||||||
return fmt.Errorf("initFunc failed: %v", err)
|
return fmt.Errorf("initFunc failed: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -270,7 +270,7 @@ type WhitelistOptions struct {
|
||||||
// to avoid unnecessary whitelist delete and regenerate.
|
// to avoid unnecessary whitelist delete and regenerate.
|
||||||
func UpdateProtectBranch(ctx context.Context, repo *repo_model.Repository, protectBranch *ProtectedBranch, opts WhitelistOptions) (err error) {
|
func UpdateProtectBranch(ctx context.Context, repo *repo_model.Repository, protectBranch *ProtectedBranch, opts WhitelistOptions) (err error) {
|
||||||
if err = repo.GetOwner(ctx); err != nil {
|
if err = repo.GetOwner(ctx); err != nil {
|
||||||
return fmt.Errorf("GetOwner: %v", err)
|
return fmt.Errorf("GetOwner: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
whitelist, err := updateUserWhitelist(ctx, repo, protectBranch.WhitelistUserIDs, opts.UserIDs)
|
whitelist, err := updateUserWhitelist(ctx, repo, protectBranch.WhitelistUserIDs, opts.UserIDs)
|
||||||
|
@ -313,13 +313,13 @@ func UpdateProtectBranch(ctx context.Context, repo *repo_model.Repository, prote
|
||||||
// Make sure protectBranch.ID is not 0 for whitelists
|
// Make sure protectBranch.ID is not 0 for whitelists
|
||||||
if protectBranch.ID == 0 {
|
if protectBranch.ID == 0 {
|
||||||
if _, err = db.GetEngine(ctx).Insert(protectBranch); err != nil {
|
if _, err = db.GetEngine(ctx).Insert(protectBranch); err != nil {
|
||||||
return fmt.Errorf("Insert: %v", err)
|
return fmt.Errorf("Insert: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = db.GetEngine(ctx).ID(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
if _, err = db.GetEngine(ctx).ID(protectBranch.ID).AllCols().Update(protectBranch); err != nil {
|
||||||
return fmt.Errorf("Update: %v", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -378,11 +378,11 @@ func updateUserWhitelist(ctx context.Context, repo *repo_model.Repository, curre
|
||||||
for _, userID := range newWhitelist {
|
for _, userID := range newWhitelist {
|
||||||
user, err := user_model.GetUserByIDCtx(ctx, userID)
|
user, err := user_model.GetUserByIDCtx(ctx, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetUserByID [user_id: %d, repo_id: %d]: %v", userID, repo.ID, err)
|
return nil, fmt.Errorf("GetUserByID [user_id: %d, repo_id: %d]: %w", userID, repo.ID, err)
|
||||||
}
|
}
|
||||||
perm, err := access_model.GetUserRepoPermission(ctx, repo, user)
|
perm, err := access_model.GetUserRepoPermission(ctx, repo, user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetUserRepoPermission [user_id: %d, repo_id: %d]: %v", userID, repo.ID, err)
|
return nil, fmt.Errorf("GetUserRepoPermission [user_id: %d, repo_id: %d]: %w", userID, repo.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !perm.CanWrite(unit.TypeCode) {
|
if !perm.CanWrite(unit.TypeCode) {
|
||||||
|
@ -405,7 +405,7 @@ func updateTeamWhitelist(ctx context.Context, repo *repo_model.Repository, curre
|
||||||
|
|
||||||
teams, err := organization.GetTeamsWithAccessToRepo(ctx, repo.OwnerID, repo.ID, perm.AccessModeRead)
|
teams, err := organization.GetTeamsWithAccessToRepo(ctx, repo.OwnerID, repo.ID, perm.AccessModeRead)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetTeamsWithAccessToRepo [org_id: %d, repo_id: %d]: %v", repo.OwnerID, repo.ID, err)
|
return nil, fmt.Errorf("GetTeamsWithAccessToRepo [org_id: %d, repo_id: %d]: %w", repo.OwnerID, repo.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
whitelist = make([]int64, 0, len(teams))
|
whitelist = make([]int64, 0, len(teams))
|
||||||
|
|
|
@ -128,13 +128,13 @@ func (status *CommitStatus) loadAttributes(ctx context.Context) (err error) {
|
||||||
if status.Repo == nil {
|
if status.Repo == nil {
|
||||||
status.Repo, err = repo_model.GetRepositoryByIDCtx(ctx, status.RepoID)
|
status.Repo, err = repo_model.GetRepositoryByIDCtx(ctx, status.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getRepositoryByID [%d]: %v", status.RepoID, err)
|
return fmt.Errorf("getRepositoryByID [%d]: %w", status.RepoID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if status.Creator == nil && status.CreatorID > 0 {
|
if status.Creator == nil && status.CreatorID > 0 {
|
||||||
status.Creator, err = user_model.GetUserByIDCtx(ctx, status.CreatorID)
|
status.Creator, err = user_model.GetUserByIDCtx(ctx, status.CreatorID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getUserByID [%d]: %v", status.CreatorID, err)
|
return fmt.Errorf("getUserByID [%d]: %w", status.CreatorID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -294,12 +294,12 @@ func NewCommitStatus(opts NewCommitStatusOptions) error {
|
||||||
// Get the next Status Index
|
// Get the next Status Index
|
||||||
idx, err := GetNextCommitStatusIndex(opts.Repo.ID, opts.SHA)
|
idx, err := GetNextCommitStatusIndex(opts.Repo.ID, opts.SHA)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("generate commit status index failed: %v", err)
|
return fmt.Errorf("generate commit status index failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, committer, err := db.TxContext()
|
ctx, committer, err := db.TxContext()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("NewCommitStatus[repo_id: %d, user_id: %d, sha: %s]: %v", opts.Repo.ID, opts.Creator.ID, opts.SHA, err)
|
return fmt.Errorf("NewCommitStatus[repo_id: %d, user_id: %d, sha: %s]: %w", opts.Repo.ID, opts.Creator.ID, opts.SHA, err)
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
|
@ -316,7 +316,7 @@ func NewCommitStatus(opts NewCommitStatusOptions) error {
|
||||||
|
|
||||||
// Insert new CommitStatus
|
// Insert new CommitStatus
|
||||||
if _, err = db.GetEngine(ctx).Insert(opts.CommitStatus); err != nil {
|
if _, err = db.GetEngine(ctx).Insert(opts.CommitStatus); err != nil {
|
||||||
return fmt.Errorf("Insert CommitStatus[%s, %s]: %v", repoPath, opts.SHA, err)
|
return fmt.Errorf("Insert CommitStatus[%s, %s]: %w", repoPath, opts.SHA, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
|
|
@ -316,7 +316,7 @@ func CopyLFS(ctx context.Context, newRepo, oldRepo *repo_model.Repository) error
|
||||||
func GetRepoLFSSize(ctx context.Context, repoID int64) (int64, error) {
|
func GetRepoLFSSize(ctx context.Context, repoID int64) (int64, error) {
|
||||||
lfsSize, err := db.GetEngine(ctx).Where("repository_id = ?", repoID).SumInt(new(LFSMetaObject), "size")
|
lfsSize, err := db.GetEngine(ctx).Where("repository_id = ?", repoID).SumInt(new(LFSMetaObject), "size")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("updateSize: GetLFSMetaObjects: %v", err)
|
return 0, fmt.Errorf("updateSize: GetLFSMetaObjects: %w", err)
|
||||||
}
|
}
|
||||||
return lfsSize, nil
|
return lfsSize, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,12 +85,12 @@ func ToggleIssueAssignee(issue *Issue, doer *user_model.User, assigneeID int64)
|
||||||
func toggleIssueAssignee(ctx context.Context, issue *Issue, doer *user_model.User, assigneeID int64, isCreate bool) (removed bool, comment *Comment, err error) {
|
func toggleIssueAssignee(ctx context.Context, issue *Issue, doer *user_model.User, assigneeID int64, isCreate bool) (removed bool, comment *Comment, err error) {
|
||||||
removed, err = toggleUserAssignee(ctx, issue, assigneeID)
|
removed, err = toggleUserAssignee(ctx, issue, assigneeID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil, fmt.Errorf("UpdateIssueUserByAssignee: %v", err)
|
return false, nil, fmt.Errorf("UpdateIssueUserByAssignee: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Repo infos
|
// Repo infos
|
||||||
if err = issue.LoadRepo(ctx); err != nil {
|
if err = issue.LoadRepo(ctx); err != nil {
|
||||||
return false, nil, fmt.Errorf("loadRepo: %v", err)
|
return false, nil, fmt.Errorf("loadRepo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
opts := &CreateCommentOptions{
|
opts := &CreateCommentOptions{
|
||||||
|
@ -104,7 +104,7 @@ func toggleIssueAssignee(ctx context.Context, issue *Issue, doer *user_model.Use
|
||||||
// Comment
|
// Comment
|
||||||
comment, err = CreateCommentCtx(ctx, opts)
|
comment, err = CreateCommentCtx(ctx, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil, fmt.Errorf("createComment: %v", err)
|
return false, nil, fmt.Errorf("createComment: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// if pull request is in the middle of creation - don't call webhook
|
// if pull request is in the middle of creation - don't call webhook
|
||||||
|
|
|
@ -573,13 +573,13 @@ func (c *Comment) UpdateAttachments(uuids []string) error {
|
||||||
|
|
||||||
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, uuids)
|
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, uuids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", uuids, err)
|
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", uuids, err)
|
||||||
}
|
}
|
||||||
for i := 0; i < len(attachments); i++ {
|
for i := 0; i < len(attachments); i++ {
|
||||||
attachments[i].IssueID = c.IssueID
|
attachments[i].IssueID = c.IssueID
|
||||||
attachments[i].CommentID = c.ID
|
attachments[i].CommentID = c.ID
|
||||||
if err := repo_model.UpdateAttachment(ctx, attachments[i]); err != nil {
|
if err := repo_model.UpdateAttachment(ctx, attachments[i]); err != nil {
|
||||||
return fmt.Errorf("update attachment [id: %d]: %v", attachments[i].ID, err)
|
return fmt.Errorf("update attachment [id: %d]: %w", attachments[i].ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -874,7 +874,7 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment
|
||||||
// Check attachments
|
// Check attachments
|
||||||
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments)
|
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", opts.Attachments, err)
|
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", opts.Attachments, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range attachments {
|
for i := range attachments {
|
||||||
|
@ -882,7 +882,7 @@ func updateCommentInfos(ctx context.Context, opts *CreateCommentOptions, comment
|
||||||
attachments[i].CommentID = comment.ID
|
attachments[i].CommentID = comment.ID
|
||||||
// No assign value could be 0, so ignore AllCols().
|
// No assign value could be 0, so ignore AllCols().
|
||||||
if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
||||||
return fmt.Errorf("update attachment [%d]: %v", attachments[i].ID, err)
|
return fmt.Errorf("update attachment [%d]: %w", attachments[i].ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case CommentTypeReopen, CommentTypeClose:
|
case CommentTypeReopen, CommentTypeClose:
|
||||||
|
@ -1034,7 +1034,7 @@ func CreateRefComment(doer *user_model.User, repo *repo_model.Repository, issue
|
||||||
CommitSHA: commitSHA,
|
CommitSHA: commitSHA,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("check reference comment: %v", err)
|
return fmt.Errorf("check reference comment: %w", err)
|
||||||
} else if has {
|
} else if has {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -1152,7 +1152,7 @@ func UpdateComment(c *Comment, doer *user_model.User) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := committer.Commit(); err != nil {
|
if err := committer.Commit(); err != nil {
|
||||||
return fmt.Errorf("Commit: %v", err)
|
return fmt.Errorf("Commit: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -196,7 +196,7 @@ func (issue *Issue) LoadRepo(ctx context.Context) (err error) {
|
||||||
if issue.Repo == nil {
|
if issue.Repo == nil {
|
||||||
issue.Repo, err = repo_model.GetRepositoryByIDCtx(ctx, issue.RepoID)
|
issue.Repo, err = repo_model.GetRepositoryByIDCtx(ctx, issue.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getRepositoryByID [%d]: %v", issue.RepoID, err)
|
return fmt.Errorf("getRepositoryByID [%d]: %w", issue.RepoID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -234,7 +234,7 @@ func (issue *Issue) LoadLabels(ctx context.Context) (err error) {
|
||||||
if issue.Labels == nil {
|
if issue.Labels == nil {
|
||||||
issue.Labels, err = GetLabelsByIssueID(ctx, issue.ID)
|
issue.Labels, err = GetLabelsByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getLabelsByIssueID [%d]: %v", issue.ID, err)
|
return fmt.Errorf("getLabelsByIssueID [%d]: %w", issue.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -252,7 +252,7 @@ func (issue *Issue) loadPoster(ctx context.Context) (err error) {
|
||||||
issue.PosterID = -1
|
issue.PosterID = -1
|
||||||
issue.Poster = user_model.NewGhostUser()
|
issue.Poster = user_model.NewGhostUser()
|
||||||
if !user_model.IsErrUserNotExist(err) {
|
if !user_model.IsErrUserNotExist(err) {
|
||||||
return fmt.Errorf("getUserByID.(poster) [%d]: %v", issue.PosterID, err)
|
return fmt.Errorf("getUserByID.(poster) [%d]: %w", issue.PosterID, err)
|
||||||
}
|
}
|
||||||
err = nil
|
err = nil
|
||||||
return
|
return
|
||||||
|
@ -268,7 +268,7 @@ func (issue *Issue) loadPullRequest(ctx context.Context) (err error) {
|
||||||
if IsErrPullRequestNotExist(err) {
|
if IsErrPullRequestNotExist(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return fmt.Errorf("getPullRequestByIssueID [%d]: %v", issue.ID, err)
|
return fmt.Errorf("getPullRequestByIssueID [%d]: %w", issue.ID, err)
|
||||||
}
|
}
|
||||||
issue.PullRequest.Issue = issue
|
issue.PullRequest.Issue = issue
|
||||||
}
|
}
|
||||||
|
@ -361,7 +361,7 @@ func (issue *Issue) loadMilestone(ctx context.Context) (err error) {
|
||||||
if (issue.Milestone == nil || issue.Milestone.ID != issue.MilestoneID) && issue.MilestoneID > 0 {
|
if (issue.Milestone == nil || issue.Milestone.ID != issue.MilestoneID) && issue.MilestoneID > 0 {
|
||||||
issue.Milestone, err = GetMilestoneByRepoID(ctx, issue.RepoID, issue.MilestoneID)
|
issue.Milestone, err = GetMilestoneByRepoID(ctx, issue.RepoID, issue.MilestoneID)
|
||||||
if err != nil && !IsErrMilestoneNotExist(err) {
|
if err != nil && !IsErrMilestoneNotExist(err) {
|
||||||
return fmt.Errorf("getMilestoneByRepoID [repo_id: %d, milestone_id: %d]: %v", issue.RepoID, issue.MilestoneID, err)
|
return fmt.Errorf("getMilestoneByRepoID [repo_id: %d, milestone_id: %d]: %w", issue.RepoID, issue.MilestoneID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -401,7 +401,7 @@ func (issue *Issue) LoadAttributes(ctx context.Context) (err error) {
|
||||||
if issue.Attachments == nil {
|
if issue.Attachments == nil {
|
||||||
issue.Attachments, err = repo_model.GetAttachmentsByIssueID(ctx, issue.ID)
|
issue.Attachments, err = repo_model.GetAttachmentsByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAttachmentsByIssueID [%d]: %v", issue.ID, err)
|
return fmt.Errorf("getAttachmentsByIssueID [%d]: %w", issue.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -518,19 +518,19 @@ func (issue *Issue) getLabels(ctx context.Context) (err error) {
|
||||||
|
|
||||||
issue.Labels, err = GetLabelsByIssueID(ctx, issue.ID)
|
issue.Labels, err = GetLabelsByIssueID(ctx, issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getLabelsByIssueID: %v", err)
|
return fmt.Errorf("getLabelsByIssueID: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func clearIssueLabels(ctx context.Context, issue *Issue, doer *user_model.User) (err error) {
|
func clearIssueLabels(ctx context.Context, issue *Issue, doer *user_model.User) (err error) {
|
||||||
if err = issue.getLabels(ctx); err != nil {
|
if err = issue.getLabels(ctx); err != nil {
|
||||||
return fmt.Errorf("getLabels: %v", err)
|
return fmt.Errorf("getLabels: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range issue.Labels {
|
for i := range issue.Labels {
|
||||||
if err = deleteIssueLabel(ctx, issue, issue.Labels[i], doer); err != nil {
|
if err = deleteIssueLabel(ctx, issue, issue.Labels[i], doer); err != nil {
|
||||||
return fmt.Errorf("removeLabel: %v", err)
|
return fmt.Errorf("removeLabel: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,7 +565,7 @@ func ClearIssueLabels(issue *Issue, doer *user_model.User) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = committer.Commit(); err != nil {
|
if err = committer.Commit(); err != nil {
|
||||||
return fmt.Errorf("Commit: %v", err)
|
return fmt.Errorf("Commit: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -635,13 +635,13 @@ func ReplaceIssueLabels(issue *Issue, labels []*Label, doer *user_model.User) (e
|
||||||
|
|
||||||
if len(toAdd) > 0 {
|
if len(toAdd) > 0 {
|
||||||
if err = newIssueLabels(ctx, issue, toAdd, doer); err != nil {
|
if err = newIssueLabels(ctx, issue, toAdd, doer); err != nil {
|
||||||
return fmt.Errorf("addLabels: %v", err)
|
return fmt.Errorf("addLabels: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, l := range toRemove {
|
for _, l := range toRemove {
|
||||||
if err = deleteIssueLabel(ctx, issue, l, doer); err != nil {
|
if err = deleteIssueLabel(ctx, issue, l, doer); err != nil {
|
||||||
return fmt.Errorf("removeLabel: %v", err)
|
return fmt.Errorf("removeLabel: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,11 +766,11 @@ func ChangeIssueTitle(issue *Issue, doer *user_model.User, oldTitle string) (err
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if err = UpdateIssueCols(ctx, issue, "name"); err != nil {
|
if err = UpdateIssueCols(ctx, issue, "name"); err != nil {
|
||||||
return fmt.Errorf("updateIssueCols: %v", err)
|
return fmt.Errorf("updateIssueCols: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = issue.LoadRepo(ctx); err != nil {
|
if err = issue.LoadRepo(ctx); err != nil {
|
||||||
return fmt.Errorf("loadRepo: %v", err)
|
return fmt.Errorf("loadRepo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
opts := &CreateCommentOptions{
|
opts := &CreateCommentOptions{
|
||||||
|
@ -782,7 +782,7 @@ func ChangeIssueTitle(issue *Issue, doer *user_model.User, oldTitle string) (err
|
||||||
NewTitle: issue.Title,
|
NewTitle: issue.Title,
|
||||||
}
|
}
|
||||||
if _, err = CreateCommentCtx(ctx, opts); err != nil {
|
if _, err = CreateCommentCtx(ctx, opts); err != nil {
|
||||||
return fmt.Errorf("createComment: %v", err)
|
return fmt.Errorf("createComment: %w", err)
|
||||||
}
|
}
|
||||||
if err = issue.AddCrossReferences(ctx, doer, true); err != nil {
|
if err = issue.AddCrossReferences(ctx, doer, true); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -800,11 +800,11 @@ func ChangeIssueRef(issue *Issue, doer *user_model.User, oldRef string) (err err
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if err = UpdateIssueCols(ctx, issue, "ref"); err != nil {
|
if err = UpdateIssueCols(ctx, issue, "ref"); err != nil {
|
||||||
return fmt.Errorf("updateIssueCols: %v", err)
|
return fmt.Errorf("updateIssueCols: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = issue.LoadRepo(ctx); err != nil {
|
if err = issue.LoadRepo(ctx); err != nil {
|
||||||
return fmt.Errorf("loadRepo: %v", err)
|
return fmt.Errorf("loadRepo: %w", err)
|
||||||
}
|
}
|
||||||
oldRefFriendly := strings.TrimPrefix(oldRef, git.BranchPrefix)
|
oldRefFriendly := strings.TrimPrefix(oldRef, git.BranchPrefix)
|
||||||
newRefFriendly := strings.TrimPrefix(issue.Ref, git.BranchPrefix)
|
newRefFriendly := strings.TrimPrefix(issue.Ref, git.BranchPrefix)
|
||||||
|
@ -818,7 +818,7 @@ func ChangeIssueRef(issue *Issue, doer *user_model.User, oldRef string) (err err
|
||||||
NewRef: newRefFriendly,
|
NewRef: newRefFriendly,
|
||||||
}
|
}
|
||||||
if _, err = CreateCommentCtx(ctx, opts); err != nil {
|
if _, err = CreateCommentCtx(ctx, opts); err != nil {
|
||||||
return fmt.Errorf("createComment: %v", err)
|
return fmt.Errorf("createComment: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -850,12 +850,12 @@ func UpdateIssueAttachments(issueID int64, uuids []string) (err error) {
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, uuids)
|
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, uuids)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", uuids, err)
|
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", uuids, err)
|
||||||
}
|
}
|
||||||
for i := 0; i < len(attachments); i++ {
|
for i := 0; i < len(attachments); i++ {
|
||||||
attachments[i].IssueID = issueID
|
attachments[i].IssueID = issueID
|
||||||
if err := repo_model.UpdateAttachment(ctx, attachments[i]); err != nil {
|
if err := repo_model.UpdateAttachment(ctx, attachments[i]); err != nil {
|
||||||
return fmt.Errorf("update attachment [id: %d]: %v", attachments[i].ID, err)
|
return fmt.Errorf("update attachment [id: %d]: %w", attachments[i].ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -871,28 +871,28 @@ func ChangeIssueContent(issue *Issue, doer *user_model.User, content string) (er
|
||||||
|
|
||||||
hasContentHistory, err := HasIssueContentHistory(ctx, issue.ID, 0)
|
hasContentHistory, err := HasIssueContentHistory(ctx, issue.ID, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("HasIssueContentHistory: %v", err)
|
return fmt.Errorf("HasIssueContentHistory: %w", err)
|
||||||
}
|
}
|
||||||
if !hasContentHistory {
|
if !hasContentHistory {
|
||||||
if err = SaveIssueContentHistory(ctx, issue.PosterID, issue.ID, 0,
|
if err = SaveIssueContentHistory(ctx, issue.PosterID, issue.ID, 0,
|
||||||
issue.CreatedUnix, issue.Content, true); err != nil {
|
issue.CreatedUnix, issue.Content, true); err != nil {
|
||||||
return fmt.Errorf("SaveIssueContentHistory: %v", err)
|
return fmt.Errorf("SaveIssueContentHistory: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
issue.Content = content
|
issue.Content = content
|
||||||
|
|
||||||
if err = UpdateIssueCols(ctx, issue, "content"); err != nil {
|
if err = UpdateIssueCols(ctx, issue, "content"); err != nil {
|
||||||
return fmt.Errorf("UpdateIssueCols: %v", err)
|
return fmt.Errorf("UpdateIssueCols: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = SaveIssueContentHistory(ctx, doer.ID, issue.ID, 0,
|
if err = SaveIssueContentHistory(ctx, doer.ID, issue.ID, 0,
|
||||||
timeutil.TimeStampNow(), issue.Content, false); err != nil {
|
timeutil.TimeStampNow(), issue.Content, false); err != nil {
|
||||||
return fmt.Errorf("SaveIssueContentHistory: %v", err)
|
return fmt.Errorf("SaveIssueContentHistory: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = issue.AddCrossReferences(ctx, doer, true); err != nil {
|
if err = issue.AddCrossReferences(ctx, doer, true); err != nil {
|
||||||
return fmt.Errorf("addCrossReferences: %v", err)
|
return fmt.Errorf("addCrossReferences: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -969,7 +969,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
|
||||||
if opts.Issue.MilestoneID > 0 {
|
if opts.Issue.MilestoneID > 0 {
|
||||||
milestone, err := GetMilestoneByRepoID(ctx, opts.Issue.RepoID, opts.Issue.MilestoneID)
|
milestone, err := GetMilestoneByRepoID(ctx, opts.Issue.RepoID, opts.Issue.MilestoneID)
|
||||||
if err != nil && !IsErrMilestoneNotExist(err) {
|
if err != nil && !IsErrMilestoneNotExist(err) {
|
||||||
return fmt.Errorf("getMilestoneByID: %v", err)
|
return fmt.Errorf("getMilestoneByID: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assume milestone is invalid and drop silently.
|
// Assume milestone is invalid and drop silently.
|
||||||
|
@ -1023,7 +1023,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
|
||||||
// So we have to get all needed labels first.
|
// So we have to get all needed labels first.
|
||||||
labels := make([]*Label, 0, len(opts.LabelIDs))
|
labels := make([]*Label, 0, len(opts.LabelIDs))
|
||||||
if err = e.In("id", opts.LabelIDs).Find(&labels); err != nil {
|
if err = e.In("id", opts.LabelIDs).Find(&labels); err != nil {
|
||||||
return fmt.Errorf("find all labels [label_ids: %v]: %v", opts.LabelIDs, err)
|
return fmt.Errorf("find all labels [label_ids: %v]: %w", opts.LabelIDs, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = opts.Issue.loadPoster(ctx); err != nil {
|
if err = opts.Issue.loadPoster(ctx); err != nil {
|
||||||
|
@ -1037,7 +1037,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = newIssueLabel(ctx, opts.Issue, label, opts.Issue.Poster); err != nil {
|
if err = newIssueLabel(ctx, opts.Issue, label, opts.Issue.Poster); err != nil {
|
||||||
return fmt.Errorf("addLabel [id: %d]: %v", label.ID, err)
|
return fmt.Errorf("addLabel [id: %d]: %w", label.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1049,13 +1049,13 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
|
||||||
if len(opts.Attachments) > 0 {
|
if len(opts.Attachments) > 0 {
|
||||||
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments)
|
attachments, err := repo_model.GetAttachmentsByUUIDs(ctx, opts.Attachments)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %v", opts.Attachments, err)
|
return fmt.Errorf("getAttachmentsByUUIDs [uuids: %v]: %w", opts.Attachments, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := 0; i < len(attachments); i++ {
|
for i := 0; i < len(attachments); i++ {
|
||||||
attachments[i].IssueID = opts.Issue.ID
|
attachments[i].IssueID = opts.Issue.ID
|
||||||
if _, err = e.ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
if _, err = e.ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
||||||
return fmt.Errorf("update attachment [id: %d]: %v", attachments[i].ID, err)
|
return fmt.Errorf("update attachment [id: %d]: %w", attachments[i].ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1090,11 +1090,11 @@ func NewIssue(repo *repo_model.Repository, issue *Issue, labelIDs []int64, uuids
|
||||||
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) || IsErrNewIssueInsert(err) {
|
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) || IsErrNewIssueInsert(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return fmt.Errorf("newIssue: %v", err)
|
return fmt.Errorf("newIssue: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = committer.Commit(); err != nil {
|
if err = committer.Commit(); err != nil {
|
||||||
return fmt.Errorf("Commit: %v", err)
|
return fmt.Errorf("Commit: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -1614,7 +1614,7 @@ func UpdateIssueMentions(ctx context.Context, issueID int64, mentions []*user_mo
|
||||||
ids[i] = u.ID
|
ids[i] = u.ID
|
||||||
}
|
}
|
||||||
if err := UpdateIssueUsersByMentions(ctx, issueID, ids); err != nil {
|
if err := UpdateIssueUsersByMentions(ctx, issueID, ids); err != nil {
|
||||||
return fmt.Errorf("UpdateIssueUsersByMentions: %v", err)
|
return fmt.Errorf("UpdateIssueUsersByMentions: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -1992,7 +1992,7 @@ func UpdateIssueByAPI(issue *Issue, doer *user_model.User) (statusChangeComment
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if err := issue.LoadRepo(ctx); err != nil {
|
if err := issue.LoadRepo(ctx); err != nil {
|
||||||
return nil, false, fmt.Errorf("loadRepo: %v", err)
|
return nil, false, fmt.Errorf("loadRepo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reload the issue
|
// Reload the issue
|
||||||
|
@ -2020,7 +2020,7 @@ func UpdateIssueByAPI(issue *Issue, doer *user_model.User) (statusChangeComment
|
||||||
}
|
}
|
||||||
_, err := CreateCommentCtx(ctx, opts)
|
_, err := CreateCommentCtx(ctx, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, fmt.Errorf("createComment: %v", err)
|
return nil, false, fmt.Errorf("createComment: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2056,7 +2056,7 @@ func UpdateIssueDeadline(issue *Issue, deadlineUnix timeutil.TimeStamp, doer *us
|
||||||
|
|
||||||
// Make the comment
|
// Make the comment
|
||||||
if _, err = createDeadlineComment(ctx, doer, issue, deadlineUnix); err != nil {
|
if _, err = createDeadlineComment(ctx, doer, issue, deadlineUnix); err != nil {
|
||||||
return fmt.Errorf("createRemovedDueDateComment: %v", err)
|
return fmt.Errorf("createRemovedDueDateComment: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -2093,7 +2093,7 @@ func (issue *Issue) GetParticipantIDsByIssue(ctx context.Context) ([]int64, erro
|
||||||
Join("INNER", "`user`", "`user`.id = `comment`.poster_id").
|
Join("INNER", "`user`", "`user`.id = `comment`.poster_id").
|
||||||
Distinct("poster_id").
|
Distinct("poster_id").
|
||||||
Find(&userIDs); err != nil {
|
Find(&userIDs); err != nil {
|
||||||
return nil, fmt.Errorf("get poster IDs: %v", err)
|
return nil, fmt.Errorf("get poster IDs: %w", err)
|
||||||
}
|
}
|
||||||
if !util.IsInt64InSlice(issue.PosterID, userIDs) {
|
if !util.IsInt64InSlice(issue.PosterID, userIDs) {
|
||||||
return append(userIDs, issue.PosterID), nil
|
return append(userIDs, issue.PosterID), nil
|
||||||
|
@ -2151,10 +2151,10 @@ func FindAndUpdateIssueMentions(ctx context.Context, issue *Issue, doer *user_mo
|
||||||
rawMentions := references.FindAllMentionsMarkdown(content)
|
rawMentions := references.FindAllMentionsMarkdown(content)
|
||||||
mentions, err = ResolveIssueMentionsByVisibility(ctx, issue, doer, rawMentions)
|
mentions, err = ResolveIssueMentionsByVisibility(ctx, issue, doer, rawMentions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
|
return nil, fmt.Errorf("UpdateIssueMentions [%d]: %w", issue.ID, err)
|
||||||
}
|
}
|
||||||
if err = UpdateIssueMentions(ctx, issue.ID, mentions); err != nil {
|
if err = UpdateIssueMentions(ctx, issue.ID, mentions); err != nil {
|
||||||
return nil, fmt.Errorf("UpdateIssueMentions [%d]: %v", issue.ID, err)
|
return nil, fmt.Errorf("UpdateIssueMentions [%d]: %w", issue.ID, err)
|
||||||
}
|
}
|
||||||
return mentions, err
|
return mentions, err
|
||||||
}
|
}
|
||||||
|
@ -2206,7 +2206,7 @@ func ResolveIssueMentionsByVisibility(ctx context.Context, issue *Issue, doer *u
|
||||||
Where("team_repo.repo_id=?", issue.Repo.ID).
|
Where("team_repo.repo_id=?", issue.Repo.ID).
|
||||||
In("team.lower_name", mentionTeams).
|
In("team.lower_name", mentionTeams).
|
||||||
Find(&teams); err != nil {
|
Find(&teams); err != nil {
|
||||||
return nil, fmt.Errorf("find mentioned teams: %v", err)
|
return nil, fmt.Errorf("find mentioned teams: %w", err)
|
||||||
}
|
}
|
||||||
if len(teams) != 0 {
|
if len(teams) != 0 {
|
||||||
checked := make([]int64, 0, len(teams))
|
checked := make([]int64, 0, len(teams))
|
||||||
|
@ -2222,7 +2222,7 @@ func ResolveIssueMentionsByVisibility(ctx context.Context, issue *Issue, doer *u
|
||||||
}
|
}
|
||||||
has, err := db.GetEngine(ctx).Get(&organization.TeamUnit{OrgID: issue.Repo.Owner.ID, TeamID: team.ID, Type: unittype})
|
has, err := db.GetEngine(ctx).Get(&organization.TeamUnit{OrgID: issue.Repo.Owner.ID, TeamID: team.ID, Type: unittype})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("get team units (%d): %v", team.ID, err)
|
return nil, fmt.Errorf("get team units (%d): %w", team.ID, err)
|
||||||
}
|
}
|
||||||
if has {
|
if has {
|
||||||
checked = append(checked, team.ID)
|
checked = append(checked, team.ID)
|
||||||
|
@ -2237,7 +2237,7 @@ func ResolveIssueMentionsByVisibility(ctx context.Context, issue *Issue, doer *u
|
||||||
And("`user`.is_active = ?", true).
|
And("`user`.is_active = ?", true).
|
||||||
And("`user`.prohibit_login = ?", false).
|
And("`user`.prohibit_login = ?", false).
|
||||||
Find(&teamusers); err != nil {
|
Find(&teamusers); err != nil {
|
||||||
return nil, fmt.Errorf("get teams users: %v", err)
|
return nil, fmt.Errorf("get teams users: %w", err)
|
||||||
}
|
}
|
||||||
if len(teamusers) > 0 {
|
if len(teamusers) > 0 {
|
||||||
users = make([]*user_model.User, 0, len(teamusers))
|
users = make([]*user_model.User, 0, len(teamusers))
|
||||||
|
@ -2273,7 +2273,7 @@ func ResolveIssueMentionsByVisibility(ctx context.Context, issue *Issue, doer *u
|
||||||
And("`user`.prohibit_login = ?", false).
|
And("`user`.prohibit_login = ?", false).
|
||||||
In("`user`.lower_name", mentionUsers).
|
In("`user`.lower_name", mentionUsers).
|
||||||
Find(&unchecked); err != nil {
|
Find(&unchecked); err != nil {
|
||||||
return nil, fmt.Errorf("find mentioned users: %v", err)
|
return nil, fmt.Errorf("find mentioned users: %w", err)
|
||||||
}
|
}
|
||||||
for _, user := range unchecked {
|
for _, user := range unchecked {
|
||||||
if already := resolved[user.LowerName]; already || user.IsOrganization() {
|
if already := resolved[user.LowerName]; already || user.IsOrganization() {
|
||||||
|
@ -2282,7 +2282,7 @@ func ResolveIssueMentionsByVisibility(ctx context.Context, issue *Issue, doer *u
|
||||||
// Normal users must have read access to the referencing issue
|
// Normal users must have read access to the referencing issue
|
||||||
perm, err := access_model.GetUserRepoPermission(ctx, issue.Repo, user)
|
perm, err := access_model.GetUserRepoPermission(ctx, issue.Repo, user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetUserRepoPermission [%d]: %v", user.ID, err)
|
return nil, fmt.Errorf("GetUserRepoPermission [%d]: %w", user.ID, err)
|
||||||
}
|
}
|
||||||
if !perm.CanReadIssuesOrPulls(issue.IsPull) {
|
if !perm.CanReadIssuesOrPulls(issue.IsPull) {
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -51,7 +51,7 @@ func (issues IssueList) loadRepositories(ctx context.Context) ([]*repo_model.Rep
|
||||||
In("id", repoIDs[:limit]).
|
In("id", repoIDs[:limit]).
|
||||||
Find(&repoMaps)
|
Find(&repoMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("find repository: %v", err)
|
return nil, fmt.Errorf("find repository: %w", err)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
repoIDs = repoIDs[limit:]
|
repoIDs = repoIDs[limit:]
|
||||||
|
@ -161,7 +161,7 @@ func (issues IssueList) loadLabels(ctx context.Context) error {
|
||||||
err = rows.Scan(&labelIssue)
|
err = rows.Scan(&labelIssue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadLabels: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadLabels: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ func (issues IssueList) loadLabels(ctx context.Context) error {
|
||||||
// When there are no rows left and we try to close it.
|
// When there are no rows left and we try to close it.
|
||||||
// Since that is not relevant for us, we can safely ignore it.
|
// Since that is not relevant for us, we can safely ignore it.
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadLabels: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadLabels: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
issueIDs = issueIDs[limit:]
|
issueIDs = issueIDs[limit:]
|
||||||
|
@ -287,7 +287,7 @@ func (issues IssueList) loadAssignees(ctx context.Context) error {
|
||||||
err = rows.Scan(&assigneeIssue)
|
err = rows.Scan(&assigneeIssue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadAssignees: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadAssignees: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,7 @@ func (issues IssueList) loadAssignees(ctx context.Context) error {
|
||||||
assignees[assigneeIssue.IssueAssignee.IssueID] = append(assignees[assigneeIssue.IssueAssignee.IssueID], assigneeIssue.Assignee)
|
assignees[assigneeIssue.IssueAssignee.IssueID] = append(assignees[assigneeIssue.IssueAssignee.IssueID], assigneeIssue.Assignee)
|
||||||
}
|
}
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadAssignees: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadAssignees: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
issueIDs = issueIDs[limit:]
|
issueIDs = issueIDs[limit:]
|
||||||
|
@ -342,14 +342,14 @@ func (issues IssueList) loadPullRequests(ctx context.Context) error {
|
||||||
err = rows.Scan(&pr)
|
err = rows.Scan(&pr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadPullRequests: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadPullRequests: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
pullRequestMaps[pr.IssueID] = &pr
|
pullRequestMaps[pr.IssueID] = &pr
|
||||||
}
|
}
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadPullRequests: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadPullRequests: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
issuesIDs = issuesIDs[limit:]
|
issuesIDs = issuesIDs[limit:]
|
||||||
|
@ -387,14 +387,14 @@ func (issues IssueList) loadAttachments(ctx context.Context) (err error) {
|
||||||
err = rows.Scan(&attachment)
|
err = rows.Scan(&attachment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadAttachments: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadAttachments: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
attachments[attachment.IssueID] = append(attachments[attachment.IssueID], &attachment)
|
attachments[attachment.IssueID] = append(attachments[attachment.IssueID], &attachment)
|
||||||
}
|
}
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadAttachments: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadAttachments: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
issuesIDs = issuesIDs[limit:]
|
issuesIDs = issuesIDs[limit:]
|
||||||
|
@ -433,14 +433,14 @@ func (issues IssueList) loadComments(ctx context.Context, cond builder.Cond) (er
|
||||||
err = rows.Scan(&comment)
|
err = rows.Scan(&comment)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadComments: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadComments: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
comments[comment.IssueID] = append(comments[comment.IssueID], &comment)
|
comments[comment.IssueID] = append(comments[comment.IssueID], &comment)
|
||||||
}
|
}
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadComments: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadComments: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
issuesIDs = issuesIDs[limit:]
|
issuesIDs = issuesIDs[limit:]
|
||||||
|
@ -492,14 +492,14 @@ func (issues IssueList) loadTotalTrackedTimes(ctx context.Context) (err error) {
|
||||||
err = rows.Scan(&totalTime)
|
err = rows.Scan(&totalTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadTotalTrackedTimes: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadTotalTrackedTimes: Close: %w", err1)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
trackedTimes[totalTime.IssueID] = totalTime.Time
|
trackedTimes[totalTime.IssueID] = totalTime.Time
|
||||||
}
|
}
|
||||||
if err1 := rows.Close(); err1 != nil {
|
if err1 := rows.Close(); err1 != nil {
|
||||||
return fmt.Errorf("IssueList.loadTotalTrackedTimes: Close: %v", err1)
|
return fmt.Errorf("IssueList.loadTotalTrackedTimes: Close: %w", err1)
|
||||||
}
|
}
|
||||||
left -= limit
|
left -= limit
|
||||||
ids = ids[limit:]
|
ids = ids[limit:]
|
||||||
|
@ -514,35 +514,35 @@ func (issues IssueList) loadTotalTrackedTimes(ctx context.Context) (err error) {
|
||||||
// loadAttributes loads all attributes, expect for attachments and comments
|
// loadAttributes loads all attributes, expect for attachments and comments
|
||||||
func (issues IssueList) loadAttributes(ctx context.Context) error {
|
func (issues IssueList) loadAttributes(ctx context.Context) error {
|
||||||
if _, err := issues.loadRepositories(ctx); err != nil {
|
if _, err := issues.loadRepositories(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadRepositories: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadRepositories: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadPosters(ctx); err != nil {
|
if err := issues.loadPosters(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadPosters: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadPosters: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadLabels(ctx); err != nil {
|
if err := issues.loadLabels(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadLabels: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadLabels: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadMilestones(ctx); err != nil {
|
if err := issues.loadMilestones(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadMilestones: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadMilestones: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadProjects(ctx); err != nil {
|
if err := issues.loadProjects(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadProjects: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadProjects: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadAssignees(ctx); err != nil {
|
if err := issues.loadAssignees(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadAssignees: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadAssignees: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadPullRequests(ctx); err != nil {
|
if err := issues.loadPullRequests(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadPullRequests: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadPullRequests: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issues.loadTotalTrackedTimes(ctx); err != nil {
|
if err := issues.loadTotalTrackedTimes(ctx); err != nil {
|
||||||
return fmt.Errorf("issue.loadAttributes: loadTotalTrackedTimes: %v", err)
|
return fmt.Errorf("issue.loadAttributes: loadTotalTrackedTimes: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -29,7 +29,7 @@ func init() {
|
||||||
func NewIssueUsers(ctx context.Context, repo *repo_model.Repository, issue *Issue) error {
|
func NewIssueUsers(ctx context.Context, repo *repo_model.Repository, issue *Issue) error {
|
||||||
assignees, err := repo_model.GetRepoAssignees(ctx, repo)
|
assignees, err := repo_model.GetRepoAssignees(ctx, repo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getAssignees: %v", err)
|
return fmt.Errorf("getAssignees: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Poster can be anyone, append later if not one of assignees.
|
// Poster can be anyone, append later if not one of assignees.
|
||||||
|
|
|
@ -334,7 +334,7 @@ func (pr *PullRequest) ResolveCrossReferences(ctx context.Context) ([]*Comment,
|
||||||
In("ref_action", []references.XRefAction{references.XRefActionCloses, references.XRefActionReopens}).
|
In("ref_action", []references.XRefAction{references.XRefActionCloses, references.XRefActionReopens}).
|
||||||
OrderBy("id").
|
OrderBy("id").
|
||||||
Find(&unfiltered); err != nil {
|
Find(&unfiltered); err != nil {
|
||||||
return nil, fmt.Errorf("get reference: %v", err)
|
return nil, fmt.Errorf("get reference: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
refs := make([]*Comment, 0, len(unfiltered))
|
refs := make([]*Comment, 0, len(unfiltered))
|
||||||
|
|
|
@ -667,7 +667,7 @@ func newIssueLabels(ctx context.Context, issue *Issue, labels []*Label, doer *us
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = newIssueLabel(ctx, issue, label, doer); err != nil {
|
if err = newIssueLabel(ctx, issue, label, doer); err != nil {
|
||||||
return fmt.Errorf("newIssueLabel: %v", err)
|
return fmt.Errorf("newIssueLabel: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -228,7 +228,7 @@ func (pr *PullRequest) loadAttributes(ctx context.Context) (err error) {
|
||||||
pr.MergerID = -1
|
pr.MergerID = -1
|
||||||
pr.Merger = user_model.NewGhostUser()
|
pr.Merger = user_model.NewGhostUser()
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return fmt.Errorf("getUserByID [%d]: %v", pr.MergerID, err)
|
return fmt.Errorf("getUserByID [%d]: %w", pr.MergerID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ func (pr *PullRequest) LoadHeadRepoCtx(ctx context.Context) (err error) {
|
||||||
|
|
||||||
pr.HeadRepo, err = repo_model.GetRepositoryByIDCtx(ctx, pr.HeadRepoID)
|
pr.HeadRepo, err = repo_model.GetRepositoryByIDCtx(ctx, pr.HeadRepoID)
|
||||||
if err != nil && !repo_model.IsErrRepoNotExist(err) { // Head repo maybe deleted, but it should still work
|
if err != nil && !repo_model.IsErrRepoNotExist(err) { // Head repo maybe deleted, but it should still work
|
||||||
return fmt.Errorf("getRepositoryByID(head): %v", err)
|
return fmt.Errorf("getRepositoryByID(head): %w", err)
|
||||||
}
|
}
|
||||||
pr.isHeadRepoLoaded = true
|
pr.isHeadRepoLoaded = true
|
||||||
}
|
}
|
||||||
|
@ -290,7 +290,7 @@ func (pr *PullRequest) LoadBaseRepoCtx(ctx context.Context) (err error) {
|
||||||
|
|
||||||
pr.BaseRepo, err = repo_model.GetRepositoryByIDCtx(ctx, pr.BaseRepoID)
|
pr.BaseRepo, err = repo_model.GetRepositoryByIDCtx(ctx, pr.BaseRepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("repo_model.GetRepositoryByID(base): %v", err)
|
return fmt.Errorf("repo_model.GetRepositoryByID(base): %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -482,7 +482,7 @@ func (pr *PullRequest) SetMerged(ctx context.Context) (bool, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := changeIssueStatus(ctx, pr.Issue, pr.Merger, true, true); err != nil {
|
if _, err := changeIssueStatus(ctx, pr.Issue, pr.Merger, true, true); err != nil {
|
||||||
return false, fmt.Errorf("Issue.changeStatus: %v", err)
|
return false, fmt.Errorf("Issue.changeStatus: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset the conflicted files as there cannot be any if we're merged
|
// reset the conflicted files as there cannot be any if we're merged
|
||||||
|
@ -490,7 +490,7 @@ func (pr *PullRequest) SetMerged(ctx context.Context) (bool, error) {
|
||||||
|
|
||||||
// We need to save all of the data used to compute this merge as it may have already been changed by TestPatch. FIXME: need to set some state to prevent TestPatch from running whilst we are merging.
|
// We need to save all of the data used to compute this merge as it may have already been changed by TestPatch. FIXME: need to set some state to prevent TestPatch from running whilst we are merging.
|
||||||
if _, err := sess.Where("id = ?", pr.ID).Cols("has_merged, status, merge_base, merged_commit_id, merger_id, merged_unix, conflicted_files").Update(pr); err != nil {
|
if _, err := sess.Where("id = ?", pr.ID).Cols("has_merged, status, merge_base, merged_commit_id, merger_id, merged_unix, conflicted_files").Update(pr); err != nil {
|
||||||
return false, fmt.Errorf("Failed to update pr[%d]: %v", pr.ID, err)
|
return false, fmt.Errorf("Failed to update pr[%d]: %w", pr.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
|
@ -507,7 +507,7 @@ func NewPullRequest(outerCtx context.Context, repo *repo_model.Repository, issue
|
||||||
|
|
||||||
idx, err := db.GetNextResourceIndex(ctx, "issue_index", repo.ID)
|
idx, err := db.GetNextResourceIndex(ctx, "issue_index", repo.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("generate pull request index failed: %v", err)
|
return fmt.Errorf("generate pull request index failed: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
issue.Index = idx
|
issue.Index = idx
|
||||||
|
@ -522,18 +522,18 @@ func NewPullRequest(outerCtx context.Context, repo *repo_model.Repository, issue
|
||||||
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) || IsErrNewIssueInsert(err) {
|
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) || IsErrNewIssueInsert(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return fmt.Errorf("newIssue: %v", err)
|
return fmt.Errorf("newIssue: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pr.Index = issue.Index
|
pr.Index = issue.Index
|
||||||
pr.BaseRepo = repo
|
pr.BaseRepo = repo
|
||||||
pr.IssueID = issue.ID
|
pr.IssueID = issue.ID
|
||||||
if err = db.Insert(ctx, pr); err != nil {
|
if err = db.Insert(ctx, pr); err != nil {
|
||||||
return fmt.Errorf("insert pull repo: %v", err)
|
return fmt.Errorf("insert pull repo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = committer.Commit(); err != nil {
|
if err = committer.Commit(); err != nil {
|
||||||
return fmt.Errorf("Commit: %v", err)
|
return fmt.Errorf("Commit: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -168,7 +168,7 @@ func (prs PullRequestList) loadAttributes(ctx context.Context) error {
|
||||||
Where("id > 0").
|
Where("id > 0").
|
||||||
In("id", issueIDs).
|
In("id", issueIDs).
|
||||||
Find(&issues); err != nil {
|
Find(&issues); err != nil {
|
||||||
return fmt.Errorf("find issues: %v", err)
|
return fmt.Errorf("find issues: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
set := make(map[int64]*Issue)
|
set := make(map[int64]*Issue)
|
||||||
|
@ -205,7 +205,7 @@ func (prs PullRequestList) InvalidateCodeComments(ctx context.Context, doer *use
|
||||||
Where("type = ? and invalidated = ?", CommentTypeCode, false).
|
Where("type = ? and invalidated = ?", CommentTypeCode, false).
|
||||||
In("issue_id", issueIDs).
|
In("issue_id", issueIDs).
|
||||||
Find(&codeComments); err != nil {
|
Find(&codeComments); err != nil {
|
||||||
return fmt.Errorf("find code comments: %v", err)
|
return fmt.Errorf("find code comments: %w", err)
|
||||||
}
|
}
|
||||||
for _, comment := range codeComments {
|
for _, comment := range codeComments {
|
||||||
if err := comment.CheckInvalidation(repo, doer, branch); err != nil {
|
if err := comment.CheckInvalidation(repo, doer, branch); err != nil {
|
||||||
|
|
|
@ -355,7 +355,7 @@ func (list ReactionList) LoadUsers(ctx context.Context, repo *repo_model.Reposit
|
||||||
In("id", userIDs).
|
In("id", userIDs).
|
||||||
Find(&userMaps)
|
Find(&userMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("find user: %v", err)
|
return nil, fmt.Errorf("find user: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, reaction := range list {
|
for _, reaction := range list {
|
||||||
|
|
|
@ -790,10 +790,10 @@ func AddTeamReviewRequest(issue *Issue, reviewer *organization.Team, doer *user_
|
||||||
|
|
||||||
official, err := IsOfficialReviewerTeam(ctx, issue, reviewer)
|
official, err := IsOfficialReviewerTeam(ctx, issue, reviewer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("isOfficialReviewerTeam(): %v", err)
|
return nil, fmt.Errorf("isOfficialReviewerTeam(): %w", err)
|
||||||
} else if !official {
|
} else if !official {
|
||||||
if official, err = IsOfficialReviewer(ctx, issue, doer); err != nil {
|
if official, err = IsOfficialReviewer(ctx, issue, doer); err != nil {
|
||||||
return nil, fmt.Errorf("isOfficialReviewer(): %v", err)
|
return nil, fmt.Errorf("isOfficialReviewer(): %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -823,7 +823,7 @@ func AddTeamReviewRequest(issue *Issue, reviewer *organization.Team, doer *user_
|
||||||
ReviewID: review.ID,
|
ReviewID: review.ID,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("CreateCommentCtx(): %v", err)
|
return nil, fmt.Errorf("CreateCommentCtx(): %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return comment, committer.Commit()
|
return comment, committer.Commit()
|
||||||
|
@ -852,7 +852,7 @@ func RemoveTeamReviewRequest(issue *Issue, reviewer *organization.Team, doer *us
|
||||||
|
|
||||||
official, err := IsOfficialReviewerTeam(ctx, issue, reviewer)
|
official, err := IsOfficialReviewerTeam(ctx, issue, reviewer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("isOfficialReviewerTeam(): %v", err)
|
return nil, fmt.Errorf("isOfficialReviewerTeam(): %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if official {
|
if official {
|
||||||
|
@ -882,7 +882,7 @@ func RemoveTeamReviewRequest(issue *Issue, reviewer *organization.Team, doer *us
|
||||||
AssigneeTeamID: reviewer.ID, // Use AssigneeTeamID as reviewer team ID
|
AssigneeTeamID: reviewer.ID, // Use AssigneeTeamID as reviewer team ID
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("CreateCommentCtx(): %v", err)
|
return nil, fmt.Errorf("CreateCommentCtx(): %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return comment, committer.Commit()
|
return comment, committer.Commit()
|
||||||
|
|
|
@ -428,13 +428,13 @@ var migrations = []Migration{
|
||||||
// GetCurrentDBVersion returns the current db version
|
// GetCurrentDBVersion returns the current db version
|
||||||
func GetCurrentDBVersion(x *xorm.Engine) (int64, error) {
|
func GetCurrentDBVersion(x *xorm.Engine) (int64, error) {
|
||||||
if err := x.Sync(new(Version)); err != nil {
|
if err := x.Sync(new(Version)); err != nil {
|
||||||
return -1, fmt.Errorf("sync: %v", err)
|
return -1, fmt.Errorf("sync: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
currentVersion := &Version{ID: 1}
|
currentVersion := &Version{ID: 1}
|
||||||
has, err := x.Get(currentVersion)
|
has, err := x.Get(currentVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return -1, fmt.Errorf("get: %v", err)
|
return -1, fmt.Errorf("get: %w", err)
|
||||||
}
|
}
|
||||||
if !has {
|
if !has {
|
||||||
return -1, nil
|
return -1, nil
|
||||||
|
@ -476,13 +476,13 @@ func Migrate(x *xorm.Engine) error {
|
||||||
// Set a new clean the default mapper to GonicMapper as that is the default for Gitea.
|
// Set a new clean the default mapper to GonicMapper as that is the default for Gitea.
|
||||||
x.SetMapper(names.GonicMapper{})
|
x.SetMapper(names.GonicMapper{})
|
||||||
if err := x.Sync(new(Version)); err != nil {
|
if err := x.Sync(new(Version)); err != nil {
|
||||||
return fmt.Errorf("sync: %v", err)
|
return fmt.Errorf("sync: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
currentVersion := &Version{ID: 1}
|
currentVersion := &Version{ID: 1}
|
||||||
has, err := x.Get(currentVersion)
|
has, err := x.Get(currentVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get: %v", err)
|
return fmt.Errorf("get: %w", err)
|
||||||
} else if !has {
|
} else if !has {
|
||||||
// If the version record does not exist we think
|
// If the version record does not exist we think
|
||||||
// it is a fresh installation and we can skip all migrations.
|
// it is a fresh installation and we can skip all migrations.
|
||||||
|
@ -490,7 +490,7 @@ func Migrate(x *xorm.Engine) error {
|
||||||
currentVersion.Version = int64(minDBVersion + len(migrations))
|
currentVersion.Version = int64(minDBVersion + len(migrations))
|
||||||
|
|
||||||
if _, err = x.InsertOne(currentVersion); err != nil {
|
if _, err = x.InsertOne(currentVersion); err != nil {
|
||||||
return fmt.Errorf("insert: %v", err)
|
return fmt.Errorf("insert: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -519,7 +519,7 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
|
||||||
// Reset the mapper between each migration - migrations are not supposed to depend on each other
|
// Reset the mapper between each migration - migrations are not supposed to depend on each other
|
||||||
x.SetMapper(names.GonicMapper{})
|
x.SetMapper(names.GonicMapper{})
|
||||||
if err = m.Migrate(x); err != nil {
|
if err = m.Migrate(x); err != nil {
|
||||||
return fmt.Errorf("migration[%d]: %s failed: %v", v+int64(i), m.Description(), err)
|
return fmt.Errorf("migration[%d]: %s failed: %w", v+int64(i), m.Description(), err)
|
||||||
}
|
}
|
||||||
currentVersion.Version = v + int64(i) + 1
|
currentVersion.Version = v + int64(i) + 1
|
||||||
if _, err = x.ID(1).Update(currentVersion); err != nil {
|
if _, err = x.ID(1).Update(currentVersion); err != nil {
|
||||||
|
@ -918,7 +918,7 @@ func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
|
||||||
cols += "DROP COLUMN `" + col + "` CASCADE"
|
cols += "DROP COLUMN `" + col + "` CASCADE"
|
||||||
}
|
}
|
||||||
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
|
||||||
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
|
return fmt.Errorf("Drop table `%s` columns %v: %w", tableName, columnNames, err)
|
||||||
}
|
}
|
||||||
case setting.Database.UseMySQL:
|
case setting.Database.UseMySQL:
|
||||||
// Drop indexes on columns first
|
// Drop indexes on columns first
|
||||||
|
@ -946,7 +946,7 @@ func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
|
||||||
cols += "DROP COLUMN `" + col + "`"
|
cols += "DROP COLUMN `" + col + "`"
|
||||||
}
|
}
|
||||||
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` %s", tableName, cols)); err != nil {
|
||||||
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
|
return fmt.Errorf("Drop table `%s` columns %v: %w", tableName, columnNames, err)
|
||||||
}
|
}
|
||||||
case setting.Database.UseMSSQL:
|
case setting.Database.UseMSSQL:
|
||||||
cols := ""
|
cols := ""
|
||||||
|
@ -960,27 +960,27 @@ func dropTableColumns(sess *xorm.Session, tableName string, columnNames ...strin
|
||||||
tableName, strings.ReplaceAll(cols, "`", "'"))
|
tableName, strings.ReplaceAll(cols, "`", "'"))
|
||||||
constraints := make([]string, 0)
|
constraints := make([]string, 0)
|
||||||
if err := sess.SQL(sql).Find(&constraints); err != nil {
|
if err := sess.SQL(sql).Find(&constraints); err != nil {
|
||||||
return fmt.Errorf("Find constraints: %v", err)
|
return fmt.Errorf("Find constraints: %w", err)
|
||||||
}
|
}
|
||||||
for _, constraint := range constraints {
|
for _, constraint := range constraints {
|
||||||
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP CONSTRAINT `%s`", tableName, constraint)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP CONSTRAINT `%s`", tableName, constraint)); err != nil {
|
||||||
return fmt.Errorf("Drop table `%s` default constraint `%s`: %v", tableName, constraint, err)
|
return fmt.Errorf("Drop table `%s` default constraint `%s`: %w", tableName, constraint, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sql = fmt.Sprintf("SELECT DISTINCT Name FROM sys.indexes INNER JOIN sys.index_columns ON indexes.index_id = index_columns.index_id AND indexes.object_id = index_columns.object_id WHERE indexes.object_id = OBJECT_ID('%[1]s') AND index_columns.column_id IN (SELECT column_id FROM sys.columns WHERE LOWER(name) IN (%[2]s) AND object_id = OBJECT_ID('%[1]s'))",
|
sql = fmt.Sprintf("SELECT DISTINCT Name FROM sys.indexes INNER JOIN sys.index_columns ON indexes.index_id = index_columns.index_id AND indexes.object_id = index_columns.object_id WHERE indexes.object_id = OBJECT_ID('%[1]s') AND index_columns.column_id IN (SELECT column_id FROM sys.columns WHERE LOWER(name) IN (%[2]s) AND object_id = OBJECT_ID('%[1]s'))",
|
||||||
tableName, strings.ReplaceAll(cols, "`", "'"))
|
tableName, strings.ReplaceAll(cols, "`", "'"))
|
||||||
constraints = make([]string, 0)
|
constraints = make([]string, 0)
|
||||||
if err := sess.SQL(sql).Find(&constraints); err != nil {
|
if err := sess.SQL(sql).Find(&constraints); err != nil {
|
||||||
return fmt.Errorf("Find constraints: %v", err)
|
return fmt.Errorf("Find constraints: %w", err)
|
||||||
}
|
}
|
||||||
for _, constraint := range constraints {
|
for _, constraint := range constraints {
|
||||||
if _, err := sess.Exec(fmt.Sprintf("DROP INDEX `%[2]s` ON `%[1]s`", tableName, constraint)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("DROP INDEX `%[2]s` ON `%[1]s`", tableName, constraint)); err != nil {
|
||||||
return fmt.Errorf("Drop index `%[2]s` on `%[1]s`: %v", tableName, constraint, err)
|
return fmt.Errorf("Drop index `%s` on `%s`: %w", constraint, tableName, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP COLUMN %s", tableName, cols)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE `%s` DROP COLUMN %s", tableName, cols)); err != nil {
|
||||||
return fmt.Errorf("Drop table `%s` columns %v: %v", tableName, columnNames, err)
|
return fmt.Errorf("Drop table `%s` columns %v: %w", tableName, columnNames, err)
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.Fatal("Unrecognized DB")
|
log.Fatal("Unrecognized DB")
|
||||||
|
|
|
@ -17,7 +17,7 @@ func featureChangeTargetBranch(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Comment)); err != nil {
|
if err := x.Sync2(new(Comment)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,11 +45,11 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
|
||||||
migrated := 0
|
migrated := 0
|
||||||
for {
|
for {
|
||||||
if err := sess.Begin(); err != nil {
|
if err := sess.Begin(); err != nil {
|
||||||
return fmt.Errorf("session.Begin: %v", err)
|
return fmt.Errorf("session.Begin: %w", err)
|
||||||
}
|
}
|
||||||
users := make([]*User, 0, 50)
|
users := make([]*User, 0, 50)
|
||||||
if err := sess.Table("user").Asc("id").Limit(50, start).Find(&users); err != nil {
|
if err := sess.Table("user").Asc("id").Limit(50, start).Find(&users); err != nil {
|
||||||
return fmt.Errorf("select users from id [%d]: %v", start, err)
|
return fmt.Errorf("select users from id [%d]: %w", start, err)
|
||||||
}
|
}
|
||||||
if len(users) == 0 {
|
if len(users) == 0 {
|
||||||
_ = sess.Rollback()
|
_ = sess.Rollback()
|
||||||
|
@ -76,7 +76,7 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
|
||||||
newAvatar, err := copyOldAvatarToNewLocation(user.ID, oldAvatar)
|
newAvatar, err := copyOldAvatarToNewLocation(user.ID, oldAvatar)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = sess.Rollback()
|
_ = sess.Rollback()
|
||||||
return fmt.Errorf("[user: %s] %v", user.LowerName, err)
|
return fmt.Errorf("[user: %s] %w", user.LowerName, err)
|
||||||
} else if newAvatar == oldAvatar {
|
} else if newAvatar == oldAvatar {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
|
||||||
user.Avatar = newAvatar
|
user.Avatar = newAvatar
|
||||||
if _, err := sess.ID(user.ID).Cols("avatar").Update(user); err != nil {
|
if _, err := sess.ID(user.ID).Cols("avatar").Update(user); err != nil {
|
||||||
_ = sess.Rollback()
|
_ = sess.Rollback()
|
||||||
return fmt.Errorf("[user: %s] user table update: %v", user.LowerName, err)
|
return fmt.Errorf("[user: %s] user table update: %w", user.LowerName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteList.Add(filepath.Join(setting.Avatar.Path, oldAvatar))
|
deleteList.Add(filepath.Join(setting.Avatar.Path, oldAvatar))
|
||||||
|
@ -104,7 +104,7 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
if err := sess.Commit(); err != nil {
|
if err := sess.Commit(); err != nil {
|
||||||
_ = sess.Rollback()
|
_ = sess.Rollback()
|
||||||
return fmt.Errorf("commit session: %v", err)
|
return fmt.Errorf("commit session: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,13 +138,13 @@ func renameExistingUserAvatarName(x *xorm.Engine) error {
|
||||||
func copyOldAvatarToNewLocation(userID int64, oldAvatar string) (string, error) {
|
func copyOldAvatarToNewLocation(userID int64, oldAvatar string) (string, error) {
|
||||||
fr, err := os.Open(filepath.Join(setting.Avatar.Path, oldAvatar))
|
fr, err := os.Open(filepath.Join(setting.Avatar.Path, oldAvatar))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("os.Open: %v", err)
|
return "", fmt.Errorf("os.Open: %w", err)
|
||||||
}
|
}
|
||||||
defer fr.Close()
|
defer fr.Close()
|
||||||
|
|
||||||
data, err := io.ReadAll(fr)
|
data, err := io.ReadAll(fr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("io.ReadAll: %v", err)
|
return "", fmt.Errorf("io.ReadAll: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newAvatar := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", userID, md5.Sum(data)))))
|
newAvatar := fmt.Sprintf("%x", md5.Sum([]byte(fmt.Sprintf("%d-%x", userID, md5.Sum(data)))))
|
||||||
|
@ -153,7 +153,7 @@ func copyOldAvatarToNewLocation(userID int64, oldAvatar string) (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := os.WriteFile(filepath.Join(setting.Avatar.Path, newAvatar), data, 0o666); err != nil {
|
if err := os.WriteFile(filepath.Join(setting.Avatar.Path, newAvatar), data, 0o666); err != nil {
|
||||||
return "", fmt.Errorf("os.WriteFile: %v", err)
|
return "", fmt.Errorf("os.WriteFile: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return newAvatar, nil
|
return newAvatar, nil
|
||||||
|
|
|
@ -17,7 +17,7 @@ func addReviewMigrateInfo(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Review)); err != nil {
|
if err := x.Sync2(new(Review)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,10 @@ func addLanguageStats(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(LanguageStat)); err != nil {
|
if err := x.Sync2(new(LanguageStat)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
if err := x.Sync2(new(RepoIndexerStatus)); err != nil {
|
if err := x.Sync2(new(RepoIndexerStatus)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,7 +59,7 @@ func fixMergeBase(x *xorm.Engine) error {
|
||||||
for {
|
for {
|
||||||
prs := make([]PullRequest, 0, 50)
|
prs := make([]PullRequest, 0, 50)
|
||||||
if err := x.Limit(limit, start).Asc("id").Find(&prs); err != nil {
|
if err := x.Limit(limit, start).Asc("id").Find(&prs); err != nil {
|
||||||
return fmt.Errorf("Find: %v", err)
|
return fmt.Errorf("Find: %w", err)
|
||||||
}
|
}
|
||||||
if len(prs) == 0 {
|
if len(prs) == 0 {
|
||||||
break
|
break
|
||||||
|
@ -70,7 +70,7 @@ func fixMergeBase(x *xorm.Engine) error {
|
||||||
baseRepo := &Repository{ID: pr.BaseRepoID}
|
baseRepo := &Repository{ID: pr.BaseRepoID}
|
||||||
has, err := x.Table("repository").Get(baseRepo)
|
has, err := x.Table("repository").Get(baseRepo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to get base repo %d %v", pr.BaseRepoID, err)
|
return fmt.Errorf("Unable to get base repo %d %w", pr.BaseRepoID, err)
|
||||||
}
|
}
|
||||||
if !has {
|
if !has {
|
||||||
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addSystemWebhookColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Webhook)); err != nil {
|
if err := x.Sync2(new(Webhook)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addBranchProtectionProtectedFilesColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(ProtectedBranch)); err != nil {
|
if err := x.Sync2(new(ProtectedBranch)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ func refixMergeBase(x *xorm.Engine) error {
|
||||||
for {
|
for {
|
||||||
prs := make([]PullRequest, 0, 50)
|
prs := make([]PullRequest, 0, 50)
|
||||||
if err := x.Limit(limit, start).Asc("id").Where("has_merged = ?", true).Find(&prs); err != nil {
|
if err := x.Limit(limit, start).Asc("id").Where("has_merged = ?", true).Find(&prs); err != nil {
|
||||||
return fmt.Errorf("Find: %v", err)
|
return fmt.Errorf("Find: %w", err)
|
||||||
}
|
}
|
||||||
if len(prs) == 0 {
|
if len(prs) == 0 {
|
||||||
break
|
break
|
||||||
|
@ -69,7 +69,7 @@ func refixMergeBase(x *xorm.Engine) error {
|
||||||
baseRepo := &Repository{ID: pr.BaseRepoID}
|
baseRepo := &Repository{ID: pr.BaseRepoID}
|
||||||
has, err := x.Table("repository").Get(baseRepo)
|
has, err := x.Table("repository").Get(baseRepo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to get base repo %d %v", pr.BaseRepoID, err)
|
return fmt.Errorf("Unable to get base repo %d %w", pr.BaseRepoID, err)
|
||||||
}
|
}
|
||||||
if !has {
|
if !has {
|
||||||
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addOrgIDLabelColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Label)); err != nil {
|
if err := x.Sync2(new(Label)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ func addCommitDivergenceToPulls(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(PullRequest)); err != nil {
|
if err := x.Sync2(new(PullRequest)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
last := 0
|
last := 0
|
||||||
|
@ -80,7 +80,7 @@ func addCommitDivergenceToPulls(x *xorm.Engine) error {
|
||||||
baseRepo := &Repository{ID: pr.BaseRepoID}
|
baseRepo := &Repository{ID: pr.BaseRepoID}
|
||||||
has, err := x.Table("repository").Get(baseRepo)
|
has, err := x.Table("repository").Get(baseRepo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Unable to get base repo %d %v", pr.BaseRepoID, err)
|
return fmt.Errorf("Unable to get base repo %d %w", pr.BaseRepoID, err)
|
||||||
}
|
}
|
||||||
if !has {
|
if !has {
|
||||||
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
log.Error("Missing base repo with id %d for PR ID %d", pr.BaseRepoID, pr.ID)
|
||||||
|
@ -101,7 +101,7 @@ func addCommitDivergenceToPulls(x *xorm.Engine) error {
|
||||||
pr.CommitsBehind = divergence.Behind
|
pr.CommitsBehind = divergence.Behind
|
||||||
|
|
||||||
if _, err = sess.ID(pr.ID).Cols("commits_ahead", "commits_behind").Update(pr); err != nil {
|
if _, err = sess.ID(pr.ID).Cols("commits_ahead", "commits_behind").Update(pr); err != nil {
|
||||||
return fmt.Errorf("Update Cols: %v", err)
|
return fmt.Errorf("Update Cols: %w", err)
|
||||||
}
|
}
|
||||||
migrated++
|
migrated++
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addResolveDoerIDCommentColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Comment)); err != nil {
|
if err := x.Sync2(new(Comment)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ func fixLanguageStatsToSaveSize(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(LanguageStat)); err != nil {
|
if err := x.Sync2(new(LanguageStat)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
x.Delete(&RepoIndexerStatus{IndexerType: RepoIndexerTypeStats})
|
x.Delete(&RepoIndexerStatus{IndexerType: RepoIndexerTypeStats})
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addKeepActivityPrivateUserColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(User)); err != nil {
|
if err := x.Sync2(new(User)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,16 +53,16 @@ func increaseLanguageField(x *xorm.Engine) error {
|
||||||
if err := sess.SQL(`SELECT i.name AS Name
|
if err := sess.SQL(`SELECT i.name AS Name
|
||||||
FROM sys.indexes i INNER JOIN sys.index_columns ic
|
FROM sys.indexes i INNER JOIN sys.index_columns ic
|
||||||
ON i.index_id = ic.index_id AND i.object_id = ic.object_id
|
ON i.index_id = ic.index_id AND i.object_id = ic.object_id
|
||||||
INNER JOIN sys.tables AS t
|
INNER JOIN sys.tables AS t
|
||||||
ON t.object_id = i.object_id
|
ON t.object_id = i.object_id
|
||||||
INNER JOIN sys.columns c
|
INNER JOIN sys.columns c
|
||||||
ON t.object_id = c.object_id AND ic.column_id = c.column_id
|
ON t.object_id = c.object_id AND ic.column_id = c.column_id
|
||||||
WHERE t.name = 'language_stat' AND c.name = 'language'`).Find(&constraints); err != nil {
|
WHERE t.name = 'language_stat' AND c.name = 'language'`).Find(&constraints); err != nil {
|
||||||
return fmt.Errorf("Find constraints: %v", err)
|
return fmt.Errorf("Find constraints: %w", err)
|
||||||
}
|
}
|
||||||
for _, constraint := range constraints {
|
for _, constraint := range constraints {
|
||||||
if _, err := sess.Exec(fmt.Sprintf("DROP INDEX [%s] ON `language_stat`", constraint)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("DROP INDEX [%s] ON `language_stat`", constraint)); err != nil {
|
||||||
return fmt.Errorf("Drop table `language_stat` constraint `%s`: %v", constraint, err)
|
return fmt.Errorf("Drop table `language_stat` constraint `%s`: %w", constraint, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat ALTER COLUMN language %s", sqlType)); err != nil {
|
if _, err := sess.Exec(fmt.Sprintf("ALTER TABLE language_stat ALTER COLUMN language %s", sqlType)); err != nil {
|
||||||
|
|
|
@ -19,7 +19,7 @@ func addCreatedAndUpdatedToMilestones(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Milestone)); err != nil {
|
if err := x.Sync2(new(Milestone)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addChangedProtectedFilesPullRequestColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(PullRequest)); err != nil {
|
if err := x.Sync2(new(PullRequest)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,7 +123,7 @@ func fixPublisherIDforTagReleases(x *xorm.Engine) error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Error("Error whilst getting commit for Tag: %s in [%d]%s/%s. Error: %v", release.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
log.Error("Error whilst getting commit for Tag: %s in [%d]%s/%s. Error: %v", release.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
return fmt.Errorf("GetTagCommit: %v", err)
|
return fmt.Errorf("GetTagCommit: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if commit.Author.Email == "" {
|
if commit.Author.Email == "" {
|
||||||
|
@ -135,7 +135,7 @@ func fixPublisherIDforTagReleases(x *xorm.Engine) error {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Error("Error whilst getting commit for Tag: %s in [%d]%s/%s. Error: %v", release.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
log.Error("Error whilst getting commit for Tag: %s in [%d]%s/%s. Error: %v", release.TagName, repo.ID, repo.OwnerName, repo.Name, err)
|
||||||
return fmt.Errorf("GetCommit: %v", err)
|
return fmt.Errorf("GetCommit: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ func (grant *OAuth2Grant) TableName() string {
|
||||||
|
|
||||||
func addScopeAndNonceColumnsToOAuth2Grant(x *xorm.Engine) error {
|
func addScopeAndNonceColumnsToOAuth2Grant(x *xorm.Engine) error {
|
||||||
if err := x.Sync2(new(OAuth2Grant)); err != nil {
|
if err := x.Sync2(new(OAuth2Grant)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func addUserRedirect(x *xorm.Engine) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(UserRedirect)); err != nil {
|
if err := x.Sync2(new(UserRedirect)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addDismissedReviewColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Review)); err != nil {
|
if err := x.Sync2(new(Review)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addSortingColToProjectBoard(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(ProjectBoard)); err != nil {
|
if err := x.Sync2(new(ProjectBoard)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addTimeIDCommentColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Comment)); err != nil {
|
if err := x.Sync2(new(Comment)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ func addRepoTransfer(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(RepoTransfer)); err != nil {
|
if err := sess.Sync2(new(RepoTransfer)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
|
|
|
@ -25,7 +25,7 @@ func deleteOrphanedIssueLabels(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(IssueLabel)); err != nil {
|
if err := sess.Sync2(new(IssueLabel)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := sess.Exec(`DELETE FROM issue_label WHERE issue_label.id IN (
|
if _, err := sess.Exec(`DELETE FROM issue_label WHERE issue_label.id IN (
|
||||||
|
|
|
@ -32,7 +32,7 @@ func createPushMirrorTable(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(PushMirror)); err != nil {
|
if err := sess.Sync2(new(PushMirror)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
|
|
|
@ -43,7 +43,7 @@ func renameTaskErrorsToMessage(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(Task)); err != nil {
|
if err := sess.Sync2(new(Task)); err != nil {
|
||||||
return fmt.Errorf("error on Sync2: %v", err)
|
return fmt.Errorf("error on Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if messageExist {
|
if messageExist {
|
||||||
|
|
|
@ -18,7 +18,7 @@ func addAgitFlowPullRequest(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(PullRequest)); err != nil {
|
if err := x.Sync2(new(PullRequest)); err != nil {
|
||||||
return fmt.Errorf("sync2: %v", err)
|
return fmt.Errorf("sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addBranchProtectionUnprotectedFilesColumn(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(ProtectedBranch)); err != nil {
|
if err := x.Sync2(new(ProtectedBranch)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ func addTableCommitStatusIndex(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(CommitStatusIndex)); err != nil {
|
if err := x.Sync2(new(CommitStatusIndex)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
|
|
|
@ -16,7 +16,7 @@ func addColorColToProjectBoard(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(ProjectBoard)); err != nil {
|
if err := x.Sync2(new(ProjectBoard)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ func addTableIssueContentHistory(x *xorm.Engine) error {
|
||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
defer sess.Close()
|
defer sess.Close()
|
||||||
if err := sess.Sync2(new(IssueContentHistory)); err != nil {
|
if err := sess.Sync2(new(IssueContentHistory)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ func addTableAppState(x *xorm.Engine) error {
|
||||||
Content string `xorm:"LONGTEXT"`
|
Content string `xorm:"LONGTEXT"`
|
||||||
}
|
}
|
||||||
if err := x.Sync2(new(AppState)); err != nil {
|
if err := x.Sync2(new(AppState)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ func createUserSettingsTable(x *xorm.Engine) error {
|
||||||
SettingValue string `xorm:"text"`
|
SettingValue string `xorm:"text"`
|
||||||
}
|
}
|
||||||
if err := x.Sync2(new(UserSetting)); err != nil {
|
if err := x.Sync2(new(UserSetting)); err != nil {
|
||||||
return fmt.Errorf("sync2: %v", err)
|
return fmt.Errorf("sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ func addAuthorizeColForTeamUnit(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(TeamUnit)); err != nil {
|
if err := x.Sync2(new(TeamUnit)); err != nil {
|
||||||
return fmt.Errorf("sync2: %v", err)
|
return fmt.Errorf("sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// migrate old permission
|
// migrate old permission
|
||||||
|
|
|
@ -144,7 +144,7 @@ func remigrateU2FCredentials(x *xorm.Engine) error {
|
||||||
if !has {
|
if !has {
|
||||||
has, err := sess.Where("`lower_name`=?", remigrated.LowerName).And("`user_id`=?", remigrated.UserID).Exist(new(webauthnCredential))
|
has, err := sess.Where("`lower_name`=?", remigrated.LowerName).And("`user_id`=?", remigrated.UserID).Exist(new(webauthnCredential))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to check webauthn_credential[lower_name: %s, user_id:%v]. Error: %w", remigrated.LowerName, remigrated.UserID, err)
|
return fmt.Errorf("unable to check webauthn_credential[lower_name: %s, user_id: %d]. Error: %w", remigrated.LowerName, remigrated.UserID, err)
|
||||||
}
|
}
|
||||||
if !has {
|
if !has {
|
||||||
_, err = sess.Insert(remigrated)
|
_, err = sess.Insert(remigrated)
|
||||||
|
|
|
@ -20,7 +20,7 @@ func createForeignReferenceTable(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(ForeignReference)); err != nil {
|
if err := x.Sync2(new(ForeignReference)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ func renameCredentialIDBytes(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(webauthnCredential)); err != nil {
|
if err := sess.Sync2(new(webauthnCredential)); err != nil {
|
||||||
return fmt.Errorf("error on Sync2: %v", err)
|
return fmt.Errorf("error on Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if credentialIDExist {
|
if credentialIDExist {
|
||||||
|
|
|
@ -45,7 +45,7 @@ func insertSettingsIfNotExist(x *xorm.Engine, sysSettings []*SystemSetting) erro
|
||||||
|
|
||||||
func createSystemSettingsTable(x *xorm.Engine) error {
|
func createSystemSettingsTable(x *xorm.Engine) error {
|
||||||
if err := x.Sync2(new(SystemSetting)); err != nil {
|
if err := x.Sync2(new(SystemSetting)); err != nil {
|
||||||
return fmt.Errorf("sync2: %v", err)
|
return fmt.Errorf("sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// migrate xx to database
|
// migrate xx to database
|
||||||
|
|
|
@ -38,7 +38,7 @@ func addIssueDependencies(x *xorm.Engine) (err error) {
|
||||||
)
|
)
|
||||||
|
|
||||||
if err = x.Sync(new(IssueDependency)); err != nil {
|
if err = x.Sync(new(IssueDependency)); err != nil {
|
||||||
return fmt.Errorf("Error creating issue_dependency_table column definition: %v", err)
|
return fmt.Errorf("Error creating issue_dependency_table column definition: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update Comment definition
|
// Update Comment definition
|
||||||
|
@ -76,7 +76,7 @@ func addIssueDependencies(x *xorm.Engine) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = x.Sync(new(Comment)); err != nil {
|
if err = x.Sync(new(Comment)); err != nil {
|
||||||
return fmt.Errorf("Error updating issue_comment table column definition: %v", err)
|
return fmt.Errorf("Error updating issue_comment table column definition: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RepoUnit describes all units of a repository
|
// RepoUnit describes all units of a repository
|
||||||
|
@ -93,7 +93,7 @@ func addIssueDependencies(x *xorm.Engine) (err error) {
|
||||||
units := make([]*RepoUnit, 0, 100)
|
units := make([]*RepoUnit, 0, 100)
|
||||||
err = x.Where("`type` = ?", v16UnitTypeIssues).Find(&units)
|
err = x.Where("`type` = ?", v16UnitTypeIssues).Find(&units)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Query repo units: %v", err)
|
return fmt.Errorf("Query repo units: %w", err)
|
||||||
}
|
}
|
||||||
for _, unit := range units {
|
for _, unit := range units {
|
||||||
if unit.Config == nil {
|
if unit.Config == nil {
|
||||||
|
|
|
@ -30,7 +30,7 @@ func addScratchHash(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(TwoFactor)); err != nil {
|
if err := x.Sync2(new(TwoFactor)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
|
@ -61,7 +61,7 @@ func addScratchHash(x *xorm.Engine) error {
|
||||||
tfa.ScratchHash = hashToken(tfa.ScratchToken, salt)
|
tfa.ScratchHash = hashToken(tfa.ScratchToken, salt)
|
||||||
|
|
||||||
if _, err := sess.ID(tfa.ID).Cols("scratch_salt, scratch_hash").Update(tfa); err != nil {
|
if _, err := sess.ID(tfa.ID).Cols("scratch_salt, scratch_hash").Update(tfa); err != nil {
|
||||||
return fmt.Errorf("couldn't add in scratch_hash and scratch_salt: %v", err)
|
return fmt.Errorf("couldn't add in scratch_hash and scratch_salt: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ func addReview(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := x.Sync2(new(Review)); err != nil {
|
if err := x.Sync2(new(Review)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ func addPullRequestRebaseWithMerge(x *xorm.Engine) error {
|
||||||
// Updating existing issue units
|
// Updating existing issue units
|
||||||
units := make([]*RepoUnit, 0, 100)
|
units := make([]*RepoUnit, 0, 100)
|
||||||
if err := sess.Where("`type` = ?", v16UnitTypePRs).Find(&units); err != nil {
|
if err := sess.Where("`type` = ?", v16UnitTypePRs).Find(&units); err != nil {
|
||||||
return fmt.Errorf("Query repo units: %v", err)
|
return fmt.Errorf("Query repo units: %w", err)
|
||||||
}
|
}
|
||||||
for _, unit := range units {
|
for _, unit := range units {
|
||||||
if unit.Config == nil {
|
if unit.Config == nil {
|
||||||
|
|
|
@ -24,7 +24,7 @@ func changeU2FCounterType(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error changing u2f_registration counter column type: %v", err)
|
return fmt.Errorf("Error changing u2f_registration counter column type: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -41,7 +41,7 @@ func hashAppToken(x *xorm.Engine) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Sync2(new(AccessToken)); err != nil {
|
if err := sess.Sync2(new(AccessToken)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sess.Commit(); err != nil {
|
if err := sess.Commit(); err != nil {
|
||||||
|
@ -79,7 +79,7 @@ func hashAppToken(x *xorm.Engine) error {
|
||||||
token.Sha1 = "" // ensure to blank out column in case drop column doesn't work
|
token.Sha1 = "" // ensure to blank out column in case drop column doesn't work
|
||||||
|
|
||||||
if _, err := sess.ID(token.ID).Cols("token_hash, token_salt, token_last_eight, sha1").Update(token); err != nil {
|
if _, err := sess.ID(token.ID).Cols("token_hash, token_salt, token_last_eight, sha1").Update(token); err != nil {
|
||||||
return fmt.Errorf("couldn't add in sha1, token_hash, token_salt and token_last_eight: %v", err)
|
return fmt.Errorf("couldn't add in sha1, token_hash, token_salt and token_last_eight: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ func resyncHashAppTokenWithUniqueHash(x *xorm.Engine) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := sess.Sync2(new(AccessToken)); err != nil {
|
if err := sess.Sync2(new(AccessToken)); err != nil {
|
||||||
return fmt.Errorf("Sync2: %v", err)
|
return fmt.Errorf("Sync2: %w", err)
|
||||||
}
|
}
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,14 +25,14 @@ func removeOrgUser(ctx context.Context, orgID, userID int64) error {
|
||||||
And("org_id=?", orgID).
|
And("org_id=?", orgID).
|
||||||
Get(ou)
|
Get(ou)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get org-user: %v", err)
|
return fmt.Errorf("get org-user: %w", err)
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
org, err := organization.GetOrgByID(ctx, orgID)
|
org, err := organization.GetOrgByID(ctx, orgID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetUserByID [%d]: %v", orgID, err)
|
return fmt.Errorf("GetUserByID [%d]: %w", orgID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the user to delete is the last member in owner team.
|
// Check if the user to delete is the last member in owner team.
|
||||||
|
@ -62,11 +62,11 @@ func removeOrgUser(ctx context.Context, orgID, userID int64) error {
|
||||||
// Delete all repository accesses and unwatch them.
|
// Delete all repository accesses and unwatch them.
|
||||||
env, err := organization.AccessibleReposEnv(ctx, org, userID)
|
env, err := organization.AccessibleReposEnv(ctx, org, userID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("AccessibleReposEnv: %v", err)
|
return fmt.Errorf("AccessibleReposEnv: %w", err)
|
||||||
}
|
}
|
||||||
repoIDs, err := env.RepoIDs(1, org.NumRepos)
|
repoIDs, err := env.RepoIDs(1, org.NumRepos)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetUserRepositories [%d]: %v", userID, err)
|
return fmt.Errorf("GetUserRepositories [%d]: %w", userID, err)
|
||||||
}
|
}
|
||||||
for _, repoID := range repoIDs {
|
for _, repoID := range repoIDs {
|
||||||
if err = repo_model.WatchRepo(ctx, userID, repoID, false); err != nil {
|
if err = repo_model.WatchRepo(ctx, userID, repoID, false); err != nil {
|
||||||
|
|
|
@ -31,23 +31,23 @@ func AddRepository(ctx context.Context, t *organization.Team, repo *repo_model.R
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = organization.IncrTeamRepoNum(ctx, t.ID); err != nil {
|
if err = organization.IncrTeamRepoNum(ctx, t.ID); err != nil {
|
||||||
return fmt.Errorf("update team: %v", err)
|
return fmt.Errorf("update team: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
t.NumRepos++
|
t.NumRepos++
|
||||||
|
|
||||||
if err = access_model.RecalculateTeamAccesses(ctx, repo, 0); err != nil {
|
if err = access_model.RecalculateTeamAccesses(ctx, repo, 0); err != nil {
|
||||||
return fmt.Errorf("recalculateAccesses: %v", err)
|
return fmt.Errorf("recalculateAccesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make all team members watch this repo if enabled in global settings
|
// Make all team members watch this repo if enabled in global settings
|
||||||
if setting.Service.AutoWatchNewRepos {
|
if setting.Service.AutoWatchNewRepos {
|
||||||
if err = t.GetMembersCtx(ctx); err != nil {
|
if err = t.GetMembersCtx(ctx); err != nil {
|
||||||
return fmt.Errorf("getMembers: %v", err)
|
return fmt.Errorf("getMembers: %w", err)
|
||||||
}
|
}
|
||||||
for _, u := range t.Members {
|
for _, u := range t.Members {
|
||||||
if err = repo_model.WatchRepo(ctx, u.ID, repo.ID, true); err != nil {
|
if err = repo_model.WatchRepo(ctx, u.ID, repo.ID, true); err != nil {
|
||||||
return fmt.Errorf("watchRepo: %v", err)
|
return fmt.Errorf("watchRepo: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,13 +60,13 @@ func AddRepository(ctx context.Context, t *organization.Team, repo *repo_model.R
|
||||||
func addAllRepositories(ctx context.Context, t *organization.Team) error {
|
func addAllRepositories(ctx context.Context, t *organization.Team) error {
|
||||||
orgRepos, err := organization.GetOrgRepositories(ctx, t.OrgID)
|
orgRepos, err := organization.GetOrgRepositories(ctx, t.OrgID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get org repos: %v", err)
|
return fmt.Errorf("get org repos: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, repo := range orgRepos {
|
for _, repo := range orgRepos {
|
||||||
if !organization.HasTeamRepo(ctx, t.OrgID, t.ID, repo.ID) {
|
if !organization.HasTeamRepo(ctx, t.OrgID, t.ID, repo.ID) {
|
||||||
if err := AddRepository(ctx, t, repo); err != nil {
|
if err := AddRepository(ctx, t, repo); err != nil {
|
||||||
return fmt.Errorf("AddRepository: %v", err)
|
return fmt.Errorf("AddRepository: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -180,7 +180,7 @@ func removeRepository(ctx context.Context, t *organization.Team, repo *repo_mode
|
||||||
|
|
||||||
teamUsers, err := organization.GetTeamUsersByTeamID(ctx, t.ID)
|
teamUsers, err := organization.GetTeamUsersByTeamID(ctx, t.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getTeamUsersByTeamID: %v", err)
|
return fmt.Errorf("getTeamUsersByTeamID: %w", err)
|
||||||
}
|
}
|
||||||
for _, teamUser := range teamUsers {
|
for _, teamUser := range teamUsers {
|
||||||
has, err := access_model.HasAccess(ctx, teamUser.UID, repo)
|
has, err := access_model.HasAccess(ctx, teamUser.UID, repo)
|
||||||
|
@ -287,7 +287,7 @@ func NewTeam(t *organization.Team) (err error) {
|
||||||
if t.IncludesAllRepositories {
|
if t.IncludesAllRepositories {
|
||||||
err = addAllRepositories(ctx, t)
|
err = addAllRepositories(ctx, t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("addAllRepositories: %v", err)
|
return fmt.Errorf("addAllRepositories: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ func UpdateTeam(t *organization.Team, authChanged, includeAllChanged bool) (err
|
||||||
|
|
||||||
if _, err = sess.ID(t.ID).Cols("name", "lower_name", "description",
|
if _, err = sess.ID(t.ID).Cols("name", "lower_name", "description",
|
||||||
"can_create_org_repo", "authorize", "includes_all_repositories").Update(t); err != nil {
|
"can_create_org_repo", "authorize", "includes_all_repositories").Update(t); err != nil {
|
||||||
return fmt.Errorf("update: %v", err)
|
return fmt.Errorf("update: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update units for team
|
// update units for team
|
||||||
|
@ -351,12 +351,12 @@ func UpdateTeam(t *organization.Team, authChanged, includeAllChanged bool) (err
|
||||||
// Update access for team members if needed.
|
// Update access for team members if needed.
|
||||||
if authChanged {
|
if authChanged {
|
||||||
if err = t.GetRepositoriesCtx(ctx); err != nil {
|
if err = t.GetRepositoriesCtx(ctx); err != nil {
|
||||||
return fmt.Errorf("getRepositories: %v", err)
|
return fmt.Errorf("getRepositories: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, repo := range t.Repos {
|
for _, repo := range t.Repos {
|
||||||
if err = access_model.RecalculateTeamAccesses(ctx, repo, 0); err != nil {
|
if err = access_model.RecalculateTeamAccesses(ctx, repo, 0); err != nil {
|
||||||
return fmt.Errorf("recalculateTeamAccesses: %v", err)
|
return fmt.Errorf("recalculateTeamAccesses: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -365,7 +365,7 @@ func UpdateTeam(t *organization.Team, authChanged, includeAllChanged bool) (err
|
||||||
if includeAllChanged && t.IncludesAllRepositories {
|
if includeAllChanged && t.IncludesAllRepositories {
|
||||||
err = addAllRepositories(ctx, t)
|
err = addAllRepositories(ctx, t)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("addAllRepositories: %v", err)
|
return fmt.Errorf("addAllRepositories: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +397,7 @@ func DeleteTeam(t *organization.Team) error {
|
||||||
builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})).
|
builder.Select("id").From("repository").Where(builder.Eq{"owner_id": t.OrgID})).
|
||||||
Find(&protections)
|
Find(&protections)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("findProtectedBranches: %v", err)
|
return fmt.Errorf("findProtectedBranches: %w", err)
|
||||||
}
|
}
|
||||||
for _, p := range protections {
|
for _, p := range protections {
|
||||||
var matched1, matched2, matched3 bool
|
var matched1, matched2, matched3 bool
|
||||||
|
@ -419,7 +419,7 @@ func DeleteTeam(t *organization.Team) error {
|
||||||
"merge_whitelist_team_i_ds",
|
"merge_whitelist_team_i_ds",
|
||||||
"approvals_whitelist_team_i_ds",
|
"approvals_whitelist_team_i_ds",
|
||||||
).Update(p); err != nil {
|
).Update(p); err != nil {
|
||||||
return fmt.Errorf("updateProtectedBranches: %v", err)
|
return fmt.Errorf("updateProtectedBranches: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -496,14 +496,14 @@ func AddTeamMember(team *organization.Team, userID int64) error {
|
||||||
And("mode < ?", team.AccessMode).
|
And("mode < ?", team.AccessMode).
|
||||||
SetExpr("mode", team.AccessMode).
|
SetExpr("mode", team.AccessMode).
|
||||||
Update(new(access_model.Access)); err != nil {
|
Update(new(access_model.Access)); err != nil {
|
||||||
return fmt.Errorf("update user accesses: %v", err)
|
return fmt.Errorf("update user accesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// for not exist access
|
// for not exist access
|
||||||
var repoIDs []int64
|
var repoIDs []int64
|
||||||
accessSubQuery := builder.Select("repo_id").From("access").Where(builder.Eq{"user_id": userID})
|
accessSubQuery := builder.Select("repo_id").From("access").Where(builder.Eq{"user_id": userID})
|
||||||
if err := sess.SQL(subQuery.And(builder.NotIn("repo_id", accessSubQuery))).Find(&repoIDs); err != nil {
|
if err := sess.SQL(subQuery.And(builder.NotIn("repo_id", accessSubQuery))).Find(&repoIDs); err != nil {
|
||||||
return fmt.Errorf("select id accesses: %v", err)
|
return fmt.Errorf("select id accesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
accesses := make([]*access_model.Access, 0, 100)
|
accesses := make([]*access_model.Access, 0, 100)
|
||||||
|
@ -511,7 +511,7 @@ func AddTeamMember(team *organization.Team, userID int64) error {
|
||||||
accesses = append(accesses, &access_model.Access{RepoID: repoID, UserID: userID, Mode: team.AccessMode})
|
accesses = append(accesses, &access_model.Access{RepoID: repoID, UserID: userID, Mode: team.AccessMode})
|
||||||
if (i%100 == 0 || i == len(repoIDs)-1) && len(accesses) > 0 {
|
if (i%100 == 0 || i == len(repoIDs)-1) && len(accesses) > 0 {
|
||||||
if err = db.Insert(ctx, accesses); err != nil {
|
if err = db.Insert(ctx, accesses); err != nil {
|
||||||
return fmt.Errorf("insert new user accesses: %v", err)
|
return fmt.Errorf("insert new user accesses: %w", err)
|
||||||
}
|
}
|
||||||
accesses = accesses[:0]
|
accesses = accesses[:0]
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,10 +288,10 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = db.Insert(ctx, org); err != nil {
|
if err = db.Insert(ctx, org); err != nil {
|
||||||
return fmt.Errorf("insert organization: %v", err)
|
return fmt.Errorf("insert organization: %w", err)
|
||||||
}
|
}
|
||||||
if err = user_model.GenerateRandomAvatar(ctx, org.AsUser()); err != nil {
|
if err = user_model.GenerateRandomAvatar(ctx, org.AsUser()); err != nil {
|
||||||
return fmt.Errorf("generate random avatar: %v", err)
|
return fmt.Errorf("generate random avatar: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add initial creator to organization and owner team.
|
// Add initial creator to organization and owner team.
|
||||||
|
@ -299,7 +299,7 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) {
|
||||||
UID: owner.ID,
|
UID: owner.ID,
|
||||||
OrgID: org.ID,
|
OrgID: org.ID,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("insert org-user relation: %v", err)
|
return fmt.Errorf("insert org-user relation: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create default owner team.
|
// Create default owner team.
|
||||||
|
@ -313,7 +313,7 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) {
|
||||||
CanCreateOrgRepo: true,
|
CanCreateOrgRepo: true,
|
||||||
}
|
}
|
||||||
if err = db.Insert(ctx, t); err != nil {
|
if err = db.Insert(ctx, t); err != nil {
|
||||||
return fmt.Errorf("insert owner team: %v", err)
|
return fmt.Errorf("insert owner team: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// insert units for team
|
// insert units for team
|
||||||
|
@ -335,7 +335,7 @@ func CreateOrganization(org *Organization, owner *user_model.User) (err error) {
|
||||||
OrgID: org.ID,
|
OrgID: org.ID,
|
||||||
TeamID: t.ID,
|
TeamID: t.ID,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("insert team-user relation: %v", err)
|
return fmt.Errorf("insert team-user relation: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
@ -372,11 +372,11 @@ func DeleteOrganization(ctx context.Context, org *Organization) error {
|
||||||
&TeamUnit{OrgID: org.ID},
|
&TeamUnit{OrgID: org.ID},
|
||||||
&TeamInvite{OrgID: org.ID},
|
&TeamInvite{OrgID: org.ID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("DeleteBeans: %v", err)
|
return fmt.Errorf("DeleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := db.GetEngine(ctx).ID(org.ID).Delete(new(user_model.User)); err != nil {
|
if _, err := db.GetEngine(ctx).ID(org.ID).Delete(new(user_model.User)); err != nil {
|
||||||
return fmt.Errorf("Delete: %v", err)
|
return fmt.Errorf("Delete: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -760,7 +760,7 @@ func (env *accessibleReposEnv) CountRepos() (int64, error) {
|
||||||
Distinct("`repository`.id").
|
Distinct("`repository`.id").
|
||||||
Count(&repo_model.Repository{})
|
Count(&repo_model.Repository{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("count user repositories in organization: %v", err)
|
return 0, fmt.Errorf("count user repositories in organization: %w", err)
|
||||||
}
|
}
|
||||||
return repoCount, nil
|
return repoCount, nil
|
||||||
}
|
}
|
||||||
|
@ -785,7 +785,7 @@ func (env *accessibleReposEnv) RepoIDs(page, pageSize int) ([]int64, error) {
|
||||||
func (env *accessibleReposEnv) Repos(page, pageSize int) ([]*repo_model.Repository, error) {
|
func (env *accessibleReposEnv) Repos(page, pageSize int) ([]*repo_model.Repository, error) {
|
||||||
repoIDs, err := env.RepoIDs(page, pageSize)
|
repoIDs, err := env.RepoIDs(page, pageSize)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("GetUserRepositoryIDs: %v", err)
|
return nil, fmt.Errorf("GetUserRepositoryIDs: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
repos := make([]*repo_model.Repository, 0, len(repoIDs))
|
repos := make([]*repo_model.Repository, 0, len(repoIDs))
|
||||||
|
@ -814,7 +814,7 @@ func (env *accessibleReposEnv) MirrorRepoIDs() ([]int64, error) {
|
||||||
func (env *accessibleReposEnv) MirrorRepos() ([]*repo_model.Repository, error) {
|
func (env *accessibleReposEnv) MirrorRepos() ([]*repo_model.Repository, error) {
|
||||||
repoIDs, err := env.MirrorRepoIDs()
|
repoIDs, err := env.MirrorRepoIDs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("MirrorRepoIDs: %v", err)
|
return nil, fmt.Errorf("MirrorRepoIDs: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
repos := make([]*repo_model.Repository, 0, len(repoIDs))
|
repos := make([]*repo_model.Repository, 0, len(repoIDs))
|
||||||
|
|
|
@ -118,7 +118,7 @@ func loadOrganizationOwners(ctx context.Context, users user_model.UserList, orgI
|
||||||
And("team_id=?", ownerTeam.ID).
|
And("team_id=?", ownerTeam.ID).
|
||||||
Find(&ownerMaps)
|
Find(&ownerMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("find team users: %v", err)
|
return nil, fmt.Errorf("find team users: %w", err)
|
||||||
}
|
}
|
||||||
return ownerMaps, nil
|
return ownerMaps, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,7 +87,7 @@ func updateUserAccess(accessMap map[int64]*userAccess, user *user_model.User, mo
|
||||||
func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap map[int64]*userAccess) (err error) {
|
func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap map[int64]*userAccess) (err error) {
|
||||||
minMode := perm.AccessModeRead
|
minMode := perm.AccessModeRead
|
||||||
if err := repo.GetOwner(ctx); err != nil {
|
if err := repo.GetOwner(ctx); err != nil {
|
||||||
return fmt.Errorf("GetOwner: %v", err)
|
return fmt.Errorf("GetOwner: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the repo isn't private and isn't owned by a organization,
|
// If the repo isn't private and isn't owned by a organization,
|
||||||
|
@ -111,14 +111,14 @@ func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap
|
||||||
|
|
||||||
// Delete old accesses and insert new ones for repository.
|
// Delete old accesses and insert new ones for repository.
|
||||||
if _, err = db.DeleteByBean(ctx, &Access{RepoID: repo.ID}); err != nil {
|
if _, err = db.DeleteByBean(ctx, &Access{RepoID: repo.ID}); err != nil {
|
||||||
return fmt.Errorf("delete old accesses: %v", err)
|
return fmt.Errorf("delete old accesses: %w", err)
|
||||||
}
|
}
|
||||||
if len(newAccesses) == 0 {
|
if len(newAccesses) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = db.Insert(ctx, newAccesses); err != nil {
|
if err = db.Insert(ctx, newAccesses); err != nil {
|
||||||
return fmt.Errorf("insert new accesses: %v", err)
|
return fmt.Errorf("insert new accesses: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ func refreshAccesses(ctx context.Context, repo *repo_model.Repository, accessMap
|
||||||
func refreshCollaboratorAccesses(ctx context.Context, repoID int64, accessMap map[int64]*userAccess) error {
|
func refreshCollaboratorAccesses(ctx context.Context, repoID int64, accessMap map[int64]*userAccess) error {
|
||||||
collaborators, err := repo_model.GetCollaborators(ctx, repoID, db.ListOptions{})
|
collaborators, err := repo_model.GetCollaborators(ctx, repoID, db.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getCollaborations: %v", err)
|
return fmt.Errorf("getCollaborations: %w", err)
|
||||||
}
|
}
|
||||||
for _, c := range collaborators {
|
for _, c := range collaborators {
|
||||||
if c.User.IsGhost() {
|
if c.User.IsGhost() {
|
||||||
|
@ -151,7 +151,7 @@ func RecalculateTeamAccesses(ctx context.Context, repo *repo_model.Repository, i
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = refreshCollaboratorAccesses(ctx, repo.ID, accessMap); err != nil {
|
if err = refreshCollaboratorAccesses(ctx, repo.ID, accessMap); err != nil {
|
||||||
return fmt.Errorf("refreshCollaboratorAccesses: %v", err)
|
return fmt.Errorf("refreshCollaboratorAccesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
teams, err := organization.FindOrgTeams(ctx, repo.Owner.ID)
|
teams, err := organization.FindOrgTeams(ctx, repo.Owner.ID)
|
||||||
|
@ -173,7 +173,7 @@ func RecalculateTeamAccesses(ctx context.Context, repo *repo_model.Repository, i
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = t.GetMembersCtx(ctx); err != nil {
|
if err = t.GetMembersCtx(ctx); err != nil {
|
||||||
return fmt.Errorf("getMembers '%d': %v", t.ID, err)
|
return fmt.Errorf("getMembers '%d': %w", t.ID, err)
|
||||||
}
|
}
|
||||||
for _, m := range t.Members {
|
for _, m := range t.Members {
|
||||||
updateUserAccess(accessMap, m, t.AccessMode)
|
updateUserAccess(accessMap, m, t.AccessMode)
|
||||||
|
@ -224,10 +224,10 @@ func RecalculateUserAccess(ctx context.Context, repo *repo_model.Repository, uid
|
||||||
|
|
||||||
// Delete old user accesses and insert new one for repository.
|
// Delete old user accesses and insert new one for repository.
|
||||||
if _, err = e.Delete(&Access{RepoID: repo.ID, UserID: uid}); err != nil {
|
if _, err = e.Delete(&Access{RepoID: repo.ID, UserID: uid}); err != nil {
|
||||||
return fmt.Errorf("delete old user accesses: %v", err)
|
return fmt.Errorf("delete old user accesses: %w", err)
|
||||||
} else if accessMode >= minMode {
|
} else if accessMode >= minMode {
|
||||||
if err = db.Insert(ctx, &Access{RepoID: repo.ID, UserID: uid, Mode: accessMode}); err != nil {
|
if err = db.Insert(ctx, &Access{RepoID: repo.ID, UserID: uid, Mode: accessMode}); err != nil {
|
||||||
return fmt.Errorf("insert new user accesses: %v", err)
|
return fmt.Errorf("insert new user accesses: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -241,7 +241,7 @@ func RecalculateAccesses(ctx context.Context, repo *repo_model.Repository) error
|
||||||
|
|
||||||
accessMap := make(map[int64]*userAccess, 20)
|
accessMap := make(map[int64]*userAccess, 20)
|
||||||
if err := refreshCollaboratorAccesses(ctx, repo.ID, accessMap); err != nil {
|
if err := refreshCollaboratorAccesses(ctx, repo.ID, accessMap); err != nil {
|
||||||
return fmt.Errorf("refreshCollaboratorAccesses: %v", err)
|
return fmt.Errorf("refreshCollaboratorAccesses: %w", err)
|
||||||
}
|
}
|
||||||
return refreshAccesses(ctx, repo, accessMap)
|
return refreshAccesses(ctx, repo, accessMap)
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@ func GetProjects(ctx context.Context, opts SearchOptions) ([]*Project, int64, er
|
||||||
|
|
||||||
count, err := e.Where(cond).Count(new(Project))
|
count, err := e.Where(cond).Count(new(Project))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("Count: %v", err)
|
return nil, 0, fmt.Errorf("Count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
e = e.Where(cond)
|
e = e.Where(cond)
|
||||||
|
|
|
@ -74,12 +74,12 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
||||||
// Delete Deploy Keys
|
// Delete Deploy Keys
|
||||||
deployKeys, err := asymkey_model.ListDeployKeys(ctx, &asymkey_model.ListDeployKeysOptions{RepoID: repoID})
|
deployKeys, err := asymkey_model.ListDeployKeys(ctx, &asymkey_model.ListDeployKeysOptions{RepoID: repoID})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("listDeployKeys: %v", err)
|
return fmt.Errorf("listDeployKeys: %w", err)
|
||||||
}
|
}
|
||||||
needRewriteKeysFile := len(deployKeys) > 0
|
needRewriteKeysFile := len(deployKeys) > 0
|
||||||
for _, dKey := range deployKeys {
|
for _, dKey := range deployKeys {
|
||||||
if err := DeleteDeployKey(ctx, doer, dKey.ID); err != nil {
|
if err := DeleteDeployKey(ctx, doer, dKey.ID); err != nil {
|
||||||
return fmt.Errorf("deleteDeployKeys: %v", err)
|
return fmt.Errorf("deleteDeployKeys: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
||||||
&repo_model.Watch{RepoID: repoID},
|
&repo_model.Watch{RepoID: repoID},
|
||||||
&webhook.Webhook{RepoID: repoID},
|
&webhook.Webhook{RepoID: repoID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("deleteBeans: %v", err)
|
return fmt.Errorf("deleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete Labels and related objects
|
// Delete Labels and related objects
|
||||||
|
@ -178,7 +178,7 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
||||||
|
|
||||||
if repo.IsFork {
|
if repo.IsFork {
|
||||||
if _, err := db.Exec(ctx, "UPDATE `repository` SET num_forks=num_forks-1 WHERE id=?", repo.ForkID); err != nil {
|
if _, err := db.Exec(ctx, "UPDATE `repository` SET num_forks=num_forks-1 WHERE id=?", repo.ForkID); err != nil {
|
||||||
return fmt.Errorf("decrease fork count: %v", err)
|
return fmt.Errorf("decrease fork count: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,7 +193,7 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := project_model.DeleteProjectByRepoIDCtx(ctx, repoID); err != nil {
|
if err := project_model.DeleteProjectByRepoIDCtx(ctx, repoID); err != nil {
|
||||||
return fmt.Errorf("unable to delete projects for repo[%d]: %v", repoID, err)
|
return fmt.Errorf("unable to delete projects for repo[%d]: %w", repoID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove LFS objects
|
// Remove LFS objects
|
||||||
|
@ -310,7 +310,7 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
||||||
|
|
||||||
if len(repo.Avatar) > 0 {
|
if len(repo.Avatar) > 0 {
|
||||||
if err := storage.RepoAvatars.Delete(repo.CustomAvatarRelativePath()); err != nil {
|
if err := storage.RepoAvatars.Delete(repo.CustomAvatarRelativePath()); err != nil {
|
||||||
return fmt.Errorf("Failed to remove %s: %v", repo.Avatar, err)
|
return fmt.Errorf("Failed to remove %s: %w", repo.Avatar, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -619,18 +619,18 @@ func DeleteDeployKey(ctx context.Context, doer *user_model.User, id int64) error
|
||||||
if asymkey_model.IsErrDeployKeyNotExist(err) {
|
if asymkey_model.IsErrDeployKeyNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("GetDeployKeyByID: %v", err)
|
return fmt.Errorf("GetDeployKeyByID: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if user has access to delete this key.
|
// Check if user has access to delete this key.
|
||||||
if !doer.IsAdmin {
|
if !doer.IsAdmin {
|
||||||
repo, err := repo_model.GetRepositoryByIDCtx(ctx, key.RepoID)
|
repo, err := repo_model.GetRepositoryByIDCtx(ctx, key.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetRepositoryByID: %v", err)
|
return fmt.Errorf("GetRepositoryByID: %w", err)
|
||||||
}
|
}
|
||||||
has, err := access_model.IsUserRepoAdmin(ctx, repo, doer)
|
has, err := access_model.IsUserRepoAdmin(ctx, repo, doer)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetUserRepoPermission: %v", err)
|
return fmt.Errorf("GetUserRepoPermission: %w", err)
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return asymkey_model.ErrKeyAccessDenied{
|
return asymkey_model.ErrKeyAccessDenied{
|
||||||
UserID: doer.ID,
|
UserID: doer.ID,
|
||||||
|
@ -643,7 +643,7 @@ func DeleteDeployKey(ctx context.Context, doer *user_model.User, id int64) error
|
||||||
if _, err := db.DeleteByBean(ctx, &asymkey_model.DeployKey{
|
if _, err := db.DeleteByBean(ctx, &asymkey_model.DeployKey{
|
||||||
ID: key.ID,
|
ID: key.ID,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("delete deploy key [%d]: %v", key.ID, err)
|
return fmt.Errorf("delete deploy key [%d]: %w", key.ID, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if this is the last reference to same key content.
|
// Check if this is the last reference to same key content.
|
||||||
|
|
|
@ -40,7 +40,7 @@ func init() {
|
||||||
func (a *Attachment) IncreaseDownloadCount() error {
|
func (a *Attachment) IncreaseDownloadCount() error {
|
||||||
// Update download count.
|
// Update download count.
|
||||||
if _, err := db.GetEngine(db.DefaultContext).Exec("UPDATE `attachment` SET download_count=download_count+1 WHERE id=?", a.ID); err != nil {
|
if _, err := db.GetEngine(db.DefaultContext).Exec("UPDATE `attachment` SET download_count=download_count+1 WHERE id=?", a.ID); err != nil {
|
||||||
return fmt.Errorf("increase attachment count: %v", err)
|
return fmt.Errorf("increase attachment count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -36,7 +36,7 @@ func generateRandomAvatar(ctx context.Context, repo *Repository) error {
|
||||||
seed := idToString
|
seed := idToString
|
||||||
img, err := avatar.RandomImage([]byte(seed))
|
img, err := avatar.RandomImage([]byte(seed))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("RandomImage: %v", err)
|
return fmt.Errorf("RandomImage: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
repo.Avatar = idToString
|
repo.Avatar = idToString
|
||||||
|
@ -47,7 +47,7 @@ func generateRandomAvatar(ctx context.Context, repo *Repository) error {
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("Failed to create dir %s: %v", repo.CustomAvatarRelativePath(), err)
|
return fmt.Errorf("Failed to create dir %s: %w", repo.CustomAvatarRelativePath(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Info("New random avatar created for repository: %d", repo.ID)
|
log.Info("New random avatar created for repository: %d", repo.ID)
|
||||||
|
|
|
@ -40,7 +40,7 @@ type Collaborator struct {
|
||||||
func GetCollaborators(ctx context.Context, repoID int64, listOptions db.ListOptions) ([]*Collaborator, error) {
|
func GetCollaborators(ctx context.Context, repoID int64, listOptions db.ListOptions) ([]*Collaborator, error) {
|
||||||
collaborations, err := getCollaborations(ctx, repoID, listOptions)
|
collaborations, err := getCollaborations(ctx, repoID, listOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("getCollaborations: %v", err)
|
return nil, fmt.Errorf("getCollaborations: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
collaborators := make([]*Collaborator, 0, len(collaborations))
|
collaborators := make([]*Collaborator, 0, len(collaborations))
|
||||||
|
@ -114,7 +114,7 @@ func ChangeCollaborationAccessModeCtx(ctx context.Context, repo *Repository, uid
|
||||||
}
|
}
|
||||||
has, err := e.Get(collaboration)
|
has, err := e.Get(collaboration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get collaboration: %v", err)
|
return fmt.Errorf("get collaboration: %w", err)
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -128,9 +128,9 @@ func ChangeCollaborationAccessModeCtx(ctx context.Context, repo *Repository, uid
|
||||||
ID(collaboration.ID).
|
ID(collaboration.ID).
|
||||||
Cols("mode").
|
Cols("mode").
|
||||||
Update(collaboration); err != nil {
|
Update(collaboration); err != nil {
|
||||||
return fmt.Errorf("update collaboration: %v", err)
|
return fmt.Errorf("update collaboration: %w", err)
|
||||||
} else if _, err = e.Exec("UPDATE access SET mode = ? WHERE user_id = ? AND repo_id = ?", mode, uid, repo.ID); err != nil {
|
} else if _, err = e.Exec("UPDATE access SET mode = ? WHERE user_id = ? AND repo_id = ?", mode, uid, repo.ID); err != nil {
|
||||||
return fmt.Errorf("update access table: %v", err)
|
return fmt.Errorf("update access table: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -156,7 +156,7 @@ func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs
|
||||||
// Check attachments
|
// Check attachments
|
||||||
attachments, err := GetAttachmentsByUUIDs(ctx, attachmentUUIDs)
|
attachments, err := GetAttachmentsByUUIDs(ctx, attachmentUUIDs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("GetAttachmentsByUUIDs [uuids: %v]: %v", attachmentUUIDs, err)
|
return fmt.Errorf("GetAttachmentsByUUIDs [uuids: %v]: %w", attachmentUUIDs, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for i := range attachments {
|
for i := range attachments {
|
||||||
|
@ -166,7 +166,7 @@ func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs
|
||||||
attachments[i].ReleaseID = releaseID
|
attachments[i].ReleaseID = releaseID
|
||||||
// No assign value could be 0, so ignore AllCols().
|
// No assign value could be 0, so ignore AllCols().
|
||||||
if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
if _, err = db.GetEngine(ctx).ID(attachments[i].ID).Update(attachments[i]); err != nil {
|
||||||
return fmt.Errorf("update attachment [%d]: %v", attachments[i].ID, err)
|
return fmt.Errorf("update attachment [%d]: %w", attachments[i].ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -413,7 +413,7 @@ func PushUpdateDeleteTagsContext(ctx context.Context, repo *Repository, tags []s
|
||||||
Where("repo_id = ? AND is_tag = ?", repo.ID, true).
|
Where("repo_id = ? AND is_tag = ?", repo.ID, true).
|
||||||
In("lower_tag_name", lowerTags).
|
In("lower_tag_name", lowerTags).
|
||||||
Delete(new(Release)); err != nil {
|
Delete(new(Release)); err != nil {
|
||||||
return fmt.Errorf("Delete: %v", err)
|
return fmt.Errorf("Delete: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := db.GetEngine(ctx).
|
if _, err := db.GetEngine(ctx).
|
||||||
|
@ -423,7 +423,7 @@ func PushUpdateDeleteTagsContext(ctx context.Context, repo *Repository, tags []s
|
||||||
Update(&Release{
|
Update(&Release{
|
||||||
IsDraft: true,
|
IsDraft: true,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("Update: %v", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -436,18 +436,18 @@ func PushUpdateDeleteTag(repo *Repository, tagName string) error {
|
||||||
if IsErrReleaseNotExist(err) {
|
if IsErrReleaseNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("GetRelease: %v", 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(db.DefaultContext).ID(rel.ID).Delete(new(Release)); err != nil {
|
||||||
return fmt.Errorf("Delete: %v", 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(db.DefaultContext).ID(rel.ID).AllCols().Update(rel); err != nil {
|
||||||
return fmt.Errorf("Update: %v", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -458,13 +458,13 @@ func PushUpdateDeleteTag(repo *Repository, tagName string) error {
|
||||||
func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
|
func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
|
||||||
rel, err := GetRelease(repo.ID, newRel.TagName)
|
rel, err := GetRelease(repo.ID, newRel.TagName)
|
||||||
if err != nil && !IsErrReleaseNotExist(err) {
|
if err != nil && !IsErrReleaseNotExist(err) {
|
||||||
return fmt.Errorf("GetRelease: %v", 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(db.DefaultContext).Insert(rel); err != nil {
|
||||||
return fmt.Errorf("InsertOne: %v", err)
|
return fmt.Errorf("InsertOne: %w", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rel.Sha1 = newRel.Sha1
|
rel.Sha1 = newRel.Sha1
|
||||||
|
@ -475,7 +475,7 @@ func SaveOrUpdateTag(repo *Repository, newRel *Release) error {
|
||||||
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(db.DefaultContext).ID(rel.ID).AllCols().Update(rel); err != nil {
|
||||||
return fmt.Errorf("Update: %v", err)
|
return fmt.Errorf("Update: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -760,7 +760,7 @@ func CountRepositories(ctx context.Context, opts CountRepositoryOptions) (int64,
|
||||||
|
|
||||||
count, err := sess.Count(new(Repository))
|
count, err := sess.Count(new(Repository))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, fmt.Errorf("countRepositories: %v", err)
|
return 0, fmt.Errorf("countRepositories: %w", err)
|
||||||
}
|
}
|
||||||
return count, nil
|
return count, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,13 +95,13 @@ func GetIndexerStatus(ctx context.Context, repo *Repository, indexerType RepoInd
|
||||||
func UpdateIndexerStatus(ctx context.Context, repo *Repository, indexerType RepoIndexerType, sha string) error {
|
func UpdateIndexerStatus(ctx context.Context, repo *Repository, indexerType RepoIndexerType, sha string) error {
|
||||||
status, err := GetIndexerStatus(ctx, repo, indexerType)
|
status, err := GetIndexerStatus(ctx, repo, indexerType)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("UpdateIndexerStatus: Unable to getIndexerStatus for repo: %s Error: %v", repo.FullName(), err)
|
return fmt.Errorf("UpdateIndexerStatus: Unable to getIndexerStatus for repo: %s Error: %w", repo.FullName(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(status.CommitSha) == 0 {
|
if len(status.CommitSha) == 0 {
|
||||||
status.CommitSha = sha
|
status.CommitSha = sha
|
||||||
if err := db.Insert(ctx, status); err != nil {
|
if err := db.Insert(ctx, status); err != nil {
|
||||||
return fmt.Errorf("UpdateIndexerStatus: Unable to insert repoIndexerStatus for repo: %s Sha: %s Error: %v", repo.FullName(), sha, err)
|
return fmt.Errorf("UpdateIndexerStatus: Unable to insert repoIndexerStatus for repo: %s Sha: %s Error: %w", repo.FullName(), sha, err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ func UpdateIndexerStatus(ctx context.Context, repo *Repository, indexerType Repo
|
||||||
_, err = db.GetEngine(ctx).ID(status.ID).Cols("commit_sha").
|
_, err = db.GetEngine(ctx).ID(status.ID).Cols("commit_sha").
|
||||||
Update(status)
|
Update(status)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("UpdateIndexerStatus: Unable to update repoIndexerStatus for repo: %s Sha: %s Error: %v", repo.FullName(), sha, err)
|
return fmt.Errorf("UpdateIndexerStatus: Unable to update repoIndexerStatus for repo: %s Sha: %s Error: %w", repo.FullName(), sha, err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ func (repos RepositoryList) loadAttributes(ctx context.Context) error {
|
||||||
Where("id > 0").
|
Where("id > 0").
|
||||||
In("id", set.Values()).
|
In("id", set.Values()).
|
||||||
Find(&users); err != nil {
|
Find(&users); err != nil {
|
||||||
return fmt.Errorf("find users: %v", err)
|
return fmt.Errorf("find users: %w", err)
|
||||||
}
|
}
|
||||||
for i := range repos {
|
for i := range repos {
|
||||||
repos[i].Owner = users[repos[i].OwnerID]
|
repos[i].Owner = users[repos[i].OwnerID]
|
||||||
|
@ -93,7 +93,7 @@ func (repos RepositoryList) loadAttributes(ctx context.Context) error {
|
||||||
Where("`is_primary` = ? AND `language` != ?", true, "other").
|
Where("`is_primary` = ? AND `language` != ?", true, "other").
|
||||||
In("`repo_id`", repoIDs).
|
In("`repo_id`", repoIDs).
|
||||||
Find(&stats); err != nil {
|
Find(&stats); err != nil {
|
||||||
return fmt.Errorf("find primary languages: %v", err)
|
return fmt.Errorf("find primary languages: %w", err)
|
||||||
}
|
}
|
||||||
stats.LoadAttributes()
|
stats.LoadAttributes()
|
||||||
for i := range repos {
|
for i := range repos {
|
||||||
|
@ -537,7 +537,7 @@ func SearchRepositoryByCondition(opts *SearchRepoOptions, cond builder.Cond, loa
|
||||||
}
|
}
|
||||||
repos := make(RepositoryList, 0, defaultSize)
|
repos := make(RepositoryList, 0, defaultSize)
|
||||||
if err := sess.Find(&repos); err != nil {
|
if err := sess.Find(&repos); err != nil {
|
||||||
return nil, 0, fmt.Errorf("Repo: %v", err)
|
return nil, 0, fmt.Errorf("Repo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if opts.PageSize <= 0 {
|
if opts.PageSize <= 0 {
|
||||||
|
@ -546,7 +546,7 @@ func SearchRepositoryByCondition(opts *SearchRepoOptions, cond builder.Cond, loa
|
||||||
|
|
||||||
if loadAttributes {
|
if loadAttributes {
|
||||||
if err := repos.loadAttributes(ctx); err != nil {
|
if err := repos.loadAttributes(ctx); err != nil {
|
||||||
return nil, 0, fmt.Errorf("LoadAttributes: %v", err)
|
return nil, 0, fmt.Errorf("LoadAttributes: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ func searchRepositoryByCondition(ctx context.Context, opts *SearchRepoOptions, c
|
||||||
Where(cond).
|
Where(cond).
|
||||||
Count(new(Repository))
|
Count(new(Repository))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("Count: %v", err)
|
return nil, 0, fmt.Errorf("Count: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -725,7 +725,7 @@ func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error)
|
||||||
|
|
||||||
count, err := sess.Where(cond).Count(new(Repository))
|
count, err := sess.Where(cond).Count(new(Repository))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("Count: %v", err)
|
return nil, 0, fmt.Errorf("Count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
sess = sess.Where(cond).OrderBy(opts.OrderBy.String())
|
sess = sess.Where(cond).OrderBy(opts.OrderBy.String())
|
||||||
|
|
|
@ -119,7 +119,7 @@ func CheckCreateRepository(doer, u *user_model.User, name string, overwriteOrAdo
|
||||||
|
|
||||||
has, err := IsRepositoryExist(db.DefaultContext, u, name)
|
has, err := IsRepositoryExist(db.DefaultContext, u, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("IsRepositoryExist: %v", err)
|
return fmt.Errorf("IsRepositoryExist: %w", err)
|
||||||
} else if has {
|
} else if has {
|
||||||
return ErrRepoAlreadyExist{u.Name, name}
|
return ErrRepoAlreadyExist{u.Name, name}
|
||||||
}
|
}
|
||||||
|
@ -150,14 +150,14 @@ func ChangeRepositoryName(doer *user_model.User, repo *Repository, newRepoName s
|
||||||
|
|
||||||
has, err := IsRepositoryExist(db.DefaultContext, repo.Owner, newRepoName)
|
has, err := IsRepositoryExist(db.DefaultContext, repo.Owner, newRepoName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("IsRepositoryExist: %v", err)
|
return fmt.Errorf("IsRepositoryExist: %w", err)
|
||||||
} else if has {
|
} else if has {
|
||||||
return ErrRepoAlreadyExist{repo.Owner.Name, newRepoName}
|
return ErrRepoAlreadyExist{repo.Owner.Name, newRepoName}
|
||||||
}
|
}
|
||||||
|
|
||||||
newRepoPath := RepoPath(repo.Owner.Name, newRepoName)
|
newRepoPath := RepoPath(repo.Owner.Name, newRepoName)
|
||||||
if err = util.Rename(repo.RepoPath(), newRepoPath); err != nil {
|
if err = util.Rename(repo.RepoPath(), newRepoPath); err != nil {
|
||||||
return fmt.Errorf("rename repository directory: %v", err)
|
return fmt.Errorf("rename repository directory: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
wikiPath := repo.WikiPath()
|
wikiPath := repo.WikiPath()
|
||||||
|
@ -168,7 +168,7 @@ func ChangeRepositoryName(doer *user_model.User, repo *Repository, newRepoName s
|
||||||
}
|
}
|
||||||
if isExist {
|
if isExist {
|
||||||
if err = util.Rename(wikiPath, WikiPath(repo.Owner.Name, newRepoName)); err != nil {
|
if err = util.Rename(wikiPath, WikiPath(repo.Owner.Name, newRepoName)); err != nil {
|
||||||
return fmt.Errorf("rename repository wiki: %v", err)
|
return fmt.Errorf("rename repository wiki: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,19 +70,19 @@ func NewUpload(name string, buf []byte, file multipart.File) (_ *Upload, err err
|
||||||
|
|
||||||
localPath := upload.LocalPath()
|
localPath := upload.LocalPath()
|
||||||
if err = os.MkdirAll(path.Dir(localPath), os.ModePerm); err != nil {
|
if err = os.MkdirAll(path.Dir(localPath), os.ModePerm); err != nil {
|
||||||
return nil, fmt.Errorf("MkdirAll: %v", err)
|
return nil, fmt.Errorf("MkdirAll: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fw, err := os.Create(localPath)
|
fw, err := os.Create(localPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Create: %v", err)
|
return nil, fmt.Errorf("Create: %w", err)
|
||||||
}
|
}
|
||||||
defer fw.Close()
|
defer fw.Close()
|
||||||
|
|
||||||
if _, err = fw.Write(buf); err != nil {
|
if _, err = fw.Write(buf); err != nil {
|
||||||
return nil, fmt.Errorf("Write: %v", err)
|
return nil, fmt.Errorf("Write: %w", err)
|
||||||
} else if _, err = io.Copy(fw, file); err != nil {
|
} else if _, err = io.Copy(fw, file); err != nil {
|
||||||
return nil, fmt.Errorf("Copy: %v", err)
|
return nil, fmt.Errorf("Copy: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := db.GetEngine(db.DefaultContext).Insert(upload); err != nil {
|
if _, err := db.GetEngine(db.DefaultContext).Insert(upload); err != nil {
|
||||||
|
@ -134,7 +134,7 @@ func DeleteUploads(uploads ...*Upload) (err error) {
|
||||||
if _, err = db.GetEngine(ctx).
|
if _, err = db.GetEngine(ctx).
|
||||||
In("id", ids).
|
In("id", ids).
|
||||||
Delete(new(Upload)); err != nil {
|
Delete(new(Upload)); err != nil {
|
||||||
return fmt.Errorf("delete uploads: %v", err)
|
return fmt.Errorf("delete uploads: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = committer.Commit(); err != nil {
|
if err = committer.Commit(); err != nil {
|
||||||
|
@ -152,7 +152,7 @@ func DeleteUploads(uploads ...*Upload) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := util.Remove(localPath); err != nil {
|
if err := util.Remove(localPath); err != nil {
|
||||||
return fmt.Errorf("remove upload: %v", err)
|
return fmt.Errorf("remove upload: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,11 +166,11 @@ func DeleteUploadByUUID(uuid string) error {
|
||||||
if IsErrUploadNotExist(err) {
|
if IsErrUploadNotExist(err) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return fmt.Errorf("GetUploadByUUID: %v", err)
|
return fmt.Errorf("GetUploadByUUID: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := DeleteUploads(upload); err != nil {
|
if err := DeleteUploads(upload); err != nil {
|
||||||
return fmt.Errorf("DeleteUpload: %v", err)
|
return fmt.Errorf("DeleteUpload: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -66,7 +66,7 @@ func reconsiderRepoIssuesAssignee(ctx context.Context, repo *repo_model.Reposito
|
||||||
if _, err := db.GetEngine(ctx).Where(builder.Eq{"assignee_id": uid}).
|
if _, err := db.GetEngine(ctx).Where(builder.Eq{"assignee_id": uid}).
|
||||||
In("issue_id", builder.Select("id").From("issue").Where(builder.Eq{"repo_id": repo.ID})).
|
In("issue_id", builder.Select("id").From("issue").Where(builder.Eq{"repo_id": repo.ID})).
|
||||||
Delete(&issues_model.IssueAssignees{}); err != nil {
|
Delete(&issues_model.IssueAssignees{}); err != nil {
|
||||||
return fmt.Errorf("Could not delete assignee[%d] %v", uid, err)
|
return fmt.Errorf("Could not delete assignee[%d] %w", uid, err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,7 +179,7 @@ func CreatePendingRepositoryTransfer(doer, newOwner *user_model.User, repoID int
|
||||||
|
|
||||||
// Check if new owner has repository with same name.
|
// Check if new owner has repository with same name.
|
||||||
if has, err := repo_model.IsRepositoryExist(ctx, newOwner, repo.Name); err != nil {
|
if has, err := repo_model.IsRepositoryExist(ctx, newOwner, repo.Name); err != nil {
|
||||||
return fmt.Errorf("IsRepositoryExist: %v", err)
|
return fmt.Errorf("IsRepositoryExist: %w", err)
|
||||||
} else if has {
|
} else if has {
|
||||||
return repo_model.ErrRepoAlreadyExist{
|
return repo_model.ErrRepoAlreadyExist{
|
||||||
Uname: newOwner.LowerName,
|
Uname: newOwner.LowerName,
|
||||||
|
@ -253,13 +253,13 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
|
|
||||||
newOwner, err := user_model.GetUserByName(ctx, newOwnerName)
|
newOwner, err := user_model.GetUserByName(ctx, newOwnerName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("get new owner '%s': %v", newOwnerName, err)
|
return fmt.Errorf("get new owner '%s': %w", newOwnerName, err)
|
||||||
}
|
}
|
||||||
newOwnerName = newOwner.Name // ensure capitalisation matches
|
newOwnerName = newOwner.Name // ensure capitalisation matches
|
||||||
|
|
||||||
// Check if new owner has repository with same name.
|
// Check if new owner has repository with same name.
|
||||||
if has, err := repo_model.IsRepositoryExist(ctx, newOwner, repo.Name); err != nil {
|
if has, err := repo_model.IsRepositoryExist(ctx, newOwner, repo.Name); err != nil {
|
||||||
return fmt.Errorf("IsRepositoryExist: %v", err)
|
return fmt.Errorf("IsRepositoryExist: %w", err)
|
||||||
} else if has {
|
} else if has {
|
||||||
return repo_model.ErrRepoAlreadyExist{
|
return repo_model.ErrRepoAlreadyExist{
|
||||||
Uname: newOwnerName,
|
Uname: newOwnerName,
|
||||||
|
@ -278,13 +278,13 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
|
|
||||||
// Update repository.
|
// Update repository.
|
||||||
if _, err := sess.ID(repo.ID).Update(repo); err != nil {
|
if _, err := sess.ID(repo.ID).Update(repo); err != nil {
|
||||||
return fmt.Errorf("update owner: %v", err)
|
return fmt.Errorf("update owner: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove redundant collaborators.
|
// Remove redundant collaborators.
|
||||||
collaborators, err := repo_model.GetCollaborators(ctx, repo.ID, db.ListOptions{})
|
collaborators, err := repo_model.GetCollaborators(ctx, repo.ID, db.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("getCollaborators: %v", err)
|
return fmt.Errorf("getCollaborators: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dummy object.
|
// Dummy object.
|
||||||
|
@ -293,7 +293,7 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
if c.IsGhost() {
|
if c.IsGhost() {
|
||||||
collaboration.ID = c.Collaboration.ID
|
collaboration.ID = c.Collaboration.ID
|
||||||
if _, err := sess.Delete(collaboration); err != nil {
|
if _, err := sess.Delete(collaboration); err != nil {
|
||||||
return fmt.Errorf("remove collaborator '%d': %v", c.ID, err)
|
return fmt.Errorf("remove collaborator '%d': %w", c.ID, err)
|
||||||
}
|
}
|
||||||
collaboration.ID = 0
|
collaboration.ID = 0
|
||||||
}
|
}
|
||||||
|
@ -301,14 +301,14 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
if c.ID != newOwner.ID {
|
if c.ID != newOwner.ID {
|
||||||
isMember, err := organization.IsOrganizationMember(ctx, newOwner.ID, c.ID)
|
isMember, err := organization.IsOrganizationMember(ctx, newOwner.ID, c.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("IsOrgMember: %v", err)
|
return fmt.Errorf("IsOrgMember: %w", err)
|
||||||
} else if !isMember {
|
} else if !isMember {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
collaboration.UserID = c.ID
|
collaboration.UserID = c.ID
|
||||||
if _, err := sess.Delete(collaboration); err != nil {
|
if _, err := sess.Delete(collaboration); err != nil {
|
||||||
return fmt.Errorf("remove collaborator '%d': %v", c.ID, err)
|
return fmt.Errorf("remove collaborator '%d': %w", c.ID, err)
|
||||||
}
|
}
|
||||||
collaboration.UserID = 0
|
collaboration.UserID = 0
|
||||||
}
|
}
|
||||||
|
@ -316,42 +316,42 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
// Remove old team-repository relations.
|
// Remove old team-repository relations.
|
||||||
if oldOwner.IsOrganization() {
|
if oldOwner.IsOrganization() {
|
||||||
if err := organization.RemoveOrgRepo(ctx, oldOwner.ID, repo.ID); err != nil {
|
if err := organization.RemoveOrgRepo(ctx, oldOwner.ID, repo.ID); err != nil {
|
||||||
return fmt.Errorf("removeOrgRepo: %v", err)
|
return fmt.Errorf("removeOrgRepo: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if newOwner.IsOrganization() {
|
if newOwner.IsOrganization() {
|
||||||
teams, err := organization.FindOrgTeams(ctx, newOwner.ID)
|
teams, err := organization.FindOrgTeams(ctx, newOwner.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("LoadTeams: %v", err)
|
return fmt.Errorf("LoadTeams: %w", err)
|
||||||
}
|
}
|
||||||
for _, t := range teams {
|
for _, t := range teams {
|
||||||
if t.IncludesAllRepositories {
|
if t.IncludesAllRepositories {
|
||||||
if err := AddRepository(ctx, t, repo); err != nil {
|
if err := AddRepository(ctx, t, repo); err != nil {
|
||||||
return fmt.Errorf("AddRepository: %v", err)
|
return fmt.Errorf("AddRepository: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
|
} else if err := access_model.RecalculateAccesses(ctx, repo); err != nil {
|
||||||
// Organization called this in addRepository method.
|
// Organization called this in addRepository method.
|
||||||
return fmt.Errorf("recalculateAccesses: %v", err)
|
return fmt.Errorf("recalculateAccesses: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update repository count.
|
// Update repository count.
|
||||||
if _, err := sess.Exec("UPDATE `user` SET num_repos=num_repos+1 WHERE id=?", newOwner.ID); err != nil {
|
if _, err := sess.Exec("UPDATE `user` SET num_repos=num_repos+1 WHERE id=?", newOwner.ID); err != nil {
|
||||||
return fmt.Errorf("increase new owner repository count: %v", err)
|
return fmt.Errorf("increase new owner repository count: %w", err)
|
||||||
} else if _, err := sess.Exec("UPDATE `user` SET num_repos=num_repos-1 WHERE id=?", oldOwner.ID); err != nil {
|
} else if _, err := sess.Exec("UPDATE `user` SET num_repos=num_repos-1 WHERE id=?", oldOwner.ID); err != nil {
|
||||||
return fmt.Errorf("decrease old owner repository count: %v", err)
|
return fmt.Errorf("decrease old owner repository count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := repo_model.WatchRepo(ctx, doer.ID, repo.ID, true); err != nil {
|
if err := repo_model.WatchRepo(ctx, doer.ID, repo.ID, true); err != nil {
|
||||||
return fmt.Errorf("watchRepo: %v", err)
|
return fmt.Errorf("watchRepo: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove watch for organization.
|
// Remove watch for organization.
|
||||||
if oldOwner.IsOrganization() {
|
if oldOwner.IsOrganization() {
|
||||||
if err := repo_model.WatchRepo(ctx, oldOwner.ID, repo.ID, false); err != nil {
|
if err := repo_model.WatchRepo(ctx, oldOwner.ID, repo.ID, false); err != nil {
|
||||||
return fmt.Errorf("watchRepo [false]: %v", err)
|
return fmt.Errorf("watchRepo [false]: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,7 +366,7 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
WHERE
|
WHERE
|
||||||
issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
|
issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
|
||||||
) AS il_too )`, repo.ID, newOwner.ID); err != nil {
|
) AS il_too )`, repo.ID, newOwner.ID); err != nil {
|
||||||
return fmt.Errorf("Unable to remove old org labels: %v", err)
|
return fmt.Errorf("Unable to remove old org labels: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := sess.Exec(`DELETE FROM comment WHERE comment.id IN (
|
if _, err := sess.Exec(`DELETE FROM comment WHERE comment.id IN (
|
||||||
|
@ -378,7 +378,7 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
WHERE
|
WHERE
|
||||||
com.type = ? AND issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
|
com.type = ? AND issue.repo_id = ? AND ((label.org_id = 0 AND issue.repo_id != label.repo_id) OR (label.repo_id = 0 AND label.org_id != ?))
|
||||||
) AS il_too)`, issues_model.CommentTypeLabel, repo.ID, newOwner.ID); err != nil {
|
) AS il_too)`, issues_model.CommentTypeLabel, repo.ID, newOwner.ID); err != nil {
|
||||||
return fmt.Errorf("Unable to remove old org label comments: %v", err)
|
return fmt.Errorf("Unable to remove old org label comments: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,11 +386,11 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
dir := user_model.UserPath(newOwner.Name)
|
dir := user_model.UserPath(newOwner.Name)
|
||||||
|
|
||||||
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
|
||||||
return fmt.Errorf("Failed to create dir %s: %v", dir, err)
|
return fmt.Errorf("Failed to create dir %s: %w", dir, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := util.Rename(repo_model.RepoPath(oldOwner.Name, repo.Name), repo_model.RepoPath(newOwner.Name, repo.Name)); err != nil {
|
if err := util.Rename(repo_model.RepoPath(oldOwner.Name, repo.Name), repo_model.RepoPath(newOwner.Name, repo.Name)); err != nil {
|
||||||
return fmt.Errorf("rename repository directory: %v", err)
|
return fmt.Errorf("rename repository directory: %w", err)
|
||||||
}
|
}
|
||||||
repoRenamed = true
|
repoRenamed = true
|
||||||
|
|
||||||
|
@ -402,13 +402,13 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
return err
|
return err
|
||||||
} else if isExist {
|
} else if isExist {
|
||||||
if err := util.Rename(wikiPath, repo_model.WikiPath(newOwner.Name, repo.Name)); err != nil {
|
if err := util.Rename(wikiPath, repo_model.WikiPath(newOwner.Name, repo.Name)); err != nil {
|
||||||
return fmt.Errorf("rename repository wiki: %v", err)
|
return fmt.Errorf("rename repository wiki: %w", err)
|
||||||
}
|
}
|
||||||
wikiRenamed = true
|
wikiRenamed = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := deleteRepositoryTransfer(ctx, repo.ID); err != nil {
|
if err := deleteRepositoryTransfer(ctx, repo.ID); err != nil {
|
||||||
return fmt.Errorf("deleteRepositoryTransfer: %v", err)
|
return fmt.Errorf("deleteRepositoryTransfer: %w", err)
|
||||||
}
|
}
|
||||||
repo.Status = repo_model.RepositoryReady
|
repo.Status = repo_model.RepositoryReady
|
||||||
if err := repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
|
if err := repo_model.UpdateRepositoryCols(ctx, repo, "status"); err != nil {
|
||||||
|
@ -417,11 +417,11 @@ func TransferOwnership(doer *user_model.User, newOwnerName string, repo *repo_mo
|
||||||
|
|
||||||
// If there was previously a redirect at this location, remove it.
|
// If there was previously a redirect at this location, remove it.
|
||||||
if err := repo_model.DeleteRedirect(ctx, newOwner.ID, repo.Name); err != nil {
|
if err := repo_model.DeleteRedirect(ctx, newOwner.ID, repo.Name); err != nil {
|
||||||
return fmt.Errorf("delete repo redirect: %v", err)
|
return fmt.Errorf("delete repo redirect: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := repo_model.NewRedirect(ctx, oldOwner.ID, repo.ID, repo.Name, repo.Name); err != nil {
|
if err := repo_model.NewRedirect(ctx, oldOwner.ID, repo.ID, repo.Name, repo.Name); err != nil {
|
||||||
return fmt.Errorf("repo_model.NewRedirect: %v", err)
|
return fmt.Errorf("repo_model.NewRedirect: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
return committer.Commit()
|
||||||
|
|
|
@ -243,7 +243,7 @@ func Init() error {
|
||||||
var err error
|
var err error
|
||||||
GravatarSourceURL, err = url.Parse(setting.GravatarSource)
|
GravatarSourceURL, err = url.Parse(setting.GravatarSource)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Failed to parse Gravatar URL(%s): %v", setting.GravatarSource, err)
|
return fmt.Errorf("Failed to parse Gravatar URL(%s): %w", setting.GravatarSource, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,10 +35,10 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
watchedRepoIDs := make([]int64, 0, 10)
|
watchedRepoIDs := make([]int64, 0, 10)
|
||||||
if err = e.Table("watch").Cols("watch.repo_id").
|
if err = e.Table("watch").Cols("watch.repo_id").
|
||||||
Where("watch.user_id = ?", u.ID).And("watch.mode <>?", repo_model.WatchModeDont).Find(&watchedRepoIDs); err != nil {
|
Where("watch.user_id = ?", u.ID).And("watch.mode <>?", repo_model.WatchModeDont).Find(&watchedRepoIDs); err != nil {
|
||||||
return fmt.Errorf("get all watches: %v", err)
|
return fmt.Errorf("get all watches: %w", err)
|
||||||
}
|
}
|
||||||
if _, err = e.Decr("num_watches").In("id", watchedRepoIDs).NoAutoTime().Update(new(repo_model.Repository)); err != nil {
|
if _, err = e.Decr("num_watches").In("id", watchedRepoIDs).NoAutoTime().Update(new(repo_model.Repository)); err != nil {
|
||||||
return fmt.Errorf("decrease repository num_watches: %v", err)
|
return fmt.Errorf("decrease repository num_watches: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: Watch *****
|
// ***** END: Watch *****
|
||||||
|
|
||||||
|
@ -46,9 +46,9 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
starredRepoIDs := make([]int64, 0, 10)
|
starredRepoIDs := make([]int64, 0, 10)
|
||||||
if err = e.Table("star").Cols("star.repo_id").
|
if err = e.Table("star").Cols("star.repo_id").
|
||||||
Where("star.uid = ?", u.ID).Find(&starredRepoIDs); err != nil {
|
Where("star.uid = ?", u.ID).Find(&starredRepoIDs); err != nil {
|
||||||
return fmt.Errorf("get all stars: %v", err)
|
return fmt.Errorf("get all stars: %w", err)
|
||||||
} else if _, err = e.Decr("num_stars").In("id", starredRepoIDs).NoAutoTime().Update(new(repo_model.Repository)); err != nil {
|
} else if _, err = e.Decr("num_stars").In("id", starredRepoIDs).NoAutoTime().Update(new(repo_model.Repository)); err != nil {
|
||||||
return fmt.Errorf("decrease repository num_stars: %v", err)
|
return fmt.Errorf("decrease repository num_stars: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: Star *****
|
// ***** END: Star *****
|
||||||
|
|
||||||
|
@ -56,17 +56,17 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
followeeIDs := make([]int64, 0, 10)
|
followeeIDs := make([]int64, 0, 10)
|
||||||
if err = e.Table("follow").Cols("follow.follow_id").
|
if err = e.Table("follow").Cols("follow.follow_id").
|
||||||
Where("follow.user_id = ?", u.ID).Find(&followeeIDs); err != nil {
|
Where("follow.user_id = ?", u.ID).Find(&followeeIDs); err != nil {
|
||||||
return fmt.Errorf("get all followees: %v", err)
|
return fmt.Errorf("get all followees: %w", err)
|
||||||
} else if _, err = e.Decr("num_followers").In("id", followeeIDs).Update(new(user_model.User)); err != nil {
|
} else if _, err = e.Decr("num_followers").In("id", followeeIDs).Update(new(user_model.User)); err != nil {
|
||||||
return fmt.Errorf("decrease user num_followers: %v", err)
|
return fmt.Errorf("decrease user num_followers: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
followerIDs := make([]int64, 0, 10)
|
followerIDs := make([]int64, 0, 10)
|
||||||
if err = e.Table("follow").Cols("follow.user_id").
|
if err = e.Table("follow").Cols("follow.user_id").
|
||||||
Where("follow.follow_id = ?", u.ID).Find(&followerIDs); err != nil {
|
Where("follow.follow_id = ?", u.ID).Find(&followerIDs); err != nil {
|
||||||
return fmt.Errorf("get all followers: %v", err)
|
return fmt.Errorf("get all followers: %w", err)
|
||||||
} else if _, err = e.Decr("num_following").In("id", followerIDs).Update(new(user_model.User)); err != nil {
|
} else if _, err = e.Decr("num_following").In("id", followerIDs).Update(new(user_model.User)); err != nil {
|
||||||
return fmt.Errorf("decrease user num_following: %v", err)
|
return fmt.Errorf("decrease user num_following: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: Follow *****
|
// ***** END: Follow *****
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
&pull_model.AutoMerge{DoerID: u.ID},
|
&pull_model.AutoMerge{DoerID: u.ID},
|
||||||
&pull_model.ReviewState{UserID: u.ID},
|
&pull_model.ReviewState{UserID: u.ID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("deleteBeans: %v", err)
|
return fmt.Errorf("deleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := auth_model.DeleteOAuth2RelictsByUserID(ctx, u.ID); err != nil {
|
if err := auth_model.DeleteOAuth2RelictsByUserID(ctx, u.ID); err != nil {
|
||||||
|
@ -135,7 +135,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
// Also, as we didn't update branch protections when removing entries from `access` table,
|
// Also, as we didn't update branch protections when removing entries from `access` table,
|
||||||
// it's safer to iterate all protected branches.
|
// it's safer to iterate all protected branches.
|
||||||
if err = e.Limit(batchSize, start).Find(&protections); err != nil {
|
if err = e.Limit(batchSize, start).Find(&protections); err != nil {
|
||||||
return fmt.Errorf("findProtectedBranches: %v", err)
|
return fmt.Errorf("findProtectedBranches: %w", err)
|
||||||
}
|
}
|
||||||
if len(protections) == 0 {
|
if len(protections) == 0 {
|
||||||
break
|
break
|
||||||
|
@ -160,7 +160,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
"merge_whitelist_user_i_ds",
|
"merge_whitelist_user_i_ds",
|
||||||
"approvals_whitelist_user_i_ds",
|
"approvals_whitelist_user_i_ds",
|
||||||
).Update(p); err != nil {
|
).Update(p); err != nil {
|
||||||
return fmt.Errorf("updateProtectedBranches: %v", err)
|
return fmt.Errorf("updateProtectedBranches: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,39 +170,39 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
||||||
|
|
||||||
// ***** START: PublicKey *****
|
// ***** START: PublicKey *****
|
||||||
if _, err = db.DeleteByBean(ctx, &asymkey_model.PublicKey{OwnerID: u.ID}); err != nil {
|
if _, err = db.DeleteByBean(ctx, &asymkey_model.PublicKey{OwnerID: u.ID}); err != nil {
|
||||||
return fmt.Errorf("deletePublicKeys: %v", err)
|
return fmt.Errorf("deletePublicKeys: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: PublicKey *****
|
// ***** END: PublicKey *****
|
||||||
|
|
||||||
// ***** START: GPGPublicKey *****
|
// ***** START: GPGPublicKey *****
|
||||||
keys, err := asymkey_model.ListGPGKeys(ctx, u.ID, db.ListOptions{})
|
keys, err := asymkey_model.ListGPGKeys(ctx, u.ID, db.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("ListGPGKeys: %v", err)
|
return fmt.Errorf("ListGPGKeys: %w", err)
|
||||||
}
|
}
|
||||||
// Delete GPGKeyImport(s).
|
// Delete GPGKeyImport(s).
|
||||||
for _, key := range keys {
|
for _, key := range keys {
|
||||||
if _, err = db.DeleteByBean(ctx, &asymkey_model.GPGKeyImport{KeyID: key.KeyID}); err != nil {
|
if _, err = db.DeleteByBean(ctx, &asymkey_model.GPGKeyImport{KeyID: key.KeyID}); err != nil {
|
||||||
return fmt.Errorf("deleteGPGKeyImports: %v", err)
|
return fmt.Errorf("deleteGPGKeyImports: %w", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err = db.DeleteByBean(ctx, &asymkey_model.GPGKey{OwnerID: u.ID}); err != nil {
|
if _, err = db.DeleteByBean(ctx, &asymkey_model.GPGKey{OwnerID: u.ID}); err != nil {
|
||||||
return fmt.Errorf("deleteGPGKeys: %v", err)
|
return fmt.Errorf("deleteGPGKeys: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: GPGPublicKey *****
|
// ***** END: GPGPublicKey *****
|
||||||
|
|
||||||
// Clear assignee.
|
// Clear assignee.
|
||||||
if _, err = db.DeleteByBean(ctx, &issues_model.IssueAssignees{AssigneeID: u.ID}); err != nil {
|
if _, err = db.DeleteByBean(ctx, &issues_model.IssueAssignees{AssigneeID: u.ID}); err != nil {
|
||||||
return fmt.Errorf("clear assignee: %v", err)
|
return fmt.Errorf("clear assignee: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***** START: ExternalLoginUser *****
|
// ***** START: ExternalLoginUser *****
|
||||||
if err = user_model.RemoveAllAccountLinks(ctx, u); err != nil {
|
if err = user_model.RemoveAllAccountLinks(ctx, u); err != nil {
|
||||||
return fmt.Errorf("ExternalLoginUser: %v", err)
|
return fmt.Errorf("ExternalLoginUser: %w", err)
|
||||||
}
|
}
|
||||||
// ***** END: ExternalLoginUser *****
|
// ***** END: ExternalLoginUser *****
|
||||||
|
|
||||||
if _, err = e.ID(u.ID).Delete(new(user_model.User)); err != nil {
|
if _, err = e.ID(u.ID).Delete(new(user_model.User)); err != nil {
|
||||||
return fmt.Errorf("delete: %v", err)
|
return fmt.Errorf("delete: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -35,7 +35,7 @@ func GenerateRandomAvatar(ctx context.Context, u *User) error {
|
||||||
|
|
||||||
img, err := avatar.RandomImage([]byte(seed))
|
img, err := avatar.RandomImage([]byte(seed))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("RandomImage: %v", err)
|
return fmt.Errorf("RandomImage: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
u.Avatar = avatars.HashEmail(seed)
|
u.Avatar = avatars.HashEmail(seed)
|
||||||
|
@ -47,7 +47,7 @@ func GenerateRandomAvatar(ctx context.Context, u *User) error {
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return fmt.Errorf("Failed to create dir %s: %v", u.CustomAvatarRelativePath(), err)
|
return fmt.Errorf("Failed to create dir %s: %w", u.CustomAvatarRelativePath(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := db.GetEngine(ctx).ID(u.ID).Cols("avatar").Update(u); err != nil {
|
if _, err := db.GetEngine(ctx).ID(u.ID).Cols("avatar").Update(u); err != nil {
|
||||||
|
|
|
@ -264,7 +264,7 @@ func AddEmailAddresses(emails []*EmailAddress) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := db.Insert(db.DefaultContext, emails); err != nil {
|
if err := db.Insert(db.DefaultContext, emails); err != nil {
|
||||||
return fmt.Errorf("Insert: %v", err)
|
return fmt.Errorf("Insert: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -485,7 +485,7 @@ func SearchEmails(opts *SearchEmailOptions) ([]*SearchEmailResult, int64, error)
|
||||||
count, err := db.GetEngine(db.DefaultContext).Join("INNER", "`user`", "`user`.ID = email_address.uid").
|
count, err := db.GetEngine(db.DefaultContext).Join("INNER", "`user`", "`user`.ID = email_address.uid").
|
||||||
Where(cond).Count(new(EmailAddress))
|
Where(cond).Count(new(EmailAddress))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, 0, fmt.Errorf("Count: %v", err)
|
return nil, 0, fmt.Errorf("Count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
orderby := opts.SortType.String()
|
orderby := opts.SortType.String()
|
||||||
|
@ -530,7 +530,7 @@ func ActivateUserEmail(userID int64, email string, activate bool) (err error) {
|
||||||
}
|
}
|
||||||
if activate {
|
if activate {
|
||||||
if used, err := IsEmailActive(ctx, email, addr.ID); err != nil {
|
if used, err := IsEmailActive(ctx, email, addr.ID); err != nil {
|
||||||
return fmt.Errorf("unable to check isEmailActive() for %s: %v", email, err)
|
return fmt.Errorf("unable to check isEmailActive() for %s: %w", email, err)
|
||||||
} else if used {
|
} else if used {
|
||||||
return ErrEmailAlreadyUsed{Email: email}
|
return ErrEmailAlreadyUsed{Email: email}
|
||||||
}
|
}
|
||||||
|
@ -551,10 +551,10 @@ func ActivateUserEmail(userID int64, email string, activate bool) (err error) {
|
||||||
if user.IsActive != activate {
|
if user.IsActive != activate {
|
||||||
user.IsActive = activate
|
user.IsActive = activate
|
||||||
if user.Rands, err = GetUserSalt(); err != nil {
|
if user.Rands, err = GetUserSalt(); err != nil {
|
||||||
return fmt.Errorf("unable to generate salt: %v", err)
|
return fmt.Errorf("unable to generate salt: %w", err)
|
||||||
}
|
}
|
||||||
if err = UpdateUserCols(ctx, &user, "is_active", "rands"); err != nil {
|
if err = UpdateUserCols(ctx, &user, "is_active", "rands"); err != nil {
|
||||||
return fmt.Errorf("unable to updateUserCols() for user ID: %d: %v", userID, err)
|
return fmt.Errorf("unable to updateUserCols() for user ID: %d: %w", userID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ func (users UserList) loadTwoFactorStatus(ctx context.Context) (map[int64]*auth.
|
||||||
userIDs := users.GetUserIDs()
|
userIDs := users.GetUserIDs()
|
||||||
tokenMaps := make(map[int64]*auth.TwoFactor, len(userIDs))
|
tokenMaps := make(map[int64]*auth.TwoFactor, len(userIDs))
|
||||||
if err := db.GetEngine(ctx).In("uid", userIDs).Find(&tokenMaps); err != nil {
|
if err := db.GetEngine(ctx).In("uid", userIDs).Find(&tokenMaps); err != nil {
|
||||||
return nil, fmt.Errorf("find two factor: %v", err)
|
return nil, fmt.Errorf("find two factor: %w", err)
|
||||||
}
|
}
|
||||||
return tokenMaps, nil
|
return tokenMaps, nil
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func (users UserList) userIDsWithWebAuthn(ctx context.Context) ([]int64, error)
|
||||||
}
|
}
|
||||||
ids := make([]int64, 0, len(users))
|
ids := make([]int64, 0, len(users))
|
||||||
if err := db.GetEngine(ctx).Table(new(auth.WebAuthnCredential)).In("user_id", users.GetUserIDs()).Select("user_id").Distinct("user_id").Find(&ids); err != nil {
|
if err := db.GetEngine(ctx).Table(new(auth.WebAuthnCredential)).In("user_id", users.GetUserIDs()).Select("user_id").Distinct("user_id").Find(&ids); err != nil {
|
||||||
return nil, fmt.Errorf("find two factor: %v", err)
|
return nil, fmt.Errorf("find two factor: %w", err)
|
||||||
}
|
}
|
||||||
return ids, nil
|
return ids, nil
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue