mirror of
https://github.com/christianselig/apollo-backend
synced 2024-11-10 22:17:44 +00:00
actually remember last message id so we don't duplicate notifications
This commit is contained in:
parent
3ce858927b
commit
b9373832eb
1 changed files with 19 additions and 21 deletions
|
@ -327,30 +327,28 @@ func (c *Consumer) Consume(delivery rmq.Delivery) {
|
||||||
|
|
||||||
// Set latest message we alerted on
|
// Set latest message we alerted on
|
||||||
latestMsg := msgs.MessageListing.Messages[0]
|
latestMsg := msgs.MessageListing.Messages[0]
|
||||||
|
if err = c.pool.BeginFunc(ctx, func(tx pgx.Tx) error {
|
||||||
|
stmt := `
|
||||||
|
UPDATE accounts
|
||||||
|
SET last_message_id = $1
|
||||||
|
WHERE id = $2`
|
||||||
|
_, err := tx.Exec(ctx, stmt, latestMsg.FullName(), account.ID)
|
||||||
|
return err
|
||||||
|
}); err != nil {
|
||||||
|
c.logger.WithFields(logrus.Fields{
|
||||||
|
"accountID": id,
|
||||||
|
"err": err,
|
||||||
|
}).Error("failed to update last_message_id for account")
|
||||||
|
delivery.Reject()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Let's populate this with the latest message so we don't flood users with stuff
|
// Let's populate this with the latest message so we don't flood users with stuff
|
||||||
if account.LastMessageID == "" {
|
if account.LastMessageID == "" {
|
||||||
if err = c.pool.BeginFunc(ctx, func(tx pgx.Tx) error {
|
c.logger.WithFields(logrus.Fields{
|
||||||
stmt := `
|
"accountID": delivery.Payload(),
|
||||||
UPDATE accounts
|
}).Debug("populating first message ID to prevent spamming")
|
||||||
SET last_message_id = $1
|
delivery.Ack()
|
||||||
WHERE id = $2`
|
|
||||||
_, err := tx.Exec(ctx, stmt, latestMsg.FullName(), account.ID)
|
|
||||||
return err
|
|
||||||
}); err != nil {
|
|
||||||
c.logger.WithFields(logrus.Fields{
|
|
||||||
"accountID": id,
|
|
||||||
"err": err,
|
|
||||||
}).Error("failed to update last_message_id for account")
|
|
||||||
|
|
||||||
delivery.Reject()
|
|
||||||
} else {
|
|
||||||
c.logger.WithFields(logrus.Fields{
|
|
||||||
"accountID": delivery.Payload(),
|
|
||||||
}).Debug("populating first message ID to prevent spamming")
|
|
||||||
|
|
||||||
delivery.Ack()
|
|
||||||
}
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue