Auto handle increment of popularity on realm member changes

This commit is contained in:
LittleSheep 2025-02-20 21:58:07 +08:00
parent bac655c1cf
commit 2f541f2346
2 changed files with 22 additions and 1 deletions

View File

@ -6,6 +6,12 @@ import (
"gorm.io/datatypes" "gorm.io/datatypes"
) )
const (
RealmPopularityMemberFactor = 5
RealmPopularityPostFactor = 10
RealmPopularityChatFactor = 2
)
type Realm struct { type Realm struct {
BaseModel BaseModel

View File

@ -141,7 +141,14 @@ func AddRealmMember(user models.Account, affected models.Account, target models.
RealmID: target.ID, RealmID: target.ID,
AccountID: affected.ID, AccountID: affected.ID,
} }
err := database.C.Save(&member).Error 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 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) { func EditRealm(realm models.Realm) (models.Realm, error) {