From 336912e4422394499cb47ea1b8d42cf2020ec93f Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 7 Feb 2019 15:00:44 +0900 Subject: Improve instance stats --- src/services/following/create.ts | 28 ++++++++++++++++++++++++++ src/services/note/create.ts | 4 ++-- src/services/register-instance.ts | 22 -------------------- src/services/register-or-fetch-instance-doc.ts | 22 ++++++++++++++++++++ 4 files changed, 52 insertions(+), 24 deletions(-) delete mode 100644 src/services/register-instance.ts create mode 100644 src/services/register-or-fetch-instance-doc.ts (limited to 'src/services') diff --git a/src/services/following/create.ts b/src/services/following/create.ts index 936655d7d1..4df271a977 100644 --- a/src/services/following/create.ts +++ b/src/services/following/create.ts @@ -10,6 +10,8 @@ import renderReject from '../../remote/activitypub/renderer/reject'; import { deliver } from '../../queue'; import createFollowRequest from './requests/create'; import perUserFollowingChart from '../../chart/per-user-following'; +import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc'; +import Instance from '../../models/instance'; export default async function(follower: IUser, followee: IUser, requestId?: string) { // check blocking @@ -97,6 +99,32 @@ export default async function(follower: IUser, followee: IUser, requestId?: stri }); //#endregion + //#region Update instance stats + if (isRemoteUser(follower) && isLocalUser(followee)) { + registerOrFetchInstanceDoc(follower.host).then(i => { + Instance.update({ _id: i._id }, { + $inc: { + followingCount: 1 + } + }); + + // TODO + //perInstanceChart.newFollowing(); + }); + } else if (isLocalUser(follower) && isRemoteUser(followee)) { + registerOrFetchInstanceDoc(followee.host).then(i => { + Instance.update({ _id: i._id }, { + $inc: { + followersCount: 1 + } + }); + + // TODO + //perInstanceChart.newFollower(); + }); + } + //#endregion + perUserFollowingChart.update(follower, followee, true); // Publish follow event diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 6afdcbbfbd..7b5975bace 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -27,7 +27,7 @@ import activeUsersChart from '../../chart/active-users'; import { erase, concat } from '../../prelude/array'; import insertNoteUnread from './unread'; -import registerInstance from '../register-instance'; +import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc'; import Instance from '../../models/instance'; import extractMentions from '../../misc/extract-mentions'; import extractEmojis from '../../misc/extract-emojis'; @@ -222,7 +222,7 @@ export default async (user: IUser, data: Option, silent = false) => new Promise< // Register host if (isRemoteUser(user)) { - registerInstance(user.host).then(i => { + registerOrFetchInstanceDoc(user.host).then(i => { Instance.update({ _id: i._id }, { $inc: { notesCount: 1 diff --git a/src/services/register-instance.ts b/src/services/register-instance.ts deleted file mode 100644 index 6576a9ed06..0000000000 --- a/src/services/register-instance.ts +++ /dev/null @@ -1,22 +0,0 @@ -import Instance, { IInstance } from '../models/instance'; -import federationChart from '../chart/federation'; - -export default async function(host: string): Promise { - if (host == null) return null; - - const index = await Instance.findOne({ host }); - - if (index == null) { - const i = await Instance.insert({ - host, - caughtAt: new Date(), - system: null // TODO - }); - - federationChart.update(true); - - return i; - } else { - return index; - } -} diff --git a/src/services/register-or-fetch-instance-doc.ts b/src/services/register-or-fetch-instance-doc.ts new file mode 100644 index 0000000000..3b338b48af --- /dev/null +++ b/src/services/register-or-fetch-instance-doc.ts @@ -0,0 +1,22 @@ +import Instance, { IInstance } from '../models/instance'; +import federationChart from '../chart/federation'; + +export async function registerOrFetchInstanceDoc(host: string): Promise { + if (host == null) return null; + + const index = await Instance.findOne({ host }); + + if (index == null) { + const i = await Instance.insert({ + host, + caughtAt: new Date(), + system: null // TODO + }); + + federationChart.update(true); + + return i; + } else { + return index; + } +} -- cgit v1.2.3-freya