From 6e2b540394fff287a4ab7d338709841753198b6f Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 13 Apr 2024 14:44:55 +0200 Subject: [PATCH] fix(migration): import task comments with original timestamps Partially resolves https://community.vikunja.io/t/trello-import-comments-and-assignments/2174/14 --- pkg/models/task_comments.go | 21 ++++++++++++++++--- .../migration/create_from_structure.go | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/pkg/models/task_comments.go b/pkg/models/task_comments.go index ded53acf48..968cc9c1a5 100644 --- a/pkg/models/task_comments.go +++ b/pkg/models/task_comments.go @@ -65,6 +65,14 @@ func (tc *TaskComment) TableName() string { // @Failure 500 {object} models.Message "Internal error" // @Router /tasks/{taskID}/comments [put] func (tc *TaskComment) Create(s *xorm.Session, a web.Auth) (err error) { + + tc.Created = time.Time{} + tc.Updated = time.Time{} + + return tc.CreateWithTimestamps(s, a) +} + +func (tc *TaskComment) CreateWithTimestamps(s *xorm.Session, a web.Auth) (err error) { // Check if the task exists task, err := GetTaskSimple(s, &Task{ID: tc.TaskID}) if err != nil { @@ -77,9 +85,16 @@ func (tc *TaskComment) Create(s *xorm.Session, a web.Auth) (err error) { } tc.AuthorID = tc.Author.ID - _, err = s.Insert(tc) - if err != nil { - return + if !tc.Created.IsZero() && !tc.Updated.IsZero() { + _, err = s.NoAutoTime().Insert(tc) + if err != nil { + return + } + } else { + _, err = s.Insert(tc) + if err != nil { + return + } } return events.Dispatch(&TaskCommentCreatedEvent{ diff --git a/pkg/modules/migration/create_from_structure.go b/pkg/modules/migration/create_from_structure.go index 12bad93dd8..d4f7c50ec8 100644 --- a/pkg/modules/migration/create_from_structure.go +++ b/pkg/modules/migration/create_from_structure.go @@ -359,10 +359,11 @@ func createProjectWithEverything(s *xorm.Session, project *models.ProjectWithTas log.Debugf("[creating structure] Associated task %d with label %d", t.ID, lb.ID) } + // Comments for _, comment := range t.Comments { comment.TaskID = t.ID comment.ID = 0 - err = comment.Create(s, user) + err = comment.CreateWithTimestamps(s, user) if err != nil { return }