server: add webhook stat to nodeinfo

This will show the number of active web hooks in the node info.
This is desired to be able to gauge webhook usage in Foundkey.

Changelog: Added
This commit is contained in:
Johann150 2023-06-05 22:23:59 +02:00
parent f181a8805d
commit cc0915775b
Signed by untrusted user: Johann150
GPG key ID: 9EE6577A2A06F8F1

View file

@ -2,7 +2,7 @@ import Router from '@koa/router';
import { IsNull, MoreThan } from 'typeorm'; import { IsNull, MoreThan } from 'typeorm';
import config from '@/config/index.js'; import config from '@/config/index.js';
import { fetchMeta } from '@/misc/fetch-meta.js'; import { fetchMeta } from '@/misc/fetch-meta.js';
import { Users, Notes } from '@/models/index.js'; import { Users, Notes, Webhooks } from '@/models/index.js';
import { MONTH, DAY } from '@/const.js'; import { MONTH, DAY } from '@/const.js';
const router = new Router(); const router = new Router();
@ -52,12 +52,14 @@ const nodeinfo2 = async (): Promise<NodeInfo2Base> => {
activeHalfyear, activeHalfyear,
activeMonth, activeMonth,
localPosts, localPosts,
activeWebhooks,
] = await Promise.all([ ] = await Promise.all([
fetchMeta(true), fetchMeta(true),
Users.count({ where: { host: IsNull() } }), Users.count({ where: { host: IsNull() } }),
Users.count({ where: { host: IsNull(), lastActiveDate: MoreThan(new Date(now - 180 * DAY)) } }), Users.count({ where: { host: IsNull(), lastActiveDate: MoreThan(new Date(now - 180 * DAY)) } }),
Users.count({ where: { host: IsNull(), lastActiveDate: MoreThan(new Date(now - MONTH)) } }), Users.count({ where: { host: IsNull(), lastActiveDate: MoreThan(new Date(now - MONTH)) } }),
Notes.count({ where: { userHost: IsNull() } }), Notes.count({ where: { userHost: IsNull() } }),
Webhooks.countBy({ active: true }),
]); ]);
const proxyAccount = meta.proxyAccountId ? await Users.pack(meta.proxyAccountId).catch(() => null) : null; const proxyAccount = meta.proxyAccountId ? await Users.pack(meta.proxyAccountId).catch(() => null) : null;
@ -100,6 +102,7 @@ const nodeinfo2 = async (): Promise<NodeInfo2Base> => {
enableEmail: meta.enableEmail, enableEmail: meta.enableEmail,
proxyAccountName: proxyAccount?.username ?? null, proxyAccountName: proxyAccount?.username ?? null,
themeColor: meta.themeColor || '#86b300', themeColor: meta.themeColor || '#86b300',
activeWebhooks,
}, },
}; };
}; };