mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-27 00:23:41 +09:00 
			
		
		
		
	* Move access and repo permission to models/perm/access * fix test * fix git test * Move functions sequence * Some improvements per @KN4CK3R and @delvh * Move issues related code to models/issues * Move some issues related sub package * Merge * Fix test * Fix test * Fix test * Fix test * Rename some files
		
			
				
	
	
		
			169 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2020 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 convert
 | |
| 
 | |
| import (
 | |
| 	"code.gitea.io/gitea/models/db"
 | |
| 	issues_model "code.gitea.io/gitea/models/issues"
 | |
| 	repo_model "code.gitea.io/gitea/models/repo"
 | |
| 	user_model "code.gitea.io/gitea/models/user"
 | |
| 	"code.gitea.io/gitea/modules/log"
 | |
| 	api "code.gitea.io/gitea/modules/structs"
 | |
| )
 | |
| 
 | |
| // ToComment converts a issues_model.Comment to the api.Comment format
 | |
| func ToComment(c *issues_model.Comment) *api.Comment {
 | |
| 	return &api.Comment{
 | |
| 		ID:       c.ID,
 | |
| 		Poster:   ToUser(c.Poster, nil),
 | |
| 		HTMLURL:  c.HTMLURL(),
 | |
| 		IssueURL: c.IssueURL(),
 | |
| 		PRURL:    c.PRURL(),
 | |
| 		Body:     c.Content,
 | |
| 		Created:  c.CreatedUnix.AsTime(),
 | |
| 		Updated:  c.UpdatedUnix.AsTime(),
 | |
| 	}
 | |
| }
 | |
| 
 | |
| // ToTimelineComment converts a issues_model.Comment to the api.TimelineComment format
 | |
| func ToTimelineComment(c *issues_model.Comment, doer *user_model.User) *api.TimelineComment {
 | |
| 	err := c.LoadMilestone()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadMilestone: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	err = c.LoadAssigneeUserAndTeam()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadAssigneeUserAndTeam: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	err = c.LoadResolveDoer()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadResolveDoer: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	err = c.LoadDepIssueDetails()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadDepIssueDetails: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	err = c.LoadTime()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadTime: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	err = c.LoadLabel()
 | |
| 	if err != nil {
 | |
| 		log.Error("LoadLabel: %v", err)
 | |
| 		return nil
 | |
| 	}
 | |
| 
 | |
| 	comment := &api.TimelineComment{
 | |
| 		ID:       c.ID,
 | |
| 		Type:     c.Type.String(),
 | |
| 		Poster:   ToUser(c.Poster, nil),
 | |
| 		HTMLURL:  c.HTMLURL(),
 | |
| 		IssueURL: c.IssueURL(),
 | |
| 		PRURL:    c.PRURL(),
 | |
| 		Body:     c.Content,
 | |
| 		Created:  c.CreatedUnix.AsTime(),
 | |
| 		Updated:  c.UpdatedUnix.AsTime(),
 | |
| 
 | |
| 		OldProjectID: c.OldProjectID,
 | |
| 		ProjectID:    c.ProjectID,
 | |
| 
 | |
| 		OldTitle: c.OldTitle,
 | |
| 		NewTitle: c.NewTitle,
 | |
| 
 | |
| 		OldRef: c.OldRef,
 | |
| 		NewRef: c.NewRef,
 | |
| 
 | |
| 		RefAction:    c.RefAction.String(),
 | |
| 		RefCommitSHA: c.CommitSHA,
 | |
| 
 | |
| 		ReviewID: c.ReviewID,
 | |
| 
 | |
| 		RemovedAssignee: c.RemovedAssignee,
 | |
| 	}
 | |
| 
 | |
| 	if c.OldMilestone != nil {
 | |
| 		comment.OldMilestone = ToAPIMilestone(c.OldMilestone)
 | |
| 	}
 | |
| 	if c.Milestone != nil {
 | |
| 		comment.Milestone = ToAPIMilestone(c.Milestone)
 | |
| 	}
 | |
| 
 | |
| 	if c.Time != nil {
 | |
| 		comment.TrackedTime = ToTrackedTime(c.Time)
 | |
| 	}
 | |
| 
 | |
| 	if c.RefIssueID != 0 {
 | |
| 		issue, err := issues_model.GetIssueByID(db.DefaultContext, c.RefIssueID)
 | |
| 		if err != nil {
 | |
| 			log.Error("GetIssueByID(%d): %v", c.RefIssueID, err)
 | |
| 			return nil
 | |
| 		}
 | |
| 		comment.RefIssue = ToAPIIssue(issue)
 | |
| 	}
 | |
| 
 | |
| 	if c.RefCommentID != 0 {
 | |
| 		com, err := issues_model.GetCommentByID(db.DefaultContext, c.RefCommentID)
 | |
| 		if err != nil {
 | |
| 			log.Error("GetCommentByID(%d): %v", c.RefCommentID, err)
 | |
| 			return nil
 | |
| 		}
 | |
| 		err = com.LoadPoster()
 | |
| 		if err != nil {
 | |
| 			log.Error("LoadPoster: %v", err)
 | |
| 			return nil
 | |
| 		}
 | |
| 		comment.RefComment = ToComment(com)
 | |
| 	}
 | |
| 
 | |
| 	if c.Label != nil {
 | |
| 		var org *user_model.User
 | |
| 		var repo *repo_model.Repository
 | |
| 		if c.Label.BelongsToOrg() {
 | |
| 			var err error
 | |
| 			org, err = user_model.GetUserByID(c.Label.OrgID)
 | |
| 			if err != nil {
 | |
| 				log.Error("GetUserByID(%d): %v", c.Label.OrgID, err)
 | |
| 				return nil
 | |
| 			}
 | |
| 		}
 | |
| 		if c.Label.BelongsToRepo() {
 | |
| 			var err error
 | |
| 			repo, err = repo_model.GetRepositoryByID(c.Label.RepoID)
 | |
| 			if err != nil {
 | |
| 				log.Error("GetRepositoryByID(%d): %v", c.Label.RepoID, err)
 | |
| 				return nil
 | |
| 			}
 | |
| 		}
 | |
| 		comment.Label = ToLabel(c.Label, repo, org)
 | |
| 	}
 | |
| 
 | |
| 	if c.Assignee != nil {
 | |
| 		comment.Assignee = ToUser(c.Assignee, nil)
 | |
| 	}
 | |
| 	if c.AssigneeTeam != nil {
 | |
| 		comment.AssigneeTeam, _ = ToTeam(c.AssigneeTeam)
 | |
| 	}
 | |
| 
 | |
| 	if c.ResolveDoer != nil {
 | |
| 		comment.ResolveDoer = ToUser(c.ResolveDoer, nil)
 | |
| 	}
 | |
| 
 | |
| 	if c.DependentIssue != nil {
 | |
| 		comment.DependentIssue = ToAPIIssue(c.DependentIssue)
 | |
| 	}
 | |
| 
 | |
| 	return comment
 | |
| }
 |