Просмотр исходного кода

Prevent setting last_read_ts to lower value

Tulir Asokan 3 лет назад
Родитель
Сommit
4bdb130d13
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      database/userportal.go

+ 1 - 1
database/userportal.go

@@ -40,7 +40,7 @@ func (user *User) SetLastReadTS(portal PortalKey, ts time.Time) {
 	if user.db.dialect == "postgres" {
 		_, err = user.db.Exec(`
 			INSERT INTO user_portal (user_mxid, portal_jid, portal_receiver, last_read_ts) VALUES ($1, $2, $3, $4)
-			ON CONFLICT (user_mxid, portal_jid, portal_receiver) DO UPDATE SET last_read_ts=$4
+			ON CONFLICT (user_mxid, portal_jid, portal_receiver) DO UPDATE SET last_read_ts=$4 WHERE user_portal.last_read_ts<$4
 		`, user.MXID, portal.JID, portal.Receiver, ts.Unix())
 	} else if user.db.dialect == "sqlite3" {
 		_, err = user.db.Exec(