tableIgnoredUsers.go (1888B)
1 package database 2 3 import ( 4 "time" 5 6 "github.com/sirupsen/logrus" 7 ) 8 9 type IgnoredUser struct { 10 UserID UserID 11 IgnoredUserID UserID 12 CreatedAt time.Time 13 User User 14 IgnoredUser User 15 } 16 17 func (d *DkfDB) DeleteOldIgnoredUsers() { 18 if err := d.db.Exec(`DELETE FROM ignored_users WHERE ignored_user_id IN 19 (SELECT iu.ignored_user_id FROM ignored_users iu INNER JOIN users u ON u.id = iu.ignored_user_id WHERE u.last_seen_at < date('now', '-60 Day'))`).Error; err != nil { 20 logrus.Error(err) 21 } 22 } 23 24 func (d *DkfDB) GetIgnoredUsers(userID UserID) (out []IgnoredUser, err error) { 25 err = d.db.Where("user_id = ?", userID).Preload("IgnoredUser").Find(&out).Error 26 return 27 } 28 29 func (d *DkfDB) GetIgnoredUsersUsernames(userID UserID) (out []Username, err error) { 30 err = d.db.Model(&IgnoredUser{}). 31 Joins("INNER JOIN users ON users.id = ignored_users.ignored_user_id"). 32 Where("ignored_users.user_id = ?", userID). 33 Pluck("users.username", &out). 34 Error 35 return 36 } 37 38 func (d *DkfDB) GetIgnoredUsersIDs(userID UserID) (out []UserID, err error) { 39 err = d.db.Model(&IgnoredUser{}). 40 Joins("INNER JOIN users ON users.id = ignored_users.ignored_user_id"). 41 Where("ignored_users.user_id = ?", userID). 42 Pluck("users.id", &out). 43 Error 44 return 45 } 46 47 // GetIgnoredByUsers get a list of people who ignore userID 48 func (d *DkfDB) GetIgnoredByUsers(userID UserID) (out []IgnoredUser, err error) { 49 err = d.db.Where("ignored_user_id = ?", userID).Find(&out).Error 50 return 51 } 52 53 func (d *DkfDB) IgnoreUser(userID, ignoredUserID UserID) { 54 ignore := IgnoredUser{UserID: userID, IgnoredUserID: ignoredUserID} 55 if err := d.db.Create(&ignore).Error; err != nil { 56 logrus.Error(err) 57 } 58 } 59 60 func (d *DkfDB) UnIgnoreUser(userID, ignoredUserID UserID) { 61 if err := d.db.Delete(IgnoredUser{}, "user_id = ? AND ignored_user_id = ?", userID, ignoredUserID).Error; err != nil { 62 logrus.Error(err) 63 } 64 }