From 32b2b43c06621e384c0bd1610ef0bb9f23399be7 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 12 Jan 2018 11:47:45 +0100 Subject: Update follower/following counts --- server/models/activitypub/actor-follow.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'server/models/activitypub/actor-follow.ts') diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index de5bb6f74..435d22db5 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -2,6 +2,7 @@ import * as Bluebird from 'bluebird' import { values } from 'lodash' import * as Sequelize from 'sequelize' import { + AfterCreate, AfterDestroy, AfterUpdate, AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, IsInt, Max, Model, Table, UpdatedAt } from 'sequelize-typescript' @@ -79,6 +80,25 @@ export class ActorFollowModel extends Model { }) ActorFollowing: ActorModel + @AfterCreate + @AfterUpdate + static incrementFollowerAndFollowingCount (instance: ActorFollowModel) { + if (instance.state !== 'accepted') return + + return Promise.all([ + ActorModel.incrementFollows(instance.actorId, 'followingCount', 1), + ActorModel.incrementFollows(instance.targetActorId, 'followersCount', 1) + ]) + } + + @AfterDestroy + static decrementFollowerAndFollowingCount (instance: ActorFollowModel) { + return Promise.all([ + ActorModel.incrementFollows(instance.actorId, 'followingCount',-1), + ActorModel.incrementFollows(instance.targetActorId, 'followersCount', -1) + ]) + } + // Remove actor follows with a score of 0 (too many requests where they were unreachable) static async removeBadActorFollows () { const actorFollows = await ActorFollowModel.listBadActorFollows() -- cgit v1.2.3