diff --git a/pkg/authkit/models/realms.go b/pkg/authkit/models/realms.go index 3b2849c..b0d58b6 100644 --- a/pkg/authkit/models/realms.go +++ b/pkg/authkit/models/realms.go @@ -6,6 +6,12 @@ import ( "gorm.io/datatypes" ) +const ( + RealmPopularityMemberFactor = 5 + RealmPopularityPostFactor = 10 + RealmPopularityChatFactor = 2 +) + type Realm struct { BaseModel diff --git a/pkg/internal/services/realms.go b/pkg/internal/services/realms.go index 256d97b..86a664b 100644 --- a/pkg/internal/services/realms.go +++ b/pkg/internal/services/realms.go @@ -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) {