✨ Auto handle increment of popularity on realm member changes
This commit is contained in:
parent
bac655c1cf
commit
2f541f2346
@ -6,6 +6,12 @@ import (
|
||||
"gorm.io/datatypes"
|
||||
)
|
||||
|
||||
const (
|
||||
RealmPopularityMemberFactor = 5
|
||||
RealmPopularityPostFactor = 10
|
||||
RealmPopularityChatFactor = 2
|
||||
)
|
||||
|
||||
type Realm struct {
|
||||
BaseModel
|
||||
|
||||
|
@ -141,7 +141,14 @@ func AddRealmMember(user models.Account, affected models.Account, target models.
|
||||
RealmID: target.ID,
|
||||
AccountID: affected.ID,
|
||||
}
|
||||
|
||||
err := database.C.Save(&member).Error
|
||||
if err == nil {
|
||||
database.C.Model(&models.Realm{}).
|
||||
Where("id = ?", target.ID).
|
||||
Update("popularity", gorm.Expr("popularity + ?", models.RealmPopularityMemberFactor))
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
@ -154,7 +161,15 @@ func RemoveRealmMember(user models.Account, affected models.RealmMember, target
|
||||
}
|
||||
}
|
||||
|
||||
return database.C.Delete(&affected).Error
|
||||
if err := database.C.Delete(&affected).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
database.C.Model(&models.Realm{}).
|
||||
Where("id = ?", target.ID).
|
||||
Update("popularity", gorm.Expr("popularity - ?", models.RealmPopularityMemberFactor))
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func EditRealm(realm models.Realm) (models.Realm, error) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user