jormungandr-bite/src/server/api/endpoints/stats.ts
2019-02-25 03:30:22 +09:00

58 lines
1.4 KiB
TypeScript

import define from '../define';
import driveChart from '../../../services/chart/drive';
import federationChart from '../../../services/chart/federation';
import fetchMeta from '../../../misc/fetch-meta';
export const meta = {
requireCredential: false,
desc: {
'en-US': 'Get the instance\'s statistics'
},
tags: ['meta'],
params: {
},
res: {
type: 'object',
properties: {
notesCount: {
type: 'number',
description: 'The count of all (local/remote) notes of this instance.',
},
originalNotesCount: {
type: 'number',
description: 'The count of all local notes of this instance.',
},
usersCount: {
type: 'number',
description: 'The count of all (local/remote) accounts of this instance.',
},
originalUsersCount: {
type: 'number',
description: 'The count of all local accounts of this instance.',
},
instances: {
type: 'number',
description: 'The count of federated instances.',
},
}
}
};
export default define(meta, async () => {
const instance = await fetchMeta();
const stats: any = instance.stats;
const driveStats = await driveChart.getChart('hour', 1);
stats.driveUsageLocal = driveStats.local.totalSize[0];
stats.driveUsageRemote = driveStats.remote.totalSize[0];
const federationStats = await federationChart.getChart('hour', 1);
stats.instances = federationStats.instance.total[0];
return stats;
});