Pettier code to set the update time of comments
Now uses sess.AllCols().NoAutoToime().SetExpr("updated_unix", ...) XORM is smart enough to compose one single SQL UPDATE which all columns + updated_unix.
This commit is contained in:
parent
da932152f1
commit
1f6a42808d
1 changed files with 9 additions and 14 deletions
|
@ -1106,24 +1106,19 @@ func UpdateComment(c *Comment, doer *user_model.User) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
sess := db.GetEngine(ctx).ID(c.ID).AllCols()
|
sess := db.GetEngine(ctx).ID(c.ID).AllCols()
|
||||||
|
if c.Issue.NoAutoTime {
|
||||||
|
// update the DataBase
|
||||||
|
sess = sess.NoAutoTime().SetExpr("updated_unix", c.Issue.UpdatedUnix)
|
||||||
|
// the UpdatedUnix value of the Comment also has to be set,
|
||||||
|
// to return the adequate valuè
|
||||||
|
// see https://codeberg.org/forgejo/forgejo/pulls/764#issuecomment-1023801
|
||||||
|
c.UpdatedUnix = c.Issue.UpdatedUnix
|
||||||
|
}
|
||||||
if _, err := sess.Update(c); err != nil {
|
if _, err := sess.Update(c); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if c.Issue.NoAutoTime {
|
|
||||||
// AllCols().Update() does not change the "update_unix" field
|
|
||||||
// even if NoAutoTime is set.
|
|
||||||
// So, we need to commit the former pending Update() and
|
|
||||||
// then call an other Update() specifically to set "updated_unix".
|
|
||||||
if err := committer.Commit(); err != nil {
|
|
||||||
return fmt.Errorf("Commit: %w", err)
|
|
||||||
}
|
|
||||||
c.UpdatedUnix = c.Issue.UpdatedUnix
|
|
||||||
sess := db.GetEngine(ctx).ID(c.ID).Cols("updated_unix").NoAutoTime()
|
|
||||||
if _, err := sess.Update(c); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err := c.LoadIssue(ctx); err != nil {
|
if err := c.LoadIssue(ctx); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue