summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/stats.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-11-13 12:23:49 +0900
commit2795fe457909c687f668d020ef65d52abc3182fb (patch)
tree0a52e4e4d854333496fcc487560c93c3de5d5eb5 /packages/backend/src/server/api/endpoints/stats.ts
parentMerge branch 'develop' (diff)
parent12.96.0 (diff)
downloadmisskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.gz
misskey-2795fe457909c687f668d020ef65d52abc3182fb.tar.bz2
misskey-2795fe457909c687f668d020ef65d52abc3182fb.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/server/api/endpoints/stats.ts')
-rw-r--r--packages/backend/src/server/api/endpoints/stats.ts83
1 files changed, 83 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/stats.ts b/packages/backend/src/server/api/endpoints/stats.ts
new file mode 100644
index 0000000000..15c8001742
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/stats.ts
@@ -0,0 +1,83 @@
+import define from '../define';
+import { NoteReactions, Notes, Users } from '@/models/index';
+import { federationChart, driveChart } from '@/services/chart/index';
+
+export const meta = {
+ requireCredential: false as const,
+
+ tags: ['meta'],
+
+ params: {
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ notesCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ },
+ originalNotesCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ },
+ usersCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ },
+ originalUsersCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ },
+ instances: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ },
+ driveUsageLocal: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ driveUsageRemote: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
+};
+
+export default define(meta, async () => {
+ const [
+ notesCount,
+ originalNotesCount,
+ usersCount,
+ originalUsersCount,
+ reactionsCount,
+ //originalReactionsCount,
+ instances,
+ driveUsageLocal,
+ driveUsageRemote
+ ] = await Promise.all([
+ Notes.count({ cache: 3600000 }), // 1 hour
+ Notes.count({ where: { userHost: null }, cache: 3600000 }),
+ Users.count({ cache: 3600000 }),
+ Users.count({ where: { host: null }, cache: 3600000 }),
+ NoteReactions.count({ cache: 3600000 }), // 1 hour
+ //NoteReactions.count({ where: { userHost: null }, cache: 3600000 }),
+ federationChart.getChart('hour', 1, null).then(chart => chart.instance.total[0]),
+ driveChart.getChart('hour', 1, null).then(chart => chart.local.totalSize[0]),
+ driveChart.getChart('hour', 1, null).then(chart => chart.remote.totalSize[0]),
+ ]);
+
+ return {
+ notesCount,
+ originalNotesCount,
+ usersCount,
+ originalUsersCount,
+ reactionsCount,
+ //originalReactionsCount,
+ instances,
+ driveUsageLocal,
+ driveUsageRemote
+ };
+});