actually remember last message id so we don't duplicate notifications

This commit is contained in:
Andre Medeiros 2021-07-08 23:29:53 -04:00
parent 3ce858927b
commit b9373832eb

View file

@ -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
} }