MM-49845: fixes acknowledgements in getpostsince (#22124)

* MM-49845: fixes acknowledgements in getpostsince

GetPostsSince returns posts updated after a user requested date.
If a user acknowledges a post the post's update at won't change thus not
getting that post returned from GetPostsSince. This is troublesome
particularly for the mobile client since it relies a lot to
GetPostsSince for keeping the data up to date.

This commit updates the post's update_at when a user
acknowledges/un-acknowledges a post fixing this way the issue above.

* Fixes linter

* Apply suggestions from code review

style changes

Co-authored-by: Jesse Hallam <jesse@thehallams.ca>

* Rename ack to acknowledgement

Co-authored-by: Jesse Hallam <jesse@thehallams.ca>
Этот коммит содержится в:
Kyriakos Z
2023-01-25 14:45:45 +02:00
коммит произвёл GitHub
родитель 82077c9004
Коммит 3094f10557
4 изменённых файлов: 114 добавлений и 13 удалений

Просмотреть файл

@@ -58,6 +58,12 @@ func (s *SqlPostAcknowledgementStore) Save(postID, userID string, acknowledgedAt
return nil, err
}
transaction, err := s.GetMasterX().Beginx()
if err != nil {
return nil, errors.Wrap(err, "begin_transaction")
}
defer finalizeTransactionX(transaction, &err)
query := s.getQueryBuilder().
Insert("PostAcknowledgements").
Columns("PostId", "UserId", "AcknowledgedAt").
@@ -69,28 +75,54 @@ func (s *SqlPostAcknowledgementStore) Save(postID, userID string, acknowledgedAt
query = query.SuffixExpr(sq.Expr("ON CONFLICT (postid, userid) DO UPDATE SET AcknowledgedAt = ?", acknowledgement.AcknowledgedAt))
}
_, err := s.GetMasterX().ExecBuilder(query)
_, err = transaction.ExecBuilder(query)
if err != nil {
return nil, err
}
err = updatePost(transaction, acknowledgement.PostId)
if err != nil {
return nil, err
}
err = transaction.Commit()
if err != nil {
return nil, errors.Wrap(err, "commit_transaction")
}
return acknowledgement, nil
}
func (s *SqlPostAcknowledgementStore) Delete(ack *model.PostAcknowledgement) error {
func (s *SqlPostAcknowledgementStore) Delete(acknowledgement *model.PostAcknowledgement) error {
transaction, err := s.GetMasterX().Beginx()
if err != nil {
return errors.Wrap(err, "begin_transaction")
}
defer finalizeTransactionX(transaction, &err)
query := s.getQueryBuilder().
Update("PostAcknowledgements").
Set("AcknowledgedAt", 0).
Where(sq.And{
sq.Eq{"PostId": ack.PostId},
sq.Eq{"UserId": ack.UserId},
sq.Eq{"PostId": acknowledgement.PostId},
sq.Eq{"UserId": acknowledgement.UserId},
})
_, err := s.GetMasterX().ExecBuilder(query)
_, err = transaction.ExecBuilder(query)
if err != nil {
return err
}
err = updatePost(transaction, acknowledgement.PostId)
if err != nil {
return err
}
err = transaction.Commit()
if err != nil {
return errors.Wrap(err, "commit_transaction")
}
return nil
}
@@ -142,3 +174,18 @@ func (s *SqlPostAcknowledgementStore) GetForPosts(postIds []string) ([]*model.Po
return acknowledgements, nil
}
func updatePost(transaction *sqlxTxWrapper, postId string) error {
_, err := transaction.Exec(
`UPDATE
Posts
SET
UpdateAt = ?
WHERE
Id = ?`,
model.GetMillis(),
postId,
)
return err
}