mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 11:35:03 +01:00 
			
		
		
		
	Lint issue.go
This commit is contained in:
		
							parent
							
								
									6ed7f269f1
								
							
						
					
					
						commit
						4dd1eb57bd
					
				
							
								
								
									
										113
									
								
								models/issue.go
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								models/issue.go
									
									
									
									
									
								
							| @ -25,7 +25,7 @@ import ( | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| 	ErrMissingIssueNumber = errors.New("No issue number specified") | ||||
| 	errMissingIssueNumber = errors.New("No issue number specified") | ||||
| ) | ||||
| 
 | ||||
| // Issue represents an issue or pull request of repository. | ||||
| @ -62,16 +62,19 @@ type Issue struct { | ||||
| 	Comments    []*Comment    `xorm:"-"` | ||||
| } | ||||
| 
 | ||||
| // BeforeInsert ... | ||||
| func (issue *Issue) BeforeInsert() { | ||||
| 	issue.CreatedUnix = time.Now().Unix() | ||||
| 	issue.UpdatedUnix = issue.CreatedUnix | ||||
| } | ||||
| 
 | ||||
| // BeforeUpdate ... | ||||
| func (issue *Issue) BeforeUpdate() { | ||||
| 	issue.UpdatedUnix = time.Now().Unix() | ||||
| 	issue.DeadlineUnix = issue.Deadline.Unix() | ||||
| } | ||||
| 
 | ||||
| // AfterSet ... | ||||
| func (issue *Issue) AfterSet(colName string, _ xorm.Cell) { | ||||
| 	switch colName { | ||||
| 	case "deadline_unix": | ||||
| @ -83,6 +86,7 @@ func (issue *Issue) AfterSet(colName string, _ xorm.Cell) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // loadAttributes ... | ||||
| func (issue *Issue) loadAttributes(e Engine) (err error) { | ||||
| 	if issue.Repo == nil { | ||||
| 		issue.Repo, err = getRepositoryByID(e, issue.RepoID) | ||||
| @ -150,10 +154,12 @@ func (issue *Issue) loadAttributes(e Engine) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // LoadAttributes ... | ||||
| func (issue *Issue) LoadAttributes() error { | ||||
| 	return issue.loadAttributes(x) | ||||
| } | ||||
| 
 | ||||
| // HTMLURL ... | ||||
| func (issue *Issue) HTMLURL() string { | ||||
| 	var path string | ||||
| 	if issue.IsPull { | ||||
| @ -165,14 +171,14 @@ func (issue *Issue) HTMLURL() string { | ||||
| } | ||||
| 
 | ||||
| // State returns string representation of issue status. | ||||
| func (i *Issue) State() api.StateType { | ||||
| 	if i.IsClosed { | ||||
| func (issue *Issue) State() api.StateType { | ||||
| 	if issue.IsClosed { | ||||
| 		return api.STATE_CLOSED | ||||
| 	} | ||||
| 	return api.STATE_OPEN | ||||
| } | ||||
| 
 | ||||
| // This method assumes some fields assigned with values: | ||||
| // APIFormat assumes some fields assigned with values: | ||||
| // Required - Poster, Labels, | ||||
| // Optional - Milestone, Assignee, PullRequest | ||||
| func (issue *Issue) APIFormat() *api.Issue { | ||||
| @ -213,24 +219,25 @@ func (issue *Issue) APIFormat() *api.Issue { | ||||
| } | ||||
| 
 | ||||
| // HashTag returns unique hash tag for issue. | ||||
| func (i *Issue) HashTag() string { | ||||
| 	return "issue-" + com.ToStr(i.ID) | ||||
| func (issue *Issue) HashTag() string { | ||||
| 	return "issue-" + com.ToStr(issue.ID) | ||||
| } | ||||
| 
 | ||||
| // IsPoster returns true if given user by ID is the poster. | ||||
| func (i *Issue) IsPoster(uid int64) bool { | ||||
| 	return i.PosterID == uid | ||||
| func (issue *Issue) IsPoster(uid int64) bool { | ||||
| 	return issue.PosterID == uid | ||||
| } | ||||
| 
 | ||||
| func (i *Issue) hasLabel(e Engine, labelID int64) bool { | ||||
| 	return hasIssueLabel(e, i.ID, labelID) | ||||
| func (issue *Issue) hasLabel(e Engine, labelID int64) bool { | ||||
| 	return hasIssueLabel(e, issue.ID, labelID) | ||||
| } | ||||
| 
 | ||||
| // HasLabel returns true if issue has been labeled by given ID. | ||||
| func (i *Issue) HasLabel(labelID int64) bool { | ||||
| 	return i.hasLabel(x, labelID) | ||||
| func (issue *Issue) HasLabel(labelID int64) bool { | ||||
| 	return issue.hasLabel(x, labelID) | ||||
| } | ||||
| 
 | ||||
| // sendLabelUpdatedWebhook ... | ||||
| func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { | ||||
| 	var err error | ||||
| 	if issue.IsPull { | ||||
| @ -254,8 +261,9 @@ func (issue *Issue) sendLabelUpdatedWebhook(doer *User) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (i *Issue) addLabel(e *xorm.Session, label *Label) error { | ||||
| 	return newIssueLabel(e, i, label) | ||||
| // addLabel ... | ||||
| func (issue *Issue) addLabel(e *xorm.Session, label *Label) error { | ||||
| 	return newIssueLabel(e, issue, label) | ||||
| } | ||||
| 
 | ||||
| // AddLabel adds a new label to the issue. | ||||
| @ -268,6 +276,7 @@ func (issue *Issue) AddLabel(doer *User, label *Label) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // addLabels ... | ||||
| func (issue *Issue) addLabels(e *xorm.Session, labels []*Label) error { | ||||
| 	return newIssueLabels(e, issue, labels) | ||||
| } | ||||
| @ -282,6 +291,7 @@ func (issue *Issue) AddLabels(doer *User, labels []*Label) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // getLabels ... | ||||
| func (issue *Issue) getLabels(e Engine) (err error) { | ||||
| 	if len(issue.Labels) > 0 { | ||||
| 		return nil | ||||
| @ -294,6 +304,7 @@ func (issue *Issue) getLabels(e Engine) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // removeLabel ... | ||||
| func (issue *Issue) removeLabel(e *xorm.Session, label *Label) error { | ||||
| 	return deleteIssueLabel(e, issue, label) | ||||
| } | ||||
| @ -308,6 +319,7 @@ func (issue *Issue) RemoveLabel(doer *User, label *Label) error { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // clearLabels ... | ||||
| func (issue *Issue) clearLabels(e *xorm.Session) (err error) { | ||||
| 	if err = issue.getLabels(e); err != nil { | ||||
| 		return fmt.Errorf("getLabels: %v", err) | ||||
| @ -322,6 +334,7 @@ func (issue *Issue) clearLabels(e *xorm.Session) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ClearLabels ... | ||||
| func (issue *Issue) ClearLabels(doer *User) (err error) { | ||||
| 	sess := x.NewSession() | ||||
| 	defer sessionRelease(sess) | ||||
| @ -377,12 +390,13 @@ func (issue *Issue) ReplaceLabels(labels []*Label) (err error) { | ||||
| 	return sess.Commit() | ||||
| } | ||||
| 
 | ||||
| func (i *Issue) GetAssignee() (err error) { | ||||
| 	if i.AssigneeID == 0 || i.Assignee != nil { | ||||
| // GetAssignee ... | ||||
| func (issue *Issue) GetAssignee() (err error) { | ||||
| 	if issue.AssigneeID == 0 || issue.Assignee != nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	i.Assignee, err = GetUserByID(i.AssigneeID) | ||||
| 	issue.Assignee, err = GetUserByID(issue.AssigneeID) | ||||
| 	if IsErrUserNotExist(err) { | ||||
| 		return nil | ||||
| 	} | ||||
| @ -390,8 +404,8 @@ func (i *Issue) GetAssignee() (err error) { | ||||
| } | ||||
| 
 | ||||
| // ReadBy sets issue to be read by given user. | ||||
| func (i *Issue) ReadBy(uid int64) error { | ||||
| 	return UpdateIssueUserByRead(uid, i.ID) | ||||
| func (issue *Issue) ReadBy(uid int64) error { | ||||
| 	return UpdateIssueUserByRead(uid, issue.ID) | ||||
| } | ||||
| 
 | ||||
| func updateIssueCols(e Engine, issue *Issue, cols ...string) error { | ||||
| @ -404,41 +418,42 @@ func UpdateIssueCols(issue *Issue, cols ...string) error { | ||||
| 	return updateIssueCols(x, issue, cols...) | ||||
| } | ||||
| 
 | ||||
| func (i *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository, isClosed bool) (err error) { | ||||
| // changeStatus ... | ||||
| func (issue *Issue) changeStatus(e *xorm.Session, doer *User, repo *Repository, isClosed bool) (err error) { | ||||
| 	// Nothing should be performed if current status is same as target status | ||||
| 	if i.IsClosed == isClosed { | ||||
| 	if issue.IsClosed == isClosed { | ||||
| 		return nil | ||||
| 	} | ||||
| 	i.IsClosed = isClosed | ||||
| 	issue.IsClosed = isClosed | ||||
| 
 | ||||
| 	if err = updateIssueCols(e, i, "is_closed"); err != nil { | ||||
| 	if err = updateIssueCols(e, issue, "is_closed"); err != nil { | ||||
| 		return err | ||||
| 	} else if err = updateIssueUsersByStatus(e, i.ID, isClosed); err != nil { | ||||
| 	} else if err = updateIssueUsersByStatus(e, issue.ID, isClosed); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	// Update issue count of labels | ||||
| 	if err = i.getLabels(e); err != nil { | ||||
| 	if err = issue.getLabels(e); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	for idx := range i.Labels { | ||||
| 		if i.IsClosed { | ||||
| 			i.Labels[idx].NumClosedIssues++ | ||||
| 	for idx := range issue.Labels { | ||||
| 		if issue.IsClosed { | ||||
| 			issue.Labels[idx].NumClosedIssues++ | ||||
| 		} else { | ||||
| 			i.Labels[idx].NumClosedIssues-- | ||||
| 			issue.Labels[idx].NumClosedIssues-- | ||||
| 		} | ||||
| 		if err = updateLabel(e, i.Labels[idx]); err != nil { | ||||
| 		if err = updateLabel(e, issue.Labels[idx]); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	// Update issue count of milestone | ||||
| 	if err = changeMilestoneIssueStats(e, i); err != nil { | ||||
| 	if err = changeMilestoneIssueStats(e, issue); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	// New action comment | ||||
| 	if _, err = createStatusComment(e, doer, repo, i); err != nil { | ||||
| 	if _, err = createStatusComment(e, doer, repo, issue); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| @ -486,6 +501,7 @@ func (issue *Issue) ChangeStatus(doer *User, repo *Repository, isClosed bool) (e | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ChangeTitle ... | ||||
| func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { | ||||
| 	oldTitle := issue.Title | ||||
| 	issue.Title = title | ||||
| @ -517,6 +533,7 @@ func (issue *Issue) ChangeTitle(doer *User, title string) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ChangeContent ... | ||||
| func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | ||||
| 	oldContent := issue.Content | ||||
| 	issue.Content = content | ||||
| @ -548,6 +565,7 @@ func (issue *Issue) ChangeContent(doer *User, content string) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ChangeAssignee ... | ||||
| func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { | ||||
| 	issue.AssigneeID = assigneeID | ||||
| 	if err = UpdateIssueUserByAssignee(issue); err != nil { | ||||
| @ -586,6 +604,7 @@ func (issue *Issue) ChangeAssignee(doer *User, assigneeID int64) (err error) { | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // NewIssueOptions ... | ||||
| type NewIssueOptions struct { | ||||
| 	Repo        *Repository | ||||
| 	Issue       *Issue | ||||
| @ -735,7 +754,7 @@ func NewIssue(repo *Repository, issue *Issue, labelIDs []int64, uuids []string) | ||||
| func GetIssueByRef(ref string) (*Issue, error) { | ||||
| 	n := strings.IndexByte(ref, byte('#')) | ||||
| 	if n == -1 { | ||||
| 		return nil, ErrMissingIssueNumber | ||||
| 		return nil, errMissingIssueNumber | ||||
| 	} | ||||
| 
 | ||||
| 	index, err := com.StrTo(ref[n+1:]).Int64() | ||||
| @ -756,7 +775,7 @@ func GetIssueByRef(ref string) (*Issue, error) { | ||||
| 	return issue, issue.LoadAttributes() | ||||
| } | ||||
| 
 | ||||
| // GetIssueByIndex returns raw issue without loading attributes by index in a repository. | ||||
| // GetRawIssueByIndex returns raw issue without loading attributes by index in a repository. | ||||
| func GetRawIssueByIndex(repoID, index int64) (*Issue, error) { | ||||
| 	issue := &Issue{ | ||||
| 		RepoID: repoID, | ||||
| @ -796,6 +815,7 @@ func GetIssueByID(id int64) (*Issue, error) { | ||||
| 	return getIssueByID(x, id) | ||||
| } | ||||
| 
 | ||||
| // IssuesOptions ... | ||||
| type IssuesOptions struct { | ||||
| 	UserID      int64 | ||||
| 	AssigneeID  int64 | ||||
| @ -967,9 +987,9 @@ func NewIssueUsers(repo *Repository, issue *Issue) (err error) { | ||||
| } | ||||
| 
 | ||||
| // PairsContains returns true when pairs list contains given issue. | ||||
| func PairsContains(ius []*IssueUser, issueId, uid int64) int { | ||||
| func PairsContains(ius []*IssueUser, issueID, uid int64) int { | ||||
| 	for i := range ius { | ||||
| 		if ius[i].IssueID == issueId && | ||||
| 		if ius[i].IssueID == issueID && | ||||
| 			ius[i].UID == uid { | ||||
| 			return i | ||||
| 		} | ||||
| @ -1092,6 +1112,7 @@ func parseCountResult(results []map[string][]byte) int64 { | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| // IssueStatsOptions ... | ||||
| type IssueStatsOptions struct { | ||||
| 	RepoID      int64 | ||||
| 	UserID      int64 | ||||
| @ -1350,10 +1371,12 @@ type Milestone struct { | ||||
| 	ClosedDateUnix int64 | ||||
| } | ||||
| 
 | ||||
| // BeforeInsert ... | ||||
| func (m *Milestone) BeforeInsert() { | ||||
| 	m.DeadlineUnix = m.Deadline.Unix() | ||||
| } | ||||
| 
 | ||||
| // BeforeUpdate ... | ||||
| func (m *Milestone) BeforeUpdate() { | ||||
| 	if m.NumIssues > 0 { | ||||
| 		m.Completeness = m.NumClosedIssues * 100 / m.NumIssues | ||||
| @ -1365,6 +1388,7 @@ func (m *Milestone) BeforeUpdate() { | ||||
| 	m.ClosedDateUnix = m.ClosedDate.Unix() | ||||
| } | ||||
| 
 | ||||
| // AfterSet ... | ||||
| func (m *Milestone) AfterSet(colName string, _ xorm.Cell) { | ||||
| 	switch colName { | ||||
| 	case "num_closed_issues": | ||||
| @ -1394,6 +1418,7 @@ func (m *Milestone) State() api.StateType { | ||||
| 	return api.STATE_OPEN | ||||
| } | ||||
| 
 | ||||
| // APIFormat ... | ||||
| func (m *Milestone) APIFormat() *api.Milestone { | ||||
| 	apiMilestone := &api.Milestone{ | ||||
| 		ID:           m.ID, | ||||
| @ -1444,7 +1469,7 @@ func getMilestoneByRepoID(e Engine, repoID, id int64) (*Milestone, error) { | ||||
| 	return m, nil | ||||
| } | ||||
| 
 | ||||
| // GetWebhookByRepoID returns the milestone in a repository. | ||||
| // GetMilestoneByRepoID returns the milestone in a repository. | ||||
| func GetMilestoneByRepoID(repoID, id int64) (*Milestone, error) { | ||||
| 	return getMilestoneByRepoID(x, repoID, id) | ||||
| } | ||||
| @ -1676,10 +1701,12 @@ type Attachment struct { | ||||
| 	CreatedUnix int64 | ||||
| } | ||||
| 
 | ||||
| // BeforeInsert ... | ||||
| func (a *Attachment) BeforeInsert() { | ||||
| 	a.CreatedUnix = time.Now().Unix() | ||||
| } | ||||
| 
 | ||||
| // AfterSet ... | ||||
| func (a *Attachment) AfterSet(colName string, _ xorm.Cell) { | ||||
| 	switch colName { | ||||
| 	case "created_unix": | ||||
| @ -1693,8 +1720,8 @@ func AttachmentLocalPath(uuid string) string { | ||||
| } | ||||
| 
 | ||||
| // LocalPath returns where attachment is stored in local file system. | ||||
| func (attach *Attachment) LocalPath() string { | ||||
| 	return AttachmentLocalPath(attach.UUID) | ||||
| func (a *Attachment) LocalPath() string { | ||||
| 	return AttachmentLocalPath(a.UUID) | ||||
| } | ||||
| 
 | ||||
| // NewAttachment creates a new attachment object. | ||||
| @ -1794,8 +1821,8 @@ func DeleteAttachments(attachments []*Attachment, remove bool) (int, error) { | ||||
| } | ||||
| 
 | ||||
| // DeleteAttachmentsByIssue deletes all attachments associated with the given issue. | ||||
| func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error) { | ||||
| 	attachments, err := GetAttachmentsByIssueID(issueId) | ||||
| func DeleteAttachmentsByIssue(issueID int64, remove bool) (int, error) { | ||||
| 	attachments, err := GetAttachmentsByIssueID(issueID) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| @ -1805,8 +1832,8 @@ func DeleteAttachmentsByIssue(issueId int64, remove bool) (int, error) { | ||||
| } | ||||
| 
 | ||||
| // DeleteAttachmentsByComment deletes all attachments associated with the given comment. | ||||
| func DeleteAttachmentsByComment(commentId int64, remove bool) (int, error) { | ||||
| 	attachments, err := GetAttachmentsByCommentID(commentId) | ||||
| func DeleteAttachmentsByComment(commentID int64, remove bool) (int, error) { | ||||
| 	attachments, err := GetAttachmentsByCommentID(commentID) | ||||
| 
 | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user