X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Factivitypub%2Factor-follow.ts;h=a32f5f4981fcb3f4aa6830be1065504a4a20cfa0;hb=ba75d268596bc7b289bacf1cc4cb53493d6ad444;hp=de5bb6f7440633c0d924d300ed41dc6d4070be6f;hpb=6502c3d43e512e968ad49f5a3bc9abc302471e18;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/activitypub/actor-follow.ts b/server/models/activitypub/actor-follow.ts index de5bb6f74..a32f5f498 100644 --- a/server/models/activitypub/actor-follow.ts +++ b/server/models/activitypub/actor-follow.ts @@ -2,8 +2,8 @@ import * as Bluebird from 'bluebird' import { values } from 'lodash' import * as Sequelize from 'sequelize' import { - AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, IsInt, Max, Model, Table, - UpdatedAt + AfterCreate, AfterDestroy, AfterUpdate, AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, IsInt, Max, Model, + Table, UpdatedAt } from 'sequelize-typescript' import { FollowState } from '../../../shared/models/actors' import { AccountFollow } from '../../../shared/models/actors/follow.model' @@ -79,6 +79,25 @@ export class ActorFollowModel extends Model { }) ActorFollowing: ActorModel + @AfterCreate + @AfterUpdate + static incrementFollowerAndFollowingCount (instance: ActorFollowModel) { + if (instance.state !== 'accepted') return undefined + + 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() @@ -356,7 +375,8 @@ export class ActorFollowModel extends Model { score: { [Sequelize.Op.lte]: 0 } - } + }, + logging: false } return ActorFollowModel.findAll(query)