123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- // Copyright 2020 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package convert
-
- import (
- "context"
-
- 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"
- )
-
- // ToAPIComment converts a issues_model.Comment to the api.Comment format for API usage
- func ToAPIComment(ctx context.Context, repo *repo_model.Repository, c *issues_model.Comment) *api.Comment {
- return &api.Comment{
- ID: c.ID,
- Poster: ToUser(ctx, c.Poster, nil),
- HTMLURL: c.HTMLURL(),
- IssueURL: c.IssueURL(),
- PRURL: c.PRURL(),
- Body: c.Content,
- Attachments: ToAPIAttachments(repo, c.Attachments),
- Created: c.CreatedUnix.AsTime(),
- Updated: c.UpdatedUnix.AsTime(),
- }
- }
-
- // ToTimelineComment converts a issues_model.Comment to the api.TimelineComment format
- func ToTimelineComment(ctx context.Context, repo *repo_model.Repository, c *issues_model.Comment, doer *user_model.User) *api.TimelineComment {
- err := c.LoadMilestone(ctx)
- 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(ctx, 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 {
- err = c.Time.LoadAttributes()
- if err != nil {
- log.Error("Time.LoadAttributes: %v", err)
- return nil
- }
-
- comment.TrackedTime = ToTrackedTime(ctx, c.Time)
- }
-
- if c.RefIssueID != 0 {
- issue, err := issues_model.GetIssueByID(ctx, c.RefIssueID)
- if err != nil {
- log.Error("GetIssueByID(%d): %v", c.RefIssueID, err)
- return nil
- }
- comment.RefIssue = ToAPIIssue(ctx, issue)
- }
-
- if c.RefCommentID != 0 {
- com, err := issues_model.GetCommentByID(ctx, c.RefCommentID)
- if err != nil {
- log.Error("GetCommentByID(%d): %v", c.RefCommentID, err)
- return nil
- }
- err = com.LoadPoster(ctx)
- if err != nil {
- log.Error("LoadPoster: %v", err)
- return nil
- }
- comment.RefComment = ToAPIComment(ctx, repo, 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(ctx, 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(ctx, 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(ctx, c.Assignee, nil)
- }
- if c.AssigneeTeam != nil {
- comment.AssigneeTeam, _ = ToTeam(ctx, c.AssigneeTeam)
- }
-
- if c.ResolveDoer != nil {
- comment.ResolveDoer = ToUser(ctx, c.ResolveDoer, nil)
- }
-
- if c.DependentIssue != nil {
- comment.DependentIssue = ToAPIIssue(ctx, c.DependentIssue)
- }
-
- return comment
- }
|