From 3742d569caa01bcd41e331dfc3aec31978802cd2 Mon Sep 17 00:00:00 2001 From: tippfehlr Date: Sat, 13 Apr 2024 01:12:44 +0200 Subject: [PATCH] feat(metrics): add metrics for {old,new} users and activeTemporaryRoles --- src/modules/db.ts | 51 +++++++++++++++++++++++++++++++++--------- src/modules/metrics.ts | 14 ++++++++++++ 2 files changed, 55 insertions(+), 10 deletions(-) diff --git a/src/modules/db.ts b/src/modules/db.ts index f3576b6..c8bfbd6 100644 --- a/src/modules/db.ts +++ b/src/modules/db.ts @@ -114,17 +114,26 @@ export async function addActivity(guildID: string, activityName: string) { .execute(); } -export async function getUserCount(): Promise { - const userCount = await db - .selectFrom('users') - .select(eb => eb.fn.countAll().as('count')) - .executeTakeFirstOrThrow(); - const userHashedCount = await db - .selectFrom('usersHashed') - .select(eb => eb.fn.countAll().as('count')) - .executeTakeFirstOrThrow(); +export async function getOldUserCount(): Promise { + return ( + await db + .selectFrom('usersHashed') + .select(eb => eb.fn.countAll().as('count')) + .executeTakeFirstOrThrow() + ).count as number; +} - return (userCount.count as number) + (userHashedCount.count as number); +export async function getNewUserCount(): Promise { + return ( + await db + .selectFrom('users') + .select(eb => eb.fn.countAll().as('count')) + .executeTakeFirstOrThrow() + ).count as number; +} + +export async function getUserCount(): Promise { + return (await getOldUserCount()) + (await getNewUserCount()); } export async function getActivityRoleCount(): Promise { @@ -168,3 +177,25 @@ export async function getPermRoleCount(): Promise { export async function getRolesCount(): Promise { return (await getActivityRoleCount()) + (await getStatusRoleCount()); } + +export async function getOldActiveTemporaryRolesCount(): Promise { + return ( + await db + .selectFrom('activeTemporaryRolesHashed') + .select(eb => eb.fn.countAll().as('count')) + .executeTakeFirstOrThrow() + ).count as number; +} + +export async function getNewActiveTemporaryRolesCount(): Promise { + return ( + await db + .selectFrom('activeTemporaryRoles') + .select(eb => eb.fn.countAll().as('count')) + .executeTakeFirstOrThrow() + ).count as number; +} + +export async function getActiveTemporaryRolesCount(): Promise { + return (await getOldActiveTemporaryRolesCount()) + (await getNewActiveTemporaryRolesCount()); +} diff --git a/src/modules/metrics.ts b/src/modules/metrics.ts index 8d74b10..c15f284 100644 --- a/src/modules/metrics.ts +++ b/src/modules/metrics.ts @@ -12,6 +12,11 @@ import { getTempRoleCount, getPermRoleCount, getStatusRoleCount, + getOldUserCount, + getNewUserCount, + getOldActiveTemporaryRolesCount, + getNewActiveTemporaryRolesCount, + getActiveTemporaryRolesCount, } from './db'; export let client: InfluxDB; @@ -42,8 +47,17 @@ export async function configureInfluxDB() { writeApi.writePoint( new Point('users') .intField('users_cache_total', discordClient.users.cache.size) + .intField('old_users_count', await getOldUserCount()) + .intField('new_users_count', await getNewUserCount()) .intField('users_db_total', await getUserCount()), ); + writeApi.writePoint( + new Point('activeTemporaryRoles') + .intField('old', await getOldActiveTemporaryRolesCount()) + .intField('new', await getNewActiveTemporaryRolesCount()) + .intField('total', await getActiveTemporaryRolesCount()), + ); + const ram = process.memoryUsage(); writeApi.writePoint( new Point('memory')