Extract actions on new issue from models to services (#8217)
* extract actions on new issue from models to services * improve code * rename services/issues to services/issue
This commit is contained in:
		
							parent
							
								
									a5992d1725
								
							
						
					
					
						commit
						e6113000c5
					
				
					 4 changed files with 51 additions and 27 deletions
				
			
		|  | @ -1225,31 +1225,6 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, assigneeIDs []in | ||||||
| 	} | 	} | ||||||
| 	sess.Close() | 	sess.Close() | ||||||
| 
 | 
 | ||||||
| 	if err = NotifyWatchers(&Action{ |  | ||||||
| 		ActUserID: issue.Poster.ID, |  | ||||||
| 		ActUser:   issue.Poster, |  | ||||||
| 		OpType:    ActionCreateIssue, |  | ||||||
| 		Content:   fmt.Sprintf("%d|%s", issue.Index, issue.Title), |  | ||||||
| 		RepoID:    repo.ID, |  | ||||||
| 		Repo:      repo, |  | ||||||
| 		IsPrivate: repo.IsPrivate, |  | ||||||
| 	}); err != nil { |  | ||||||
| 		log.Error("NotifyWatchers: %v", err) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	mode, _ := AccessLevel(issue.Poster, issue.Repo) |  | ||||||
| 	if err = PrepareWebhooks(repo, HookEventIssues, &api.IssuePayload{ |  | ||||||
| 		Action:     api.HookIssueOpened, |  | ||||||
| 		Index:      issue.Index, |  | ||||||
| 		Issue:      issue.APIFormat(), |  | ||||||
| 		Repository: repo.APIFormat(mode), |  | ||||||
| 		Sender:     issue.Poster.APIFormat(), |  | ||||||
| 	}); err != nil { |  | ||||||
| 		log.Error("PrepareWebhooks: %v", err) |  | ||||||
| 	} else { |  | ||||||
| 		go HookQueue.Add(issue.RepoID) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -19,6 +19,7 @@ import ( | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
| 	"code.gitea.io/gitea/modules/timeutil" | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
|  | 	issue_service "code.gitea.io/gitea/services/issue" | ||||||
| 	milestone_service "code.gitea.io/gitea/services/milestone" | 	milestone_service "code.gitea.io/gitea/services/milestone" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -217,7 +218,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) { | ||||||
| 		form.Labels = make([]int64, 0) | 		form.Labels = make([]int64, 0) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := models.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | 	if err := issue_service.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil { | ||||||
| 		if models.IsErrUserDoesNotHaveAccessToRepo(err) { | 		if models.IsErrUserDoesNotHaveAccessToRepo(err) { | ||||||
| 			ctx.Error(400, "UserDoesNotHaveAccessToRepo", err) | 			ctx.Error(400, "UserDoesNotHaveAccessToRepo", err) | ||||||
| 			return | 			return | ||||||
|  |  | ||||||
|  | @ -27,6 +27,7 @@ import ( | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
| 	comment_service "code.gitea.io/gitea/services/comments" | 	comment_service "code.gitea.io/gitea/services/comments" | ||||||
|  | 	issue_service "code.gitea.io/gitea/services/issue" | ||||||
| 	milestone_service "code.gitea.io/gitea/services/milestone" | 	milestone_service "code.gitea.io/gitea/services/milestone" | ||||||
| 
 | 
 | ||||||
| 	"github.com/unknwon/com" | 	"github.com/unknwon/com" | ||||||
|  | @ -571,7 +572,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) { | ||||||
| 		Content:     form.Content, | 		Content:     form.Content, | ||||||
| 		Ref:         form.Ref, | 		Ref:         form.Ref, | ||||||
| 	} | 	} | ||||||
| 	if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | 	if err := issue_service.NewIssue(repo, issue, labelIDs, assigneeIDs, attachments); err != nil { | ||||||
| 		if models.IsErrUserDoesNotHaveAccessToRepo(err) { | 		if models.IsErrUserDoesNotHaveAccessToRepo(err) { | ||||||
| 			ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error()) | 			ctx.Error(400, "UserDoesNotHaveAccessToRepo", err.Error()) | ||||||
| 			return | 			return | ||||||
|  |  | ||||||
							
								
								
									
										47
									
								
								services/issue/issue.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								services/issue/issue.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | ||||||
|  | // Copyright 2019 The Gitea Authors. All rights reserved.
 | ||||||
|  | // Use of this source code is governed by a MIT-style
 | ||||||
|  | // license that can be found in the LICENSE file.
 | ||||||
|  | 
 | ||||||
|  | package issue | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 
 | ||||||
|  | 	"code.gitea.io/gitea/models" | ||||||
|  | 	"code.gitea.io/gitea/modules/log" | ||||||
|  | 	api "code.gitea.io/gitea/modules/structs" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // NewIssue creates new issue with labels for repository.
 | ||||||
|  | func NewIssue(repo *models.Repository, issue *models.Issue, labelIDs []int64, assigneeIDs []int64, uuids []string) error { | ||||||
|  | 	if err := models.NewIssue(repo, issue, labelIDs, assigneeIDs, uuids); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if err := models.NotifyWatchers(&models.Action{ | ||||||
|  | 		ActUserID: issue.Poster.ID, | ||||||
|  | 		ActUser:   issue.Poster, | ||||||
|  | 		OpType:    models.ActionCreateIssue, | ||||||
|  | 		Content:   fmt.Sprintf("%d|%s", issue.Index, issue.Title), | ||||||
|  | 		RepoID:    repo.ID, | ||||||
|  | 		Repo:      repo, | ||||||
|  | 		IsPrivate: repo.IsPrivate, | ||||||
|  | 	}); err != nil { | ||||||
|  | 		log.Error("NotifyWatchers: %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	mode, _ := models.AccessLevel(issue.Poster, issue.Repo) | ||||||
|  | 	if err := models.PrepareWebhooks(repo, models.HookEventIssues, &api.IssuePayload{ | ||||||
|  | 		Action:     api.HookIssueOpened, | ||||||
|  | 		Index:      issue.Index, | ||||||
|  | 		Issue:      issue.APIFormat(), | ||||||
|  | 		Repository: repo.APIFormat(mode), | ||||||
|  | 		Sender:     issue.Poster.APIFormat(), | ||||||
|  | 	}); err != nil { | ||||||
|  | 		log.Error("PrepareWebhooks: %v", err) | ||||||
|  | 	} else { | ||||||
|  | 		go models.HookQueue.Add(issue.RepoID) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue