tableUserLastKnownMessages.go (1141B)
1 package database 2 3 import ( 4 "github.com/sirupsen/logrus" 5 "time" 6 ) 7 8 // UserLastKnownMessage ... 9 type UserLastKnownMessage struct { 10 UserID UserID `gorm:"primary_key"` 11 RoomID RoomID `gorm:"primary_key"` 12 LastKnownTimestamp time.Time 13 CreatedAt time.Time 14 } 15 16 // GetUserLastKnownMessage ... 17 func (d *DkfDB) GetUserLastKnownMessage(userID UserID, roomID RoomID) (out UserLastKnownMessage, err error) { 18 err = d.db.First(&out, "user_id = ? AND room_id = ?", userID, roomID).Error 19 return 20 } 21 22 // CreateUserLastKnownMessage ... 23 func (d *DkfDB) CreateUserLastKnownMessage(userID UserID, roomID RoomID, lastKnownTimestamp time.Time) error { 24 out := UserLastKnownMessage{UserID: userID, RoomID: roomID} 25 if err := d.db.FirstOrCreate(&out, "user_id = ? AND room_id = ?", userID, roomID).Error; err != nil { 26 return err 27 } 28 out.LastKnownTimestamp = lastKnownTimestamp 29 return d.db.Save(&out).Error 30 } 31 32 // DeleteOldUserLastKnownMessages ... 33 func (d *DkfDB) DeleteOldUserLastKnownMessages() { 34 if err := d.db.Delete(UserLastKnownMessage{}, "created_at < date('now', '-1 Day')").Error; err != nil { 35 logrus.Error(err) 36 } 37 }