✨ 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"
|
"gorm.io/datatypes"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
RealmPopularityMemberFactor = 5
|
||||||
|
RealmPopularityPostFactor = 10
|
||||||
|
RealmPopularityChatFactor = 2
|
||||||
|
)
|
||||||
|
|
||||||
type Realm struct {
|
type Realm struct {
|
||||||
BaseModel
|
BaseModel
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user