This commit is contained in:
syuilo
2018-10-21 09:20:11 +09:00
parent aa50d0ee11
commit 969b6dbcad
14 changed files with 584 additions and 420 deletions

View File

@ -1,33 +0,0 @@
import $ from 'cafy';
import getParams from '../get-params';
import { coreChart } from '../../../services/stats';
export const meta = {
desc: {
'ja-JP': 'インスタンスの統計を取得します。'
},
params: {
limit: $.num.optional.range(1, 100).note({
default: 30,
desc: {
'ja-JP': '最大数'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) throw psErr;
const [statsPerDay, statsPerHour] = await Promise.all([
coreChart.getStats('day', ps.limit),
coreChart.getStats('hour', ps.limit)
]);
res({
perDay: statsPerDay,
perHour: statsPerHour
});
});

View File

@ -0,0 +1,33 @@
import $ from 'cafy';
import getParams from '../../get-params';
import { driveChart } from '../../../../services/stats';
export const meta = {
desc: {
'ja-JP': 'ドライブの統計を取得します。'
},
params: {
span: $.str.or(['day', 'hour']).note({
desc: {
'ja-JP': '集計のスパン'
}
}),
limit: $.num.optional.range(1, 100).note({
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) throw psErr;
const stats = await driveChart.getStats(ps.span as any, ps.limit);
res(stats);
});

View File

@ -0,0 +1,33 @@
import $ from 'cafy';
import getParams from '../../get-params';
import { networkChart } from '../../../../services/stats';
export const meta = {
desc: {
'ja-JP': 'ネットワークの統計を取得します。'
},
params: {
span: $.str.or(['day', 'hour']).note({
desc: {
'ja-JP': '集計のスパン'
}
}),
limit: $.num.optional.range(1, 100).note({
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) throw psErr;
const stats = await networkChart.getStats(ps.span as any, ps.limit);
res(stats);
});

View File

@ -0,0 +1,33 @@
import $ from 'cafy';
import getParams from '../../get-params';
import { notesChart } from '../../../../services/stats';
export const meta = {
desc: {
'ja-JP': '投稿の統計を取得します。'
},
params: {
span: $.str.or(['day', 'hour']).note({
desc: {
'ja-JP': '集計のスパン'
}
}),
limit: $.num.optional.range(1, 100).note({
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) throw psErr;
const stats = await notesChart.getStats(ps.span as any, ps.limit);
res(stats);
});

View File

@ -0,0 +1,33 @@
import $ from 'cafy';
import getParams from '../../get-params';
import { usersChart } from '../../../../services/stats';
export const meta = {
desc: {
'ja-JP': 'ユーザーの統計を取得します。'
},
params: {
span: $.str.or(['day', 'hour']).note({
desc: {
'ja-JP': '集計のスパン'
}
}),
limit: $.num.optional.range(1, 100).note({
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
}
}),
}
};
export default (params: any) => new Promise(async (res, rej) => {
const [ps, psErr] = getParams(meta, params);
if (psErr) throw psErr;
const stats = await usersChart.getStats(ps.span as any, ps.limit);
res(stats);
});

View File

@ -7,7 +7,7 @@ import generateUserToken from '../common/generate-native-user-token';
import config from '../../../config';
import Meta from '../../../models/meta';
import RegistrationTicket from '../../../models/registration-tickets';
import { coreChart } from '../../../services/stats';
import { usersChart } from '../../../services/stats';
if (config.recaptcha) {
recaptcha.init({
@ -130,7 +130,7 @@ export default async (ctx: Koa.Context) => {
}, { upsert: true });
//#endregion
coreChart.updateUserStats(account, true);
usersChart.update(account, true);
const res = await pack(account, account, {
detail: true,