diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2018-06-16 10:40:53 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2018-06-16 10:40:53 +0900 |
| commit | e11f547308af19c5ae54a906cec795e65f407b8c (patch) | |
| tree | 2fca485dcea95dfb724402d41009b2f155be5f32 /src | |
| parent | 2.42.0 (diff) | |
| download | misskey-e11f547308af19c5ae54a906cec795e65f407b8c.tar.gz misskey-e11f547308af19c5ae54a906cec795e65f407b8c.tar.bz2 misskey-e11f547308af19c5ae54a906cec795e65f407b8c.zip | |
#1715
Diffstat (limited to 'src')
| -rw-r--r-- | src/models/meta.ts | 6 | ||||
| -rw-r--r-- | src/remote/activitypub/models/person.ts | 9 | ||||
| -rw-r--r-- | src/server/api/endpoints/stats.ts | 24 | ||||
| -rw-r--r-- | src/server/api/private/signup.ts | 10 | ||||
| -rw-r--r-- | src/services/note/create.ts | 20 |
5 files changed, 48 insertions, 21 deletions
diff --git a/src/models/meta.ts b/src/models/meta.ts index 710bb23382..11b9b186ce 100644 --- a/src/models/meta.ts +++ b/src/models/meta.ts @@ -5,4 +5,10 @@ export default Meta; export type IMeta = { broadcasts: any[]; + stats: { + notesCount: number; + originalNotesCount: number; + usersCount: number; + originalUsersCount: number; + }; }; diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts index 96e73406b2..42ee5a27df 100644 --- a/src/remote/activitypub/models/person.ts +++ b/src/remote/activitypub/models/person.ts @@ -10,6 +10,7 @@ import Resolver from '../resolver'; import { resolveImage } from './image'; import { isCollectionOrOrderedCollection, IObject, IPerson } from '../type'; import { IDriveFile } from '../../../models/drive-file'; +import Meta from '../../../models/meta'; const log = debug('misskey:activitypub'); @@ -117,6 +118,14 @@ export async function createPerson(value: any, resolver?: Resolver): Promise<IUs throw e; } + //#region Increment users count + Meta.update({}, { + $inc: { + 'stats.usersCount': 1 + } + }, { upsert: true }); + //#endregion + //#region アイコンとヘッダー画像をフェッチ const [avatar, banner] = (await Promise.all<IDriveFile>([ person.icon, diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts index d1e17651f2..74ab6ba945 100644 --- a/src/server/api/endpoints/stats.ts +++ b/src/server/api/endpoints/stats.ts @@ -1,26 +1,10 @@ -import Note from '../../../models/note'; -import User from '../../../models/user'; +import Meta from '../../../models/meta'; /** * Get the misskey's statistics */ -module.exports = params => new Promise(async (res, rej) => { - const notesCount = await Note.count(); +module.exports = () => new Promise(async (res, rej) => { + const meta = await Meta.findOne(); - const usersCount = await User.count(); - - const originalNotesCount = await Note.count({ - '_user.host': null - }); - - const originalUsersCount = await User.count({ - host: null - }); - - res({ - notesCount, - usersCount, - originalNotesCount, - originalUsersCount - }); + res(meta.stats); }); diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index 14d4b8a3fc..fee899b374 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -5,6 +5,7 @@ import recaptcha = require('recaptcha-promise'); import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user'; import generateUserToken from '../common/generate-native-user-token'; import config from '../../../config'; +import Meta from '../../../models/meta'; recaptcha.init({ secret_key: config.recaptcha.secret_key @@ -93,6 +94,15 @@ export default async (ctx: Koa.Context) => { } }); + //#region Increment users count + Meta.update({}, { + $inc: { + 'stats.usersCount': 1, + 'stats.originalUsersCount': 1 + } + }, { upsert: true }); + //#endregion + // Response ctx.body = await pack(account); }; diff --git a/src/services/note/create.ts b/src/services/note/create.ts index f74d04ae62..b21bfa316e 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -18,6 +18,7 @@ import parse from '../../text/parse'; import { IApp } from '../../models/app'; import UserList from '../../models/user-list'; import resolveUser from '../../remote/resolve-user'; +import Meta from '../../models/meta'; type Reason = 'reply' | 'quote' | 'mention'; @@ -167,7 +168,24 @@ export default async (user: IUser, data: { res(note); - // Increment notes count + //#region Increment notes count + if (isLocalUser(user)) { + Meta.update({}, { + $inc: { + 'stats.notesCount': 1, + 'stats.originalNotesCount': 1 + } + }, { upsert: true }); + } else { + Meta.update({}, { + $inc: { + 'stats.notesCount': 1 + } + }, { upsert: true }); + } + //#endregion + + // Increment notes count (user) User.update({ _id: user._id }, { $inc: { notesCount: 1 |