Add Index to comment for migrations and mirroring (#18806)
Comments have an id (see Gitea[0], GitLab[1], GitHub[2], etc.), and the comment migration format must represent it during migrations so that it can be used during mirroring or incremental migrations. [0] https://try.gitea.io/api/swagger#/issue/issueGetComment [1] https://docs.gitlab.com/ee/api/discussions.html#get-single-issue-discussion-item [2] https://docs.github.com/en/rest/reference/issues#get-an-issue-comment Signed-off-by: Loïc Dachary <loic@dachary.org> Co-authored-by: Loïc Dachary <loic@dachary.org>
This commit is contained in:
parent
b24e8d38af
commit
cc643284de
8 changed files with 20 additions and 3 deletions
|
@ -178,7 +178,9 @@ func (c *compareDump) assertEquals(repoBefore, repoAfter *repo_model.Repository)
|
|||
assert.GreaterOrEqual(c.t, len(issues), 1)
|
||||
for _, issue := range issues {
|
||||
filename := filepath.Join("comments", fmt.Sprintf("%d.yml", issue.Number))
|
||||
comments, ok := c.assertEqual(filename, []base.Comment{}, compareFields{}).([]*base.Comment)
|
||||
comments, ok := c.assertEqual(filename, []base.Comment{}, compareFields{
|
||||
"Index": {ignore: true},
|
||||
}).([]*base.Comment)
|
||||
assert.True(c.t, ok)
|
||||
for _, comment := range comments {
|
||||
assert.EqualValues(c.t, issue.Number, comment.IssueIndex)
|
||||
|
|
|
@ -9,7 +9,8 @@ import "time"
|
|||
|
||||
// Comment is a standard comment information
|
||||
type Comment struct {
|
||||
IssueIndex int64 `yaml:"issue_index"`
|
||||
IssueIndex int64 `yaml:"issue_index"`
|
||||
Index int64
|
||||
PosterID int64 `yaml:"poster_id"`
|
||||
PosterName string `yaml:"poster_name"`
|
||||
PosterEmail string `yaml:"poster_email"`
|
||||
|
|
|
@ -371,6 +371,7 @@ func (d *CodebaseDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool,
|
|||
poster := d.tryGetUser(note.UserID.Value)
|
||||
comments = append(comments, &base.Comment{
|
||||
IssueIndex: issue.TicketID.Value,
|
||||
Index: note.ID.Value,
|
||||
PosterID: poster.ID,
|
||||
PosterName: poster.Name,
|
||||
PosterEmail: poster.Email,
|
||||
|
@ -481,7 +482,11 @@ func (d *CodebaseDownloader) GetPullRequests(page, perPage int) ([]*base.PullReq
|
|||
Type string `xml:"type,attr"`
|
||||
Comment []struct {
|
||||
Content string `xml:"content"`
|
||||
UserID struct {
|
||||
ID struct {
|
||||
Value int64 `xml:",chardata"`
|
||||
Type string `xml:"type,attr"`
|
||||
} `xml:"id"`
|
||||
UserID struct {
|
||||
Value int64 `xml:",chardata"`
|
||||
Type string `xml:"type,attr"`
|
||||
} `xml:"user-id"`
|
||||
|
@ -528,6 +533,7 @@ func (d *CodebaseDownloader) GetPullRequests(page, perPage int) ([]*base.PullReq
|
|||
poster := d.tryGetUser(comment.UserID.Value)
|
||||
comments = append(comments, &base.Comment{
|
||||
IssueIndex: number,
|
||||
Index: comment.ID.Value,
|
||||
PosterID: poster.ID,
|
||||
PosterName: poster.Name,
|
||||
PosterEmail: poster.Email,
|
||||
|
|
|
@ -473,6 +473,7 @@ func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comm
|
|||
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: opts.Context.LocalID(),
|
||||
Index: comment.ID,
|
||||
PosterID: comment.Poster.ID,
|
||||
PosterName: comment.Poster.UserName,
|
||||
PosterEmail: comment.Poster.Email,
|
||||
|
|
|
@ -532,6 +532,7 @@ func (g *GithubDownloaderV3) getComments(issueContext base.IssueContext) ([]*bas
|
|||
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: issueContext.LocalID(),
|
||||
Index: comment.GetID(),
|
||||
PosterID: comment.GetUser().GetID(),
|
||||
PosterName: comment.GetUser().GetLogin(),
|
||||
PosterEmail: comment.GetUser().GetEmail(),
|
||||
|
@ -607,6 +608,7 @@ func (g *GithubDownloaderV3) GetAllComments(page, perPage int) ([]*base.Comment,
|
|||
issueIndex, _ := strconv.ParseInt((*comment.IssueURL)[idx+1:], 10, 64)
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: issueIndex,
|
||||
Index: comment.GetID(),
|
||||
PosterID: comment.GetUser().GetID(),
|
||||
PosterName: comment.GetUser().GetLogin(),
|
||||
PosterEmail: comment.GetUser().GetEmail(),
|
||||
|
|
|
@ -485,6 +485,7 @@ func (g *GitlabDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Com
|
|||
for _, note := range comment.Notes {
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: context.LocalID(),
|
||||
Index: int64(note.ID),
|
||||
PosterID: int64(note.Author.ID),
|
||||
PosterName: note.Author.Username,
|
||||
PosterEmail: note.Author.Email,
|
||||
|
@ -496,6 +497,7 @@ func (g *GitlabDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Com
|
|||
c := comment.Notes[0]
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: context.LocalID(),
|
||||
Index: int64(c.ID),
|
||||
PosterID: int64(c.Author.ID),
|
||||
PosterName: c.Author.Username,
|
||||
PosterEmail: c.Author.Email,
|
||||
|
|
|
@ -236,6 +236,7 @@ func (g *GogsDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comme
|
|||
}
|
||||
allComments = append(allComments, &base.Comment{
|
||||
IssueIndex: opts.Context.LocalID(),
|
||||
Index: comment.ID,
|
||||
PosterID: comment.Poster.ID,
|
||||
PosterName: comment.Poster.Login,
|
||||
PosterEmail: comment.Poster.Email,
|
||||
|
|
|
@ -379,6 +379,7 @@ func (d *OneDevDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Com
|
|||
}
|
||||
|
||||
rawComments := make([]struct {
|
||||
ID int64 `json:"id"`
|
||||
Date time.Time `json:"date"`
|
||||
UserID int64 `json:"userId"`
|
||||
Content string `json:"content"`
|
||||
|
@ -429,6 +430,7 @@ func (d *OneDevDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Com
|
|||
poster := d.tryGetUser(comment.UserID)
|
||||
comments = append(comments, &base.Comment{
|
||||
IssueIndex: context.LocalID(),
|
||||
Index: comment.ID,
|
||||
PosterID: poster.ID,
|
||||
PosterName: poster.Name,
|
||||
PosterEmail: poster.Email,
|
||||
|
|
Reference in a new issue