fix(api): correct online count in /v1/me/workspace
Some checks failed
CI / Lint (push) Has been cancelled
CI / Typecheck (push) Has been cancelled
CI / Broker tests (Postgres) (push) Has been cancelled
CI / Docker build (linux/amd64) (push) Has been cancelled

count distinct members with disconnectedAt is null instead of
all presence rows — a member can have many sessions, plus stale
rows from prior runs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Alejandro Gutiérrez
2026-05-02 23:53:12 +01:00
parent c7ce92f35b
commit 075df6db08

View File

@@ -435,12 +435,16 @@ export const v1Router = new Hono<Env>()
const onlineCounts = await db const onlineCounts = await db
.select({ .select({
meshId: meshMember.meshId, meshId: meshMember.meshId,
online: count(presence.memberId), online: sql<number>`count(distinct ${presence.memberId})`,
}) })
.from(presence) .from(presence)
.innerJoin(meshMember, eq(presence.memberId, meshMember.id)) .innerJoin(meshMember, eq(presence.memberId, meshMember.id))
.where( .where(
and(inArray(meshMember.meshId, meshIds), isNull(meshMember.revokedAt)), and(
inArray(meshMember.meshId, meshIds),
isNull(meshMember.revokedAt),
isNull(presence.disconnectedAt),
),
) )
.groupBy(meshMember.meshId); .groupBy(meshMember.meshId);