package chapters import ( "time" "git.aiterp.net/rpdata/api/models" "github.com/globalsign/mgo/bson" ) // Edit edits a chapter, and updates EditedDate. While many Edit functions cheat if there's nothing to // change, this functill will due to EditedDate. func Edit(chapter models.Chapter, title, source *string, fictionalDate *time.Time, commentMode *models.ChapterCommentMode, commentsLocked *bool) (models.Chapter, error) { now := time.Now() changes := bson.M{"editedDate": now} edited := chapter edited.EditedDate = now if title != nil && *title != chapter.Title { changes["title"] = *title edited.Title = *title } if source != nil && *source != chapter.Source { changes["source"] = *source edited.Source = *source } if fictionalDate != nil && !fictionalDate.Equal(chapter.FictionalDate) { changes["fictionalDate"] = *fictionalDate edited.FictionalDate = *fictionalDate } if commentMode != nil && *commentMode != chapter.CommentMode { changes["commentMode"] = *commentMode edited.CommentMode = *commentMode } if commentsLocked != nil && *commentsLocked != chapter.CommentsLocked { changes["commentsLocked"] = *commentsLocked edited.CommentsLocked = *commentsLocked } err := collection.UpdateId(chapter.ID, bson.M{"$set": changes}) if err != nil { return chapter, err } return edited, nil }