mirror of
https://github.com/PreMiD/PreMiD.git
synced 2026-04-06 04:41:58 +02:00
Compare commits
8 Commits
api-master
...
api-master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3258179040 | ||
|
|
086d476af2 | ||
|
|
146bf9e270 | ||
|
|
a02f25ba29 | ||
|
|
416b65f0d4 | ||
|
|
f8e9fc832d | ||
|
|
86b0f07216 | ||
|
|
9eb5c03877 |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@premid/api-master",
|
||||
"type": "module",
|
||||
"version": "0.0.22",
|
||||
"version": "0.0.24",
|
||||
"private": true,
|
||||
"description": "PreMiD's api master",
|
||||
"license": "MPL-2.0",
|
||||
|
||||
@@ -6,7 +6,7 @@ const previousServices = new Set<string>();
|
||||
|
||||
//* Function to update the gauge with per-service counts
|
||||
export async function updateActivePresenceGauge() {
|
||||
const pattern = "pmd-api.heartbeatUpdates.*.*";
|
||||
const pattern = "pmd-api.heartbeatUpdates.*";
|
||||
let cursor: string = "0";
|
||||
const serviceCounts = new Map<string, number>();
|
||||
|
||||
@@ -14,9 +14,8 @@ export async function updateActivePresenceGauge() {
|
||||
const [newCursor, keys] = await redis.scan(cursor, "MATCH", pattern, "COUNT", 1000); //* Use SCAN with COUNT for memory efficiency
|
||||
cursor = newCursor;
|
||||
for (const key of keys) {
|
||||
const parts = key.split(".");
|
||||
const service = parts[parts.length - 1]!;
|
||||
const hash = await redis.hgetall(key);
|
||||
const service = hash.service;
|
||||
const version = hash.version; //* Get version from hash
|
||||
serviceCounts.set(`${service}:${version}`, (serviceCounts.get(`${service}:${version}`) || 0) + 1);
|
||||
}
|
||||
@@ -24,15 +23,15 @@ export async function updateActivePresenceGauge() {
|
||||
|
||||
// Set current counts and remove from previousServices
|
||||
serviceCounts.forEach((count, serviceVersion) => {
|
||||
const [service, version] = serviceVersion.split(":");
|
||||
activePresenceGauge.record(count, { service, version }); //* Include version in labels
|
||||
const [presence_name, version] = serviceVersion.split(":");
|
||||
activePresenceGauge.record(count, { presence_name, version });
|
||||
previousServices.delete(serviceVersion);
|
||||
});
|
||||
|
||||
// Set gauge to 0 for services that are no longer active
|
||||
previousServices.forEach((serviceVersion) => {
|
||||
const [service, version] = serviceVersion.split(":");
|
||||
activePresenceGauge.record(0, { service, version });
|
||||
const [presence_name, version] = serviceVersion.split(":");
|
||||
activePresenceGauge.record(0, { presence_name, version });
|
||||
});
|
||||
|
||||
// Update the set of previous services
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@premid/api-worker",
|
||||
"type": "module",
|
||||
"version": "0.0.10",
|
||||
"version": "0.0.12",
|
||||
"private": true,
|
||||
"description": "PreMiD's api",
|
||||
"license": "MPL-2.0",
|
||||
|
||||
@@ -27,7 +27,7 @@ const mutation: MutationResolvers["heartbeat"] = async (_parent, input) => {
|
||||
throw new Error(out.summary);
|
||||
|
||||
// * Use Redis Hash with 'service' in the key to store heartbeat data
|
||||
const redisKey = `pmd-api.heartbeatUpdates.${out.identifier}.${out.presence.service}`;
|
||||
const redisKey = `pmd-api.heartbeatUpdates.${out.identifier}`;
|
||||
await redis.hset(redisKey, {
|
||||
service: out.presence.service,
|
||||
version: out.presence.version,
|
||||
@@ -35,12 +35,10 @@ const mutation: MutationResolvers["heartbeat"] = async (_parent, input) => {
|
||||
since: out.presence.since.toString(),
|
||||
extension_version: out.extension.version,
|
||||
extension_language: out.extension.language,
|
||||
extension_connected_app: out.extension.connected?.app?.toString() || "",
|
||||
extension_connected_discord: out.extension.connected?.discord?.toString() || "",
|
||||
extension_connected_app: out.extension.connected?.app?.toString(),
|
||||
extension_connected_discord: out.extension.connected?.discord?.toString(),
|
||||
});
|
||||
await redis.expire(redisKey, 5);
|
||||
|
||||
// * End the custom metric or adjust as needed
|
||||
await redis.expire(redisKey, 300);
|
||||
|
||||
return {
|
||||
__typename: "HeartbeatResult",
|
||||
|
||||
Reference in New Issue
Block a user