From 64bfb8f329ce302c7821e5344ffd1b815a8bcaf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E5=91=A8=E9=83=A8=E8=90=BD?= <laozhoubuluo@gmail.com> Date: Fri, 1 Mar 2024 18:15:08 +0800 Subject: [PATCH] fix(backend): mastodon stats conflate all indexed users and statuses --- .../src/server/api/mastodon/endpoints/meta.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/server/api/mastodon/endpoints/meta.ts b/packages/backend/src/server/api/mastodon/endpoints/meta.ts index c458798d5f..fbad7d5ef4 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/meta.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/meta.ts @@ -1,13 +1,19 @@ import { Entity } from "megalodon"; import config from "@/config/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; +import { Users, Notes } from "@/models/index.js"; +import { IsNull } from "typeorm"; import { MAX_NOTE_TEXT_LENGTH, FILE_TYPE_BROWSERSAFE } from "@/const.js"; export async function getInstance( response: Entity.Instance, contact: Entity.Account, ) { - const meta = await fetchMeta(true); + const [meta, totalUsers, totalStatuses] = await Promise.all([ + fetchMeta(), + Users.count({ where: { host: IsNull() } }), + Notes.count({ where: { userHost: IsNull() } }), + ]); return { uri: response.uri, @@ -21,8 +27,8 @@ export async function getInstance( version: `3.0.0 (compatible; Firefish ${config.version})`, urls: response.urls, stats: { - user_count: response.stats.user_count, - status_count: response.stats.status_count, + user_count: totalUsers, + status_count: totalStatuses, domain_count: response.stats.domain_count, }, thumbnail: response.thumbnail || "/static-assets/transparent.png",