Compare commits

...

5 Commits

Author SHA1 Message Date
Florian Metz
e9e6639492 chore: release v0.0.13 2024-09-15 03:09:23 +02:00
Florian Metz
3258179040 chore: release v0.0.24 2024-09-15 03:09:13 +02:00
Florian Metz
086d476af2 chore: update hash 2024-09-15 03:09:04 +02:00
Florian Metz
146bf9e270 chore: release v0.0.23 2024-09-15 02:48:56 +02:00
Florian Metz
a02f25ba29 chore: test 2024-09-15 02:48:41 +02:00
5 changed files with 15 additions and 16 deletions

View File

@@ -39,7 +39,7 @@ jobs:
- name: Build and Push website
uses: docker/build-push-action@v6
if: github.ref_type == 'branch'
if: matrix.target == 'website'
with:
push: true
platforms: linux/amd64,linux/arm64
@@ -50,14 +50,14 @@ jobs:
tags: ghcr.io/premid/${{ matrix.target }}:beta-${{ github.sha }}-${{ github.run_number }}
- name: Get package.json version
if: matrix.target != 'website'
id: get_version
run: echo ::set-output name=version::$(echo "${GITHUB_REF##*/}" | sed -E 's/^.+-v([0-9]+\.[0-9]+\.[0-9]+)$/\1/')
run: echo ::set-output name=version::$(node -p "require('./apps/${{ matrix.target }}/package.json').version")
shell: bash
if: startsWith(github.ref, 'refs/tags/')
- name: Build and push other images
uses: docker/build-push-action@v6
if: startsWith(github.ref, 'refs/tags/')
if: matrix.target != 'website' && startsWith(github.ref, 'refs/tags/')
with:
push: true
platforms: linux/amd64,linux/arm64

View File

@@ -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",

View File

@@ -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

View File

@@ -1,7 +1,7 @@
{
"name": "@premid/api-worker",
"type": "module",
"version": "0.0.12",
"version": "0.0.13",
"private": true,
"description": "PreMiD's api",
"license": "MPL-2.0",

View File

@@ -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,8 +35,8 @@ 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, 300);